这是我参与「第五届青训营」伴学笔记创作活动的第 13 天
前言
本文对消息队列技术的历史及其演进做了简要介绍,同时介绍了 Kafka, BMQ 和 RocketMQ 的内部架构。
什么是消息队列?
在计算机科学中,邮件队列和邮箱是通常用于进程间通信 (IPC) 或同一进程内的线程间通信的软件工程组件。他们使用队列进行消息传递 - 控制权或内容的传递。组通信系统提供类似的功能。
消息队列范例是发布者/订阅者模式的同级,通常是更大的面向消息的中间件系统的一部分。大多数消息传递系统在其API中同时支持发布者/订阅者和消息队列模型,例如Java消息服务(JMS)。 —— Wikipedia
本质上,消息队列(MQ)是一个支持高吞吐,高并发和高可用的队列(Queue)。
消息队列经过了哪些发展?
发展历程:
- TIB(诞生于 1985 年,服务于金融机构和新闻机构)
- IBM MQ/WebSphere(诞生于 1993 年,商业消息队列平台市场主要玩家)
- MSMQ(微软发布于 1997 年)
- JMS(诞生于 2001 年,本质上是一套 Java API)
- AMQP/RabbitMQ(规范发布于 2004 年,同年 RabbitMQ 面世)
- Kafka(2010 年由 Linked 开源)
- RocketMQ(2011 年阿里中间件团队自研)
- Pulsar(2012 年诞生于 Yahoo 内部)
对比:
- Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色
- RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广
- Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计
- BMQ:和 Pulsar 架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的 Kafka 集群
消息队列解决了什么问题?
系统解耦、冗余存储、流量削峰、缓冲、异步通信......
引用
该文章部分内容来自于以下课程或网页:
- 字节内部课:走进消息队列
- Message queue - Wikipedia
- Kafka 科普 - 掘金 (juejin.cn)
分发
This work is licensed under CC BY-SA 4.0