高性能HTTP服务器:设计和思路

设计需求

  •  reactor模型,可以灵活使用ppoll/epoll事件分发机制
  • 主从 reactor模型加线程池模式。将连接和读写分离
  • http协议内容解析

大概可以分为这三块进行实现。

 

主从Reactor模型设计:

高性能HTTP服务器:设计和思路

主反应堆一直在感知连接建立事件,如果有连接成功建立,主反应堆线程通过accept方法获取已链接套芥子,按照一定算法选取一个从反应堆线程,并把链接号的套接字加入到这个反应堆线程中

主反应堆只负责获取套接字加入到从反应堆中,像是在客栈外面拉皮条的人。

Reactor组成元素

  • event_loop

       主线程所在的无限事件循环,一旦事件发生,将回调事件函数进行处理(epoll select poll等待)

  • channel(event)

       注册的对象,我们使用channel表示,例如监听事件,读写事件套接字

  • acceptor

       服务器监听器,监听channel对象 注册在event_loop中  

  • event_dispatcher 

IO多线程模型

  • threadpool

    线程池,维护活跃线程列表,当有链接,将分配给一个合适的线程进行操作

  • event_thread_loop

    线程单元,对连接套接字进行读写操作。

 

 

     对事件进行处理的行为