这是一个基于Linux平台下的轻量级的web服务器项目;可实现上万的并发连接;项目中主要用的技术有;线程池 ; 非阻塞socket;epoll;事件处理的并发模型;状态基解析http请求;以及支持同步和异步的日志系统
线程池是服务器预先创建的一组子线程;子线程拥有相同的代码和属性;当有新的任务到来时;主线程会通过某种算法来选择子线程为之服务。
相比于动态创建子线程;选择已经存在的子线程为之服务;开销要小的多
动态创建的子线程一般只能为一个客户服务;这将导致很多的细微线程产生;线程的切换会花费大量时间
//socket通信设置为非阻塞;边沿触发避免由于一个文件描述符的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死
epoll?高效的IO复用技术
两种高效的事件处理模型 Reactor;实现简单;和Proactor;性能更高;
同步 I/O 模型通常用于实现 Reactor 模式;异步 I/O 模型通常用于实现 Proactor 模式。
主要区别就是 真正的读取和写入操作是由谁来完成的。
Reactor来了事件操作系统通知应用进程;让应用进程来处理;
Proactor来了事件操作系统来处理;处理完再通知应用进程。
有限状态机;根据应用层协议的不同类型字段;映射为逻辑单元的不同执行状态;服务器可以根据此来编写相应的处理逻辑