Reactor模式
文章来源于http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html
Reactor模式实现
这是一个简单的例子来理解Reactor。
Client连接到Logging Server
- Logging Server注册LoggingAcceptor到InitiationDispatcher。
- Logging Server调用InitiationDispatcher的handle_events()方法启动。
- InitiationDispatcher内部调用select()方法(Synchronous Event Demultiplexer),阻塞等待Client连接。
- Client连接到Logging Server。
- InitiationDisptcher中的select()方法返回,并通知LoggingAcceptor有新的连接到来。
- LoggingAcceptor调用accept方法accept这个新连接。
- LoggingAcceptor创建新的LoggingHandler。
- 新的LoggingHandler注册到InitiationDispatcher中(同时也注册到Synchonous Event Demultiplexer中),等待Client发起写log请求。
Client向Logging Server写Log
- Client发送log到Logging server。
- InitiationDispatcher监测到相应的Handle中有事件发生,返回阻塞等待,根据返回的Handle找到LoggingHandler,并回调LoggingHandler中的handle_event()方法。
- LoggingHandler中的handle_event()方法中读取Handle中的log信息。
- 将接收到的log写入到日志文件、数据库等设备中。
3.4步骤循环直到当前日志处理完成。 - 返回到InitiationDispatcher等待下一次日志写请求。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步