Reactor 模式
Reactor 设计模式(也叫反应器模式,或者应答者模式)是一种基于事件驱动的设计模式,这种模式像是一个女仆或者服务员,随时等待你的召唤。
高并发的场景经常使用Reactor模式取代常用的多线程处理模式,以节省系统资源,提高系统的吞吐量。
说到这里到底什么是Reactor模式,什么又是多线程模式呢?我们举个栗子:
假设有这么一个场景:你去餐厅吃饭,首先要有服务员将菜单拿给你,你选好以后,服务员帮你完成点餐。
第一种情况: 每有一位乘客光临,就分配一个服务员帮助点餐。
第二种情况: 当乘客来到来以后,服务员会给你菜单,你先点菜。这时服务员去服务其他客人,当你选好以后招呼一下‘服务员’,会有服务员过来帮你点餐。
每个客人好比是一个请求事件,餐厅的服务员好比请求的处理。
第一种情况就是典型的多线程模式,每一个事件到来,都会分配一个线程来处理请求。无疑这样的服务是最好的,每个客人都会觉得自己是vip,于是这家店的口碑越来越好,越来越多的客人来这里用餐,很快老板就发现忙不过来了,多请服务员吧,占地方不说还要多出工钱,成本太大了。
显然第二种情况更好一点,较少的资源服务了较多的客人,这就是Reactor模式,用单线程来干多线程的事,进程和线程的开销是很大的,内存占用高不说,上下文之间的切换也是很慢的。
Reactor模式主要是提高系统的吞吐量,在有限的资源下处理更多的事情。
利用Reactor模式的框架:
Node.js Gevent、Twisted、Tornado(Python) EventMachine、Rev(Ruby)