消息队列重要知识点整理 | 青训营笔记

159 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 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 集群

消息队列解决了什么问题?

系统解耦、冗余存储、流量削峰、缓冲、异步通信......

引用

该文章部分内容来自于以下课程或网页:

分发

This work is licensed under CC BY-SA 4.0