WebServer

采用事件驱动+non-blocking I/O+线程池+mysql的架构,整个服务器的I/O处理单元由主线程完成, 使用epoll实现了事件驱动和高效的IO多路复用。逻辑单元由线程池中工作线程完成。 线程池的设计采用半同步/半反应堆模式,使用一个工作队列完全解除主线程和工作线程的耦合关系, 主线程往工作队列中插入任务,工作线程通过竞争来获取任务并执行。服务器存储单元使用mysql数据库完成。 在逻辑单元内部使用有限状态机对http请求进行解析,同时,为了节省资源和处理一些突发状况, 服务器为每一个socket连接设置一个定时器,当定时器超时,服务器自动清理超时连接。 定时器采用最小堆实现,服务器总是以堆顶超时值作为定时器心搏函数的调用间隔,以此实现较为精确的定时。