求教面向大规模连接的高并发网络模型
服务端在linux平台下,设计需要具备1w级别的最大连接处理能力。以前没有做过这样的东西,在网上搜的结果都是说epoll+线程池,epoll和线程池这两个我都知道,但结合起来自己设计了一个感觉有很大的问题,我的思路是主线程负责用epoll来处理客户端的请求事件,接收消息头后发给线程池用对应的函数进行处理,如果需要发回数据给客户端,处理函数将会把数据交给专门负责发送的另一个线程池进行发送,对于任何一个链接都保证每次发送都是串行的,不会交错以防止tcp流上的数据被打乱。但对于接收数据我就很无奈了,主线程负责接收消息头,剩余的内容由具体的处理函数接收的话,不加锁,可能会使得同一个客户端连续发来的几批数据的读取出现紊乱,比如a线程应该先读,之后b线程度,但由于a的处理稍慢,导致b抢先读取而发生错误。但加锁之后的效率就堪忧了,很多情况下简直就像是单线程。。。。。但是如果主线程直接读完整条消息再往后发,一遇到网络拥塞,没法很快读完整条消息,而主线程又只有一个,处理流程也就被阻塞了,网络情况好的时候还好,一旦某些客户端通信不畅就会对系统照成交大的影响。将主线程也做成多线程的模式的话,感觉不太好处理,如果非得这样倒也是可以做。哎,不管咋样,感觉这个模型实在是稀烂,想请教下现在这样的需求一般是怎么做的啊