reactor模式
为了处理web request请求,有两种web架构:基于线程模型的架构和基于事件驱动的架构。
基于线程模型
线程模型的好处是扩展性比较好,通过加server机器提供更多的线程。
但是缺点就比较多了,
因为是采用一个连接对应一个处理线程的方式。
这就需要大量的处理线程,占用大量内存,大量线程调度开销。
尤其是大量连接到来时,线程用光,导致请求被丢弃。尤其是遇到keep-alive的长连接,情况会更加严重。
基于事件驱动
事件驱动包括两个角色,事件创建者和事件消费者。
Reactor模式是事件驱动模型的一个实现。简单的说就是有一个线程不断轮询事件源,然后将其分发给对应的处理器。
由两部分组成。
reactor,就是那个单独的线程。
handler,就是对应的处理器。
一句话:reactor设计模式就是一个同步的按照事件到达顺序处理事件的分发器。