设计模式-Reactor模型(反应器设计模式)
是一种基于事件驱动的设计模式,在事件驱动的应用中,将一个或多个客户的服务请求分离(demultiplex)和调度(dispatch)给应用程序。在事件驱动的应用中,同步地、有序地处理同时接收的多个服务请求 一般出现在高并发系统中,比如Netty,Redis等
优点
1)响应快,不会因为单个同步而阻塞,虽然Reactor本身依然是同步的
2)编程相对简单,最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销
3)可扩展性,可以方便的通过增加Reactor实例个数来充分利用CPU资源
缺点
1)相比传统的简单模型,Reactor增加了一定的复杂性,因而有一定的门槛,并且不易于调试
2)Reactor模式需要系统底层的支持,比如java中的Selector支持,操作系统的select系统调用支持
通俗理解:KTV例子 前台接待,服务人员带领去开机器
Reactor模式基于事件驱动,适合处理海量的IO事件,属于同步非阻塞IO(NIO)
Reactor单线程模型(比较少用)
如果用户量很多是处理不过来的
1)作为NIO服务端,接收客户端的TCP连