当前位置:

首页 > 系统应用 > 从互联网到云时代,ApacheRocketMQ是如何演进的?

从互联网到云时代,ApacheRocketMQ是如何演进的?

2022 年,RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言,架构走向云原生化,并且覆盖了更多业务场景。消息队列演进史操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有 30 多年的历史。消息队列的发展主要经历了以下几个阶段:第一阶段(1980-

2022 年,RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言,架构走向云原生化,并且覆盖了更多业务场景。

消息队列演进史

操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有 30 多年的历史。消息队列的发展主要经历了以下几个阶段:

  • 第一阶段(1980-2000 年) 80 年代诞生了第一款消息队列 The Information Bus,第一次提出发布订阅模式来解决软件之间的通信问题;90 年代是国际商业软件巨头的时代,IBM、Oracle、Microsoft 纷纷推出自己的 MQ,其中最具代表性的为 IBM MQ,价格昂贵,面向高端企业,主要是大型金融、电信等企业。该类商业 MQ 一般采用高端硬件,软硬件一体机交付,MQ 本身的软件架构为单机架构。
  • 第二阶段(2000~2007 年)
    进入 00 年代后,初代开源消息队列崛起,诞生了 JMS、AMQP 两大标准,与之对应的两个实现分别为 ActiveMQ、RabbitMQ,他们引领了初期的开源消息队列技术。开源极大促进了消息队列的流行,降低了使用门槛,技术普惠化,逐渐成为企业级架构的标配。相比于今天而言,这类 MQ 主要面向传统企业级应用和小流量场景,横向扩展能力较弱。
  • 第三阶段(2007~2017 年) PC 互联网、移动互联网爆发式发展。由于传统的消息队列无法承受亿级用户的访问流量与海量数据传输,诞生了互联网消息中间件,核心能力是全面采用分布式架构,具备很强的横向扩展能力,开源典型代表有 Kafka、RocketMQ,闭源的有淘宝 Notify。Kafka 的诞生还将消息中间件从消息领域延伸到了流领域,从分布式应用的异步解耦场景延伸到大数据领域的流存储与流计算场景。
  • 第四阶段(2014~至今) 云计算、IoT、大数据引领了新的浪潮。

互联网时代的 RocketMQ

阿里的电商系统最初是个庞大的单体巨石应用,在研发效率、稳定性方面都无法满足淘宝和天猫飞速的发展。为了解决问题,2008 年,淘宝与天猫发起了一次最大规模的架构升级,启动了“五彩石”项目,将单体应用拆分为分布式应用,同时抽象淘宝、天猫的共同底座——业务中台,包括交易中心、商品中心、买家中心等。在业务中台之下,同时诞生了阿里中间件(初期三大件包括消息、RPC、分布式数据层),RocketMQ 是其中之一。

虽然在当时业界已经存在不少商业或开源的消息队列,比如 IBMMQ、ActiveMQ、RabbitMQ,但无一例外,它们都诞生于传统企业级应用的场景,无法承受互联网对于高并发、无限扩展的苛刻要求。以 RabbitMQ 为例,RabbitMQ 的队列流量与存储负载都为单机,无法满足业务横向扩展的需求。当时另一款具备无限横向扩展能力的消息队列是 Kafka,但其主要用于日志类场景,未经过大规模核心业务稳定性验证,而且偏向于简单的 log 型消息队列,无法满足电商对于复杂消息功能特性的诉求,比如消息过滤、延迟消息等。

另一方面,传统的消息队列无法解决电商业务对于分布式一致性的要求。通过消息队列实现应用异步解耦后,电商业务还需要保障不同上下游应用对于订单状态要达成最终一致,否则会产生大量脏数据,造成业务错误。

大规模的电商系统,既要高性能又要一致性,传统的分布式事务技术束手无策。比如IBM MQ 虽然可以使用 XA 事务来满足分布式一致性的功能诉求,但是 XA 带来的延迟与成本,对于海量的互联网流量难以承受。

为了解决电商业务对于消息队列的高性能、一致性、无限扩展等需求,自研消息队列成为了当时阿里唯一的出路,最终互联网消息队列 RocketMQ 应运而生。

为了支持超大规模的复杂电商业务,RocketMQ 面向四个方面进行了重点建设,形成了四大优势能力。

① 支撑超大规模复杂业务的能力,具备丰富的消息特性

每一个大型互联网公司都有自己的主营业务,像阿里是做交易的,蚂蚁搞支付,饿了么专注外卖。这些公司会以主营业务为核心来拓展业务能力。比如阿里电商,就是围绕交易事件构建的电商操作系统。每一笔交易事件都会引发不同的业务,而不同的细分业务又会关注不同类型的交易事件。举个例子,垂直市场就只关注某个类目的交易事件,天猫超市只盯着某个卖家的交易事件,购物车则只对下单成功的交易事件感兴趣。

RocketMQ 的 SQL 订阅提供灵活的消息过滤能力,能够满足下游消费者按照不同的业务维度进行消息过滤的诉求。

在大型互联网业务中,还会有各种定时事件触发场景,最典型的是交易超时关闭机制,阿里交易或者 12306 订票都有类似的机制。RocketMQ 的定时消息能够很方便的满足这类诉求。

② 一致性

无论是阿里的交易,还是蚂蚁的支付,都天生对数据一致性有着极高的要求。而RocketMQ在一致性方面,也打造了多个关键特性。其中最具代表性的,便是分布式事务消息。RocketMQ可是第一个实现这种特性的消息队列哦,它能够保障交易的上下游,对于订单状态达到最终一致。这个方案,也已然成为异步消息一致性方案的事实标准,被众多互联网公司所采纳,甚至有公司将其移植到定制版的Kafka中。除了分布式一致性,RocketMQ还提供了顺序消息的特性,以满足顺序一致性的需求。顺序消息,是一种对消息发送和消费顺序有严格要求的消息,对于一个指定的Topic,消息会严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发布的消息先消费,后发布的消息后消费。在Apache RocketMQ中支持分区顺序消息,我们可以按照某一个标准对消息进行分区(比如ShardingKey),同一个ShardingKey的消息会被分配到同一个队列中,并按照顺序被消费。例如创建订单的场景,就需要保证同一个订单的生成、付款和发货这三个操作被顺序执行。如果是普通消息,订单A的消息可能会被轮询发送到不同的队列中,不同队列的消息将无法保持顺序,而顺序消息发送时将ShardingKey相同(同一订单号)的消息序路由到一个逻辑队列中。

③ 稳定性

稳定性是交易与金融场景的基石特性,也是 RocketMQ 的根本。RocketMQ 除了具备核心服务的 HA 之外,还具备了全局高可用能力,在阿里内部支持同城多活、异地多活、中心容灾等高阶 HA 能力。同时,稳定性也不局限于数据与服务的高可用,RocketMQ 从产品层面对稳定性进行了全方位的建设,如消息轨迹、消息回溯、消息死信机制。

④ 高性能

在双十一的极限流量下,RocketMQ 写消息延迟 4 个 9 在 1ms 内,100% 在 100ms 内。RocketMQ 采用 shared-nothing 分布式架构,在吞吐量方面也具备无限扩展的能力,已经连续 10 年支持了双十一万亿级消息洪峰,为百万级的应用实例提供低延迟消息服务。

互联网的故事还在进行,云计算规模化落地的时代悄然而来。

云计算时代的 RocketMQ 5.0

2015 年,RocketMQ 的首个云消息服务在阿里云上线,开启了大规模的云计算实践的序幕。同时 RocketMQ 也是业界第一个提供公有云服务的开源消息队列。

在大规模的云计算业务场景下,RocketMQ 面临着全新的挑战与机遇。

  • 多样性: 它不再仅服务于某一家公司的内部业务,不再局限于互联网或金融企业,需要实现全行业、全场景的覆盖。
  • 标准化: 对于服务企业内部的自研消息队列而言,无需考虑协议或 API 的标准化。但是对于云消息服务而言,因为服务对象是外部企业客户,据信通院统计,80% 以上的企业客户已经采纳开源技术和标准技术。因此,作为一款云消息服务,需要提供对业界的事实标准协议、接口、SDK 的兼容,才能保证客户平滑上云,同时打消客户技术绑定的担忧。
  • 云原生: 云原生理念深入人心,消息队列要更好地帮助客户实现云原生应用架构,为业务降本提效。
  • 新趋势: 各种新技术的兴起,包括 IoT、5G、边缘计算、事件驱动,还有事件流技术。面向技术的新趋势与多样化的业务需求,RocketMQ 进行了自我进化,演进到 5.0 版本。

为了充分释放云的技术红利,RocketMQ 5.0 在技术架构上进行了云原生的演进。从客户端到服务端都进行了全方位的改造,更高弹性、可用性、更低成本。

  • 客户端采用轻量 SDK 设计理念,将原来富客户端的逻辑下沉到 Broker,满足现代化应用轻量化、Serverless 的趋势。
  • Broker 彻底进行弹性架构改造,分离 RocketMQ Proxy 与 Store 层,其中 Proxy 是完全无状态的计算节点,专注多协议、多领域场景覆盖,可以面向不同工作负载独立弹性,如物联网、微服务、大数据不同场景有不同的资源诉求。Store 层则专注消息的高可用存储,包括副本复制、主备切换与云存储集成。同时对 RocketMQ 的 Topic 资源进行三层解耦,面向消息的Topic、面向流的 Topic 逻辑分片、面向底层存储的 Topic 物理分片,每一层都可以独立弹性。
  • 在存储层引入了 Leaderless 的高可用架构,Store 节点身份对等,Leaderless 化,0 外部依赖。多副本策略可定制,可用性+可靠性+成本灵活组合,面向多可用区、多 region 组建 Geo 高可用能力。

为了满足云时代多样化的用户需求,RocketMQ 5.0 从原来的互联网业务消息中间件扩展到"消息、事件、流"超融合处理平台,解锁更全面的能力。

在消息领域, 全面拥抱云原生技术,更好的弹性架构与高可用能力。

在事件领域, 支持 CloudEvent 规范,以事件为中心的产品新界面,助力客户建设跨业务、跨组织的数字化商业生态。

在流领域, 流存储增强批量特性,大幅度提高数据吞吐量;新增逻辑队列能力,解耦逻辑资源与物理资源,在流场景也具备无缝伸缩能力;新增流数据库 RSQLDB,提供实时事件流处理、流分析能力。

RocketMQ 基于端云一体化架构实现了完整的物联网消息队列的能力,从原来的连接应用扩展到连接物联网设备。同时 RocketMQ 5.0 也继续保持极简架构的原则,能够以最低的资源消耗、运维成本搭建服务,适合边缘计算。

除了的产品核心能力之外,RocketMQ 5.0 积极建设开源生态。

一方面是应用架构生态的建设,既有经典的开源项目、规范的集成,比如 JMS、AMQP 等,也有云原生技术生态的集成,比如 CloudEvents、Dapr、Envoy。同时 RocketMQ 也会进一步发力数据架构生态,全链路集成大数据的摄入、数据存储、数据处理、数据分析组件,从离线大数据到实时大数据。

RocketMQ 学习社区体验地址

RocketMQ 学习社区重磅上线!AI 互动,一秒了解 RocketMQ 功能源码。RocketMQ 学习社区是国内首个基于AIGC提供的知识服务社区,旨在成为 RocketMQ 学习路上的“贴身小二”。

PS:RocketMQ 社区以 RocketMQ 5.0 资料为主要训练内容,持续优化迭代中,回答内容均由人工智能模型生成,其准确性和完整性无法保证,且不代表 RocketMQ 学习社区的态度或观点。

立即体验 RocketMQ 学习社区(建议 PC 端体验完整功能):

https://rocketmq-learning.com/

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用 互联网
相关文章 更多
除了界面,Windows11和Win10还有哪些实质差异
除了界面,Windows11和Win10还有哪些实质差异

除了开始菜单的变化,Windows 11在TPM 2.0安全要求、窗口贴靠布局、驱动兼容性以及系统更新策略上与Windows 10有显著不同。本文详解两者实质差异,助你判断是否值得升级。

win10专业版和家庭版关闭更新方法差别在哪
win10专业版和家庭版关闭更新方法差别在哪

详解Windows 10家庭版和专业版在关闭或暂停自动更新时的操作区别。涵盖通用的暂停更新、活动时间设置,以及专业版独有的组策略管理入口,帮助不同版本用户合理控制更新节奏,避免系统安全风险。

win10暂停更新最长可以设置多少天怎么操作
win10暂停更新最长可以设置多少天怎么操作

想知道Win10暂停更新最长能设多久?官方支持最长暂停35天。本文图文演示如何在设置中开启暂停、确认生效日期,以及到期后如何恢复更新或调整活动时间以避免打扰。

win10怎么屏蔽win10系统更新的弹窗提醒
win10怎么屏蔽win10系统更新的弹窗提醒

本教程介绍如何在Windows 10中通过暂停更新、设置活动时间及安排重启时间来减少更新弹窗提醒。包含通知隐藏技巧及更新失败排查步骤,帮助你在保持系统安全的同时减少工作打扰。

win10更新后台占用CPU过高怎么关闭自动更新
win10更新后台占用CPU过高怎么关闭自动更新

Windows 10 更新时 CPU 占用过高怎么办?本教程演示如何通过任务管理器确认更新进程,使用“暂停更新”功能临时停止后台活动,并设置“活动时间”防止自动重启干扰工作。提供安全的故障排查步骤,避免直接禁用系统服务带来的风险。

win10正在玩游戏弹出更新重启怎么禁止
win10正在玩游戏弹出更新重启怎么禁止

Win10玩游戏时突然弹出更新重启提示?不要强制关机。本文教你如何通过设置“活动时间”避免自动重启,利用“安排重启”规划空闲时间,以及合理使用“暂停更新”功能。区分不同状态下的应对策略,既保护游戏进度又维持系统安全。

win10自动更新抢占网络带宽该怎么处理
win10自动更新抢占网络带宽该怎么处理

Win10自动更新抢占带宽导致游戏卡顿或网页打不开?本教程教你通过任务管理器确认更新进程,利用暂停更新、按流量计费连接和传递优化带宽限制,精准控制Windows Update下载速度,解决网络拥堵问题。

win10家庭版有没有简单办法阻止强制更新
win10家庭版有没有简单办法阻止强制更新

Win10家庭版用户常受强制更新困扰。本文详解如何利用系统自带的暂停更新、活动时间和安排重启功能,在不破坏系统稳定性的前提下减少更新打扰,并分析注册表修改的风险及系统支持现状。

win10升级新版本后取消开机密码失效怎么修复
win10升级新版本后取消开机密码失效怎么修复

Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

win10更新没下载完反复重试该怎么停止任务
win10更新没下载完反复重试该怎么停止任务

Windows 10更新下载失败反复重试怎么办?不要直接停用服务。本文教你通过设置页面暂停更新、启用按流量计费连接以及调整活动时间,安全地暂时停止下载任务并避免意外重启。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。