Reactor模式详解及 三种模式演变

本文深入探讨了Reactor模式,解释了其工作原理,包括EventHandler接口定义和模式的缺点。讨论了Reactor的单线程模型,指出在高负载场景下的局限性,并引入了Reactor多线程模型以及主从Reactor线程模型,以应对大规模并发连接的挑战。
摘要由CSDN通过智能技术生成

无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件。

什么是Reactor模式

要回答这个问题,首先当然是求助Google或Wikipedia,其中Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to associated request handlers.”。从该描述中知道: Reactor模式首先是 事件驱动的,有一个或多个并发输入源,有一个Service Handler,有多个Request Handlers ;这个Service Handler会同步的将输入的请求(Event)多路复用的分发给相应的Request Handler。

简要概括:将消息放到了一个队列中,通过异步线程池对其进行消费。

如果用图来表达:

从结构上,这有点类似生产者消费者模式,即有一个或多个生产者将事件放入一个Queue中,而一个或多个消费者主动的从这个Queue中Poll事件来处理;而Reactor模式则并没有Queue来做缓冲,每当一个Event输入到Service Handler之后,该Service Handler会主动的根据不同的Event类型将其分发给对应的Request Handler来处理。


更学术的,这篇文章( Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events )上说:“The Reactor design pattern handles service requests that are delivered concurrently to an application by one or more clients. Each service in an application may consistent of several methods and is represented by a separate event handler that is responsible for dispatching service-specific requests. Dispatching of event handlers is performed by an initiation dispatcher, which manages the registered event handlers. Demultiplexing of service requests is
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值