java - Web服务器套接字编程

标签 java sockets webserver application-server

当只有一个进程可以监听和接受给定的 IP 地址和端口组合时,Web 服务器如何扩展以监听数百万个传入请求? 这个问题与找出用于扩展的套接字编程的概要有关,因此我不是在寻找硬件扩展解决方案的负载平衡,也不是在寻找网络套接字实现,而是基本的低级套接字编程。

如果我必须编写一个监听传入 http 请求的 Web 服务器,那么监听传入请求的线程的设计轮廓应该是什么,以便能够扩展到数百万个传入请求?

最佳答案

我为自己编写了一个小型聊天服务器(基本上做同样的事情)。

我的设计是第一个接受连接的线程(基本上是一个 while 循环,在 ServerSocket 上迭代 accept() > 对象实例)。该线程正在监听连接。

对于 accept() 返回的每个连接,我启动了一个单独的线程来处理该连接并读取该连接。所有这些线程引用都存储在同步的 List 中以供进一步处理,例如稍后关闭连接等。

关于java - Web服务器套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908057/

相关文章:

Java = Return Object list/array vs. Result-Object(与方法参数相同)

java - 接受字符串而不是整数或 double 是否安全且更好?

iphone - 如何手动设置连接超时?

c++ - 没有 TTY 的 Exelp 调用 bash

java - ObjectOutputStream 不发送数据(服务器卡在 socket.accept() 处)

ruby - 如何使用 ruby​​ 将大文件从客户端传输到服务器?

mysql - Web 服务器如何与数据库通信?

c++ - 试图将 Mongoose 编译成 C++ 树莓派项目

java - java中的旋转字符串

java - 使用 JDBC Statement 或PreparedStatement 执行一组查询