高并发网络服务器设计

小白模式

毕业入职第一家公司的入职作业就是写一个高并发的http服务器。当时的大致思路是这样:
主线程创建监听端口,将监听端口放入epoll监听列表,然后epoll开始循环监听,当到来的读请求是监听端口,则接受客户端连接,并将客户端连接放入监听队;当到来的读请求来自于客户端连接时,直接开启新的线程来处理客户端发来的请求。
高并发网络服务器设计

高端模式

使用过一些高并发网络通信框架之后发现,它们的实现方式大多都是这样的,
包括三部分:主线程,select线程池,工作线程池

主线程

主线程负责创建监听端口,监听客户端连接的到来,当有客户端连接请求过来时,两请求交给一个选中的select线程

select线程

select线程负责创建与客户端的连接,并且这个客户端整个生命周期都会由这个这个select线程来负责

工作线程池

当select线程监听到客户端的读事件之后,会将这个读任务放入工作线程池,由工作线程负责读取客户端请求
高并发网络服务器设计

总结

高端模式实际上是让各个线程的职责单一,实现更灵活。