问个用epoll进行网络服务器前端开发的基本问题

这个服务器是一个中转前端,前端有很多连接,大概同时有1000左右。服务器的任务是接到这些数据,传给后台服务器处理然后再把结果给前端。


如果说前端每来一个连接都给一个线程,那当然无法可说,大不了跟后台服务器也保持几百上千个连接。但是这样的网络模型明显效率不高。


如果采用队列+worker+线程池的方式我有个基本问题不知道怎么解决。比如前端每个客户端传来的数据不一定每次都能接完,可能要接几次,那么这几次怎么串联起来呢?是用一个map结构,以连接套接字为key么?

而当收到后台回应的时候,又怎样辨别该回给哪个客户端呢?如果是每个连接一个线程那么这个线程一直或者自然知道该回给哪个客户端连接。

抱歉我思维有点混乱,毕竟没做过,就是想问问一般这种场景的网络模型和解决方案是怎样的

作者: Aniao   发布时间: 2011-01-21

每个客户端一般来说IP地址和端口号是不同的,只需要在映射表中找到服务端需要回答的客户端,直接转发即可,就如同一个透明管道一般,分发服务器是根据负载进行分发,而非根据语义分发,所以无需理解客户端的意图

作者: hawk198   发布时间: 2011-01-22