发布/订阅(Pub/Sub,即Publish/Subscribe)是分布式系统中用于不同组件或服务之间异步通信的一种架构设计模式。尽管发布/订阅基于消息队列和事件代理等早期设计模式,但它更加灵活和可扩展。其关键在于,发布/订阅允许在系统的不同组件之间传递消息,而这些组件之间无需知道彼此的身份(即它们是解耦的)。
发布/订阅模式的出现源于扩大信息系统规模的必要性。在互联网时代之前,甚至在互联网发展的初期,系统大多是通过静态方式扩展的。然而,随着互联网的扩张和基于Web的应用程序的普及,以及移动设备和物联网设备的广泛应用,系统需要动态地扩展。
发布/订阅模式的解耦特性使其成为管理动态可扩展系统架构的理想选择。发布/订阅使得在不增加系统组件程序逻辑负担的情况下管理扩展成为可能。
Pub/Sub 提供了一个框架,用于在发布者(创建和发送消息的组件)和订阅者(接收和使用消息的组件)之间交换消息。请注意,发布者不会以点对点方式向特定订阅者发送消息。相反,使用中介 - Pub/Sub 消息代理,它将消息分组为称为通道(或主题)的实体。
订阅者首先会选择订阅特定的主题,以便能够接收该主题下的所有消息。
随后,发布者会向这些已选定的主题发送消息,这些消息包含了需要传递的信息或指令。
消息代理作为核心中介,接收来自发布者的消息,并将其存储在对应的主题中。同时,代理还会负责将这些消息分发给所有已订阅该主题的订阅者。
为了更具体地理解Pub/Sub系统的操作,我们可以考虑以下实际场景:
设想在家中,您安装了一系列IoT设备,这些设备负责监测烟雾浓度并控制电力与天然气的供应。为了确保这些设备之间能够顺畅且可靠地通信,您可以采用MQTT代理作为消息传递的中心枢纽。
在这个场景中,一旦烟雾检测设备(作为发布者)侦测到烟雾并判定为警报状态,它会立即向MQTT代理发送一条包含警报信息的消息。而您的智能手机(作为订阅者之一)已经订阅了相关的烟雾警报主题,因此会立即接收到这条消息,并通知您家中存在烟雾。
值得注意的是,Pub/Sub模型的灵活性还体现在订阅者也能转变为发布者的能力上。例如,您的智能手机在接收到烟雾警报后,可以作为一个发布者,向另一个特定主题发送关闭电力和天然气供应的指令消息。此时,负责控制电力和天然气供应的IoT设备(作为订阅者)会接收到这条指令,并据此执行关闭操作,以确保家庭安全。
通过这样的方式,即便只发送了一条消息,也能触发两个独立的IoT设备同时做出响应,从而实现了高效的跨设备通信与协同工作。
Pub/Sub 模式为表带来了许多好处,包括但不限于:
组件之间的松散耦合,使您的系统更加模块化和灵活。
高可扩展性(理论上,Pub/Sub 允许任意数量的发布者与任意数量的订阅者通信)。
与语言和协议无关,这使得将 Pub/Sub 集成到您的技术堆栈中变得简单快捷。
异步、事件驱动型通信,非常适合实时、低延迟的应用程序。
Pub/Sub 的松散耦合、异步特性和固有的可扩展性使其成为发布者和订阅者数量较高且波动的分布式系统的绝佳解决方案。您可以将 Pub/Sub 用于许多不同的目的,例如:
发送事件通知。
分布式缓存。
分布式日志记录。
使用多个数据源。
广播更新(一对多消息传送)。
构建响应式、低延迟的最终用户体验,例如实时聊天和多人游戏协作功能。
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!
相关阅读:
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 南京办事处葛经理:17626012283
成都总部销售经理:
秦 科(无线模块):18884314654 冯子恒(无线模块):18884314734
蔡友银(无线模块):13882211021 葛宇龙(通信设备):19138800613
胡兵(外贸销售经理):18584911141、 sales06@ebyte.com
业务邮箱:support@cdebyte.com 全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都亿佰特电子科技有限公司【版权所有】 蜀ICP备13019384号