网上有很多讲解reactor模型的,我还是看了比较久才稍微领悟一点意思,那么我就举个例子讲讲自己的理解。
我们首先先结合NIO、多路复用的知识,做一个比喻。
大前提:餐馆的服务员现在假设只有一个(还需要兼职厨师),那么当一个客人来了之后,服务员会把菜单给客人,然后就走开去迎接其他客人,当有客人点好餐的时候会把菜单告诉服务员,服务员就会去做事,热按后服务员再把菜给客人,就完成了完整的一次流程。
那么针对reactor的三种模型。
一.单线程模式
那么这个时候就是指餐厅只有一个服务员(兼职厨师),那么这个时候会产生什么问题喃?
(1)当客人多了的时候,应付不过来。(网络请求多了以后,很多请求其实就是一直在等待)
(2)当有一个客人的菜特别复杂的时候,例如满汉全席,那其他客人就只能一首凉凉了。(当一个业务处理很久或者死循环了,那么整个服务挂掉)
所以针对上面的缺点,有了第二种模式。
二.多线程模式
那么这个时候就是指餐厅可以请多个厨师了,服务员被解放出来了,只用招呼客人。这样就可以很好地解决单线程模式的困扰。但是这样仍然存在一定的问题。
(1)当客人特别特别多的时候,服务员忙不过来了。
(2)厨师高产出下,会把菜交给服务员,结果服务员也忙不过来了。
为了解决这样的问题,就有了第三种模式。
三.主从模式
那么这个时候就是指:老板把这个服务员升级成主管了,然后老板另外请了几个服务员。每次来客人总会经过主管之手,然后主管就随便告诉一个其他的服务员先招呼客人(做主管以前做的事情,即一,二),然后主管就什么都不用管了,这个时候主观的压力就很小了,以前是10个客人的菜都由他传递与接收,现在是平分给了其他几个服务员,这样效率就更高了