one loop per thread + 线程池:one loop per thread有一个专门接收客户端连接的Reactor,然后通过某种CPU调度算法将客户端连接挂到其他的Reactor上,然后这个连接的所有操作都在那个Reactor所绑定的线程中完成,多个连接可能会被分配到多个线程中来充分利用CPU的多核资源。然后在one loop per thread基础上使用线程池进行处理数据或者业务。
单个Reactor + 线程池:用单个Reactor接收连接和把连接上的数据交给线程池处理。
在服务器突然接收到大量客户端连接发来的大量数据时,如果只是单个Reactor+线程池模型的情况下,可能会导致单个Reactor的epoll到达瓶颈,这种情况使用one loop per thread + 线程池模型的多个Reactor可以将大量客户端连接发来的大量数据分担到不同的Reactor中,可以非常有效处理这种的情况。
文章讨论了在处理大量客户端连接和数据时,如何利用oneloopperthread结合线程池的策略。单个Reactor可能在高并发下成为瓶颈,而多Reactor模型能分散负载,配合线程池更有效地利用多核CPU资源,提高服务器性能。
975

被折叠的 条评论
为什么被折叠?



