发布/订阅

✍ dations ◷ 2025-12-01 19:52:48 #软件设计模式,中间件

在软件架构中,发布-订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。

发布/订阅是消息队列范式的兄弟,通常是更大的面向消息中间件(英语:Message-oriented_middleware)系统的一部分。大多数消息系统在API中同时支持消息队列模型和发布/订阅模型,例如Java消息服务(JMS)。

这种模式提供了更大的网络可扩展性和更动态的网络拓扑,同时也降低了对发布者和发布数据的结构修改的灵活性。

在发布/订阅模型中,订阅者通常接收所有发布的消息的一个子集。选择接受和处理的消息的过程被称作过滤。有两种常用的过滤形式:基于主题的和基于内容的。

在基于主题的系统中,消息被发布到主题或命名通道上。订阅者将收到其订阅的主题上的所有消息,并且所有订阅同一主题的订阅者将接收到同样的消息。发布者负责定义订阅者所订阅的消息类别。

在基于内容的系统中,订阅者定义其感兴趣的消息的条件,只有当消息的属性或内容满足订阅者定义的条件时,消息才会被投递到该订阅者。订阅者需要负责对消息进行分类。

一些系统支持两者的混合:发布者发布消息到主题上,而订阅者将基于内容的订阅注册到一个或多个主题上。

在许多发布/订阅系统中,发布者发布消息到一个中间的消息代理,然后订阅者向该消息代理注册订阅,由消息代理来进行过滤。消息代理通常执行存储转发的功能将消息从发布者发送到订阅者。

最早公开描述发布/订阅系统之一的是Isis Toolkit的“新闻”子系统,1987年,在计算机协会 (ACM)的操作系统原理的研讨会上,,在论文《在分布式系统中利用虚同步》中。该文描述的发布/订阅技术是由Frank Schmuck发明的。

发布/订阅系统最严重的问题是其主要优点的副作用:发布者解耦订阅者。

发布/订阅系统必须仔细设计,才能提供特定的应用程序可能需要的更强大的系统性能,例如有保障的交付。

在有少量发布者和订阅节点的小型网络和低信息量时发布/订阅能够自如伸缩。然而,随着节点和消息量的增长,不稳定性随之增长,限制了发布/订阅网络的最大可扩展性。大规模时吞吐量不稳定的例子包括:

使用中介(服务器)的发布/订阅系统,同意中介发送消息给带内(英语:In-band_control)订阅者,会引发安全问题。中介可能被愚弄,从而将通知发送给错误的客户端,增大了针对客户端的服务请求被拒绝的可能性。中介本身可能超载,因为他们分配资源来跟踪创建的订阅。

即使不依赖中介的系统,订阅者也可能可以接收未被授权的数据。未经授权的发布者可能将不正确或损坏的消息引入到发布/订阅系统。对于广播或多播消息的系统,这是尤其真实的。加密(例如传输层安全性协议(SSL/TLS)),可以防止未经授权的访问,但不能防止损坏的消息被授权的发布者引入。除了发布/订阅架构,例如客户端/服务器系统,也经常碰到授权的消息发送者有恶意行为。


相关

  • 北纬纬度(φ)是地球表面一个点的南北地理位置的表示法。纬度与经度通常一起使用以确定地表上某点的精确位置。纬度是一个角度,其范围从赤道的0度到南北极的90度。在英文文本中,纬度
  • 张圣容张圣容(1948年3月24日-),美国华人数学家,美国国家科学院院士,中央研究院院士,普林斯顿大学数学系教授。张圣容主要从事几何分析方向的研究。1948年出生于中国西安市,台湾长大,北二女(
  • 古斯塔夫飓风飓风古斯塔夫(英语:Hurricane Gustav)是2008年大西洋飓风季中,第七个被命名的热带气旋。该风暴于8月25日早上,在海地太子港东南约420公里处形成,并迅速增强,当天下午成为热带风暴,至
  • 希尔德加德·冯·宾根圣希尔德加德·冯·宾根(天主教译圣贺德佳,圣公会译圣希尔德格,德语:Hildegard von Bingen,拉丁文作Hildegardis Bingensis,1098年-1179年9月17日),又被称为莱茵河的女先知(Sibyl of t
  • 奥古斯塔皇后湾奥古斯塔皇后湾(英语:Empress Augusta Bay)是位于巴布亚新几内亚布干维尔岛西部的大海湾。是当地居民主要的渔场。奥古斯塔皇后湾得名于德国皇帝威廉二世的皇后奥古斯塔·维多
  • 文化素养文化素养是用优势文化中的习语、隐喻和非正式内容流利交谈的能力。从熟悉的街道路标,到历史出处的知识,再到理解最近的俚语,文化素养需要理解文化的相互影响并作出反应。社会成
  • 程景云程景云(1424年-?),字汉章,直隶徽州府休宁县人,陕西宁夏卫军籍,明朝政治人物。进士出身。陕西乡试第二十五名。景泰五年(1454年),参加甲戌科会试,得贡士第一百三十八名。殿试登进士第二甲
  • 贝特鲁卡区贝特鲁卡区(马达加斯加语:Betroka),是马达加斯加的行政区,位于该国东南部,由阿诺西区负责管辖,首府设于贝特鲁卡,面积13,315平方公里,2011年人口180,822,人口密度每平方公里14人。
  • 朱容君朱容君(1990年5月31日-),艺名兔子牙,中国内地流行乐女歌手、网络主播。2015年入驻酷狗直播,之后相继推出《繁星四月》、《小白兔遇上卡布奇诺》等音乐作品。2019年5月,以明星战队经
  • 高师直高师直(?-1351年3月24日),日本南北朝时代武将。足利尊氏的侧近,参加讨幕战争,建武新政等。南北朝动乱时期,与楠木正成,北畠显家,新田义贞等名将长期对阵。 1338年,足利尊氏就任征夷大将