Reactor 模式

Reactor 设计模式(也叫反应器模式,或者应答者模式)是一种基于事件驱动的设计模式,这种模式像是一个女仆或者服务员,随时等待你的召唤。

高并发的场景经常使用Reactor模式取代常用的多线程处理模式,以节省系统资源,提高系统的吞吐量。

说到这里到底什么是Reactor模式,什么又是多线程模式呢?我们举个栗子:

假设有这么一个场景:你去餐厅吃饭,首先要有服务员将菜单拿给你,你选好以后,服务员帮你完成点餐。

第一种情况: 每有一位乘客光临,就分配一个服务员帮助点餐。

第二种情况: 当乘客来到来以后,服务员会给你菜单,你先点菜。这时服务员去服务其他客人,当你选好以后招呼一下‘服务员’,会有服务员过来帮你点餐。

每个客人好比是一个请求事件,餐厅的服务员好比请求的处理。

第一种情况就是典型的多线程模式,每一个事件到来,都会分配一个线程来处理请求。无疑这样的服务是最好的,每个客人都会觉得自己是vip,于是这家店的口碑越来越好,越来越多的客人来这里用餐,很快老板就发现忙不过来了,多请服务员吧,占地方不说还要多出工钱,成本太大了。

显然第二种情况更好一点,较少的资源服务了较多的客人,这就是Reactor模式,用单线程来干多线程的事,进程和线程的开销是很大的,内存占用高不说,上下文之间的切换也是很慢的。

Reactor模式主要是提高系统的吞吐量,在有限的资源下处理更多的事情。

利用Reactor模式的框架:

Node.js Gevent、Twisted、Tornado(Python) EventMachine、Rev(Ruby)

Comments