上一篇我们用一个秒杀案例探讨了我们为什么需要消息队列。今天我们来回顾一下消息队列的发展历史。
下图列出了过去 30 年中消息队列的发展简史。
我们来依次介绍一下这些产品。
ibm mq
ibm mq 于 1993 年推出。它最初称为 mqseries,2002 年更名为 websphere mq。2014 年更名为 ibm mq。ibm mq 是一款非常成功的产品,广泛应用于金融领域。到 2020 年,其收入仍将达到 10 亿美元。下图显示了 ibm mq 的关键架构。
队列管理器(queue manager)是消息队列的逻辑容器。它通过消息通道(channel)向其他队列管理器传输数据。传输的数据抽象为“消息”这个概念。队列用来存储消息。消息头包含路由信息、存储方式和传递目标信息。
还有其他一些非开源消息队列,如 msmq(1997 年)和 sqs(2004 年),它们都在各自的生态系统中发挥了很好的作用。
rabbitmq
2003 年,多家金融机构希望开发一种标准化的消息传递协议,于是 amqp(advanced message queuing protocol)在摩根大通诞生了。与在 api 层面标准化的 jms(java messaging service)不同,amqp 是一种 wire level 的协议,这意味着它规定了要传输的数据格式。作为 amqp 的一种实现,rabbitmq 由 rabbit technologies 于 2007 年开发,后被 vmware 收购。
下图是 rabbitmq 的架构。我们可以看到,它与 ibm mq 不同,更类似于 kafka 的架构概念。生产者向交换中心发布消息。它可以是直接交换、基于主题交换或扇出。然后,交换中心根据不同的消息属性和交换类型将消息路由到队列中。消费者据此接收信息。
虽然 rabbitmq 拥有很多现代消息队列概念,但它是近 20 年前开发的。当时的分布式系统还不像现在这样成熟,因此该架构在处理大流量和大量并发请求的场景时受到了限制。
kafka
2011 年初,linkedin 开源了分布式事件流平台 kafka。它以作家 franz kafka 的名字命名。顾名思义,kafka 是为写而优化的。它为处理实时数据流提供了一个高吞吐量、低时延的平台。它提供了一个统一的事件日志(event log)来实现事件流,在互联网公司中得到广泛应用。下图是简化的 kafka 架构。
总的来说,kafka 定义了生产者、消息代理、订阅主题、分区和消费者。kafka 的简单性和容错性使其能够取代以前的产品,如基于 amqp 的消息队列。
pulsar
pulsar 最初由雅虎开发,是一个一体化的消息平台和流平台。与 kafka 相比,pulsar 融合了其他产品的许多实用功能,支持的功能范围更广。此外,pulsar 的架构更具云原生性,可为集群扩展和分区迁移等提供更好的支持。下图显示了 pulsar 架构的简化版本。
与 kafka 类似,pulsar 也有订阅主题的概念,其 uri 看起来是这样的
{type}://{tenant}/{namespace}/{topic}
值得注意的是,uri 中有一个租户元素,这意味着 pulsar 支持多租户环境。
pulsar 还支持持久化或非持久化的订阅主题。持久化主题在磁盘上持久存在,而非持久化主题则驻留在内存中,一旦发生故障可能会丢失。
pulsar 架构分为两层:服务层和持久层。服务层由多个消息代理组成,负责处理传入和传出的信息。服务层是无状态的,它利用 apache bookkeeper 来存储信息。
另一个有趣的设计是,pulsar 原生支持分层存储,我们可以用 aws s3 等更便宜的对象存储来长期持久地保存消息。
总结一下,消息队列的发展从一开始的消息传递中间件演进为流处理。现代消息队列通常将这两种功能结合在一起,并支持分布式环境中的容错。我们用下图来结束今天的日拱一卒:每种流行产品的诞生都改变了消息队列的编程范式,并解决了业务痛点。
苹果的带头作用:2020年将有过半智能机搭载OLED屏幕
世强汽车电子事业部崭露头角,获瑞萨电子多项嘉奖
首款民用物流无人机及相关无人机产品
C语言入门教程-示例:编写能够打印华氏-摄氏温度转换表的程序
轨道交通机器人 保障轨交运营安全和稳定性
消息队列的发展历史
时代呼唤中带来的屏幕技术
采用FLIR GF320红外热像仪检测沼气设施中的气体泄漏
一文解析交流、直流电源入口的EMC设计
无人机已成趋势,我国空军长航时无人机严密监视美国航母
升压控制器构成负降压稳压器
高级LED效果灯的电容式感应是如何设计的
快递行业“分拣机器人”自动化发展的新趋势
实现筋膜枪“突突突”简单粗暴的工作原理到底是什么?
3d扫描仪三维扫描仪技大空间矿山地下矿区采用新型三维扫描方式
人工智能数据资源服务商海天瑞声发布2021年报
制造业ERP系统生产物料管理有何利弊?功能有哪些?
C语言的表达式
骁龙835处理器规格/中国移动自研BC-Linux系统/HTC Ocean新机曝光
过于谦虚好学的苹果不配果粉的信仰