在找工作背面经到netty和redis的时候经常背到redis和netty高效的原因因为其基于异步线程的reactor模式构建的特性而决定的
那么reactor模式到底是什么呢? 它又源自何处? 采用reactor模式有什么好处呢? 它高效在什么地方呢?
reactor模式是指在有一个或者多个客户端的情况下,同时传输一个或者多个输入给服务器服务请求的事件处理驱动模式。
服务端程序处理传入的多路请求,并将它们同步分派给请求对应的处理线程,所以reactor模式也被称为dispatch模式,它聚合了NIO的Selector数据监听接收方式和事件驱动模型的事件分发方式,这两种方式都能够显著提升I/O处理的性能,其中I/O多路复用模式负责接收监听多个通道的数据输入,事件驱动模型用于分发事件,二者高度解耦。
二者结合起来就是:
从整体上看,就是客户端(包含了I/O复用模型并聚合了对应的数据处理逻辑)发送给ServerHandler(事件驱动模型的Event Mediator)然后进行任务的分发,分发给各个处理线程来进行并行处理,netty和redis中其实也是一样的,比如redis中的pipeline,它就是一次性发送多个任务到ServerHandler,随后再将pipeline中的任务逐个拆分到多个线程依次并行执行。