当只有一个进程可以监听和接受给定的 IP 地址和端口组合时,Web 服务器如何扩展以监听数百万个传入请求? 这个问题与找出用于扩展的套接字编程的概要有关,因此我不是在寻找硬件扩展解决方案的负载平衡,也不是在寻找网络套接字实现,而是基本的低级套接字编程。
如果我必须编写一个监听传入 http 请求的 Web 服务器,那么监听传入请求的线程的设计轮廓应该是什么,以便能够扩展到数百万个传入请求?
最佳答案
我为自己编写了一个小型聊天服务器(基本上做同样的事情)。
我的设计是第一个接受连接的线程(基本上是一个 while
循环,在 ServerSocket
上迭代 accept()
> 对象实例)。该线程正在监听
连接。
对于 accept()
返回的每个连接,我启动了一个单独的线程来处理该连接并读取
该连接。所有这些线程引用都存储在同步的 List
中以供进一步处理,例如稍后关闭连接等。
关于java - Web服务器套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908057/