首页 理论教育 高效系统消息总线设计

高效系统消息总线设计

时间:2023-10-21 理论教育 版权反馈
【摘要】:传统的Observer机制采用“注册—通知—撤销注册”的消息管理形式。消息代理模式具有很好的灵活性和扩展性,并支持主动、实时的信息传递方式。当消息发布者有动态更新的数据产生时,消息代理会通过事件的发布主动通知消息订阅者有新的数据可用,而无须消息订阅者进行频度无法确定的查询。消息总线对双方的主题进行匹配后,不断将订阅者感兴趣的消息推送给订阅者,直到订阅者向消息代理者发出取消订阅的消息为止。

高效系统消息总线设计

传统的Observer(事件—监听)机制采用“注册—通知—撤销注册”的消息管理形式。这种消息形式可以通过一个被观察对象的接口实现依赖倒置和解耦,但并不能够完全解耦。由于消息内存溢出的现象时常发生,消息发送的速度较慢,一旦消费者数量达到一定规模,执行的效率也会变慢。

基于代理—分类器—订阅的消息模式,如图6-13所示。按照消息的类型、消息执行器、消息接收者的不同来分类,同时针对某一类的消息提供不同的消息执行器(例如:FTP服务、Socket服务、广播、MQ等),这种设计不仅实现了企业级消息总线的功能,也带来了效率的极大提升,降低了对路由器和交换机的性能依赖,节约了投资成本,加入了消息分类和消息执行器的角色,缩小了消息的影响面,提高了消息执行的效率。

图6-13 代理—分类器—订阅的消息总线模式

每一个消息发送者在注册时都必须给出{String MsgNo,int MsgType,String MsgContent,String MsgSuffix};其中Msg No为消息的唯一编号,唯一地区别某个消息;Msg Type为消息的类型,用以区别消息的分类;MsgContent为消息内容;MsgSuffix为消息的附加内容。

消息代理模式具有很好的灵活性和扩展性,并支持主动、实时的信息传递方式。当消息发布者有动态更新的数据产生时,消息代理会通过事件的发布主动通知消息订阅者有新的数据可用,而无须消息订阅者进行频度无法确定的查询。消息代理适合具有实时性、异步性、异构性、动态性和松耦合的应用需求环境。(www.xing528.com)

代理—分类器—订阅的消息总线模式的工作原理为:消息发布者和订阅者分别与消息注册(订阅)代理者进行通信。消息发布者将包含主题的消息发布到消息注册代理者;消息订阅者向消息订阅代理者订阅自己感兴趣的主题消息。消息总线对双方的主题进行匹配后,不断将订阅者感兴趣的消息推送给订阅者,直到订阅者向消息代理者发出取消订阅的消息为止。代理—分类器—订阅的消息总线模式实现了发布者和订阅者在时间、空间和流程三个方面的解耦:

时间解耦——发布方和订阅方无须同时在线就能够进行消息传输,消息中间件通过存储转发提供了这种异步传输的能力。

空间解耦——发布方和订阅方无须知道对方的物理地址、端口,甚至无须知道对方的逻辑名字和个数。

流程解耦——发布方和订阅方在发送和接收数据时并不阻塞各自的控制流程。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈