高并发网络服务器设计
小白模式
毕业入职第一家公司的入职作业就是写一个高并发的http服务器。当时的大致思路是这样:
主线程创建监听端口,将监听端口放入epoll监听列表,然后epoll开始循环监听,当到来的读请求是监听端口,则接受客户端连接,并将客户端连接放入监听队;当到来的读请求来自于客户端连接时,直接开启新的线程来处理客户端发来的请求。
高端模式
使用过一些高并发网络通信框架之后发现,它们的实现方式大多都是这样的,
包括三部分:主线程,select线程池,工作线程池
主线程
主线程负责创建监听端口,监听客户端连接的到来,当有客户端连接请求过来时,两请求交给一个选中的select线程
select线程
select线程负责创建与客户端的连接,并且这个客户端整个生命周期都会由这个这个select线程来负责
工作线程池
当select线程监听到客户端的读事件之后,会将这个读任务放入工作线程池,由工作线程负责读取客户端请求
总结
高端模式实际上是让各个线程的职责单一,实现更灵活。