Apache RocketMQ - 概述

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

如何从互联网时代演进到云时代?

1. 消息队列演进史

操作系统、数据库、中间件是基础软件的三驾马车,而消息队列是其中最经典的中间件之一,已经有30多年的历史了。

  • 第一阶段(1980~2000年):其中最具代表性的为IBM MQ,价格昂贵,面相高端企业,MQ本身的软件架构是单体架构。
  • 第二阶段(2000~2007年):进入00年代后,初代开源消息队列崛起,诞生了JMS、AMQP两大标准,与之对应的初代开源消息队列的两大实现:ActiveMQ、RabbitMQ,它们共同引领了初期的开源消息队列的技术,开源也极大的促进了消息队列的流行,降低了使用的门槛,技术普惠化,逐渐成为企业级架构的标配,相比于今天而言,这一类MQ主要还是面向于传统的企业级应用场景,它们的流量一般都比较小,对横向扩展性的需求也没那么强。
  • 第三阶段(2007~2017年):就是PC互联网和移动互联网爆发的阶段了,由于传统的消息队列(ActiveMQ、RabbitMQ),它们都没办法承受亿级用户的访问流量以及海量的数据传输,于是在这个过程中就但诞生了所谓的互联网消息队列,它的核心能力是全面采用了分布式的架构,具备了很强的横向扩展能力,比较典型的开源代表有: Kafka以及RocketMQ,闭源的还有淘宝的Notify,Kafka的诞生还将消息中间件从传统的消息领域延伸到了流领域,从分布式应用的异步解耦的场景延伸到大数据的流存储跟流计算的场景。
  • 第四阶段(2014~至今):最近这几年 - 云计算、物联网(IoT)、云原生、大数据,它们又引领了新的浪潮。

互联网时代的 RocketMQ 

RocketMQ的诞生背景

虽然在当时业界已经存在不少商业或开源的消息队列,比如IBM MQ、ActiveMQ、RabbitMQ,但无一例外,这些消息队列它们都诞生于传统的企业级应用的场景,它们没办法承担互联网对于高并发、无限横向扩展的苛刻要求,以RabbitMQ为例,RabbitMQ的队列流量与存储负载都是单机的,无法满足业务横向扩展的需求,它是没法根据互联网业务的爆发式发展而进行横向扩展的。

当时另外一款采用分布式架构、具备无限横向扩展能力的消息队列是Kafka,但是它在那个时候它主要用在日志传输的场景,它在稳定性方面还未经过大规模核心业务的验证,而且它也比较偏向于简单的log型的消息队列,没办法满足互联网电商对于复杂消息功能特性的诉求,比如一些消息过滤或者一些延迟消息等;另一方面的话,传统的消息队列它没办法解决电商交易对于分布式一致性的要求。通过消息队列实现应用的异步解耦之后,电商业务还需要保证/保障不同的上下游应用,对订单的状态要能达到最终的一致,否则将会产生大量的脏数据,导致大量的业务错误

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

于是为了解决电商业务对于消息队列的高性能、一致性、无限扩展等需求,自研消息队列就成了当时阿里唯一的出路,也就是在这个大背景下面,互联网消息队列RocketMQ应运而生。

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

优势一:支撑超大规模复杂业务的能力,具备丰富的消息特性;

优势二:数据一致性RocketMQ在一致性方面打造了多个关键的特性,最有代表性的是分布式事务消息,RocketMQ是第一个实现该种特性的消息队列,它可以保障交易的上下游业务对于订单状态达到最终的一致,于是这个方案也成为了现在异步消息一致性方案的事实标准,被多个互联网公司所采纳。除了分布式一致性之外,RocketMQ还提供了顺序消息的特性,满足顺序一致性的需求;

优势三:稳定性,稳定性可以认为是电商交易与金融场景最基本的特性,也是RocketMQ的根本同时,稳定性也不局限于数据与服务的高可用,RocketMQ从产品层面对稳定性进行了全方位的建设,如消息回溯的能力、消息轨迹的能力以及死信队列的能力(消息死信机制);

优势四:高性能,即便是在双十一的极限流量下面,RokcetMQ的写消息的延迟也是非常低的;同时RocketMQ它采用的是Shared - noting的分布式架构,架构极简,零外部依赖;另外在吞吐量方面也具备了无限扩展的能力,万亿级吞吐保证,同时满足微服务与大数据场景;它已经连续十年支撑了双十一的万亿级消息洪峰,为百万级的客户端实例提供低延迟的消息服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/171116.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win环境Jenkins高级配置各种插件和启动jar包

今天分享Jenkins高级配置各种插件,在看此篇之前必须先了解上一篇博客内容,因为此篇是在上篇的基础上完善的: 一、git仓库的多分支选择 想要多分支选择部署,需要全局安装Git parameter 插件 1、点击入口 来到 2、点击进入 安装一…

5. HTML常用标签

5.1 标签语义 学习标签是有技巧的&#xff0c;重点是记住每个标签的语义。简单理解就是指标签的含义。即这个标签是用来干嘛的。 根据标签的语义&#xff0c;在合适的地方给一个最为合理的标签。可以让页面结构给清晰。 5.2 标题标签 <h1>-<h6>(重要) HTML提供了…

Git详解及常用命令

前言 Git 是一个分布式版本控制系统&#xff0c;用于跟踪和管理项目的代码变化。它由Linus Torvalds在2005年创建&#xff0c;现在是开源社区中最流行的版本控制工具之一。 国内码云地址&#xff1a;工作台 - Gitee.com 版本控制系统 (VCS)&#xff1a;Git 用于跟踪文件和目录…

【Git】第四篇:基本操作(理解工作区、暂存区、版本库)

Git 工作区、暂存区和版本库 工作区&#xff1a;就是我们创建的本地仓库所在的目录暂存区&#xff1a; stage或index&#xff0c;一般放在.git(可隐藏文件)目录下的index文件&#xff08;.git/index&#xff09;中&#xff0c;所以我们把暂存区有时候也叫做索引&#xff08;in…

DNS域名解析

目录 1.概述 1.1产生原因 1.2作用 1.3连接方式 1.4因特网的域名结构 1.4.1拓扑 1.4.2分类 1.4.3域名服务器类型划分 2. DNS域名解析过程 2.1分类 2.2解析图 2.2.2过程分析 3.搭建DNS域名解析服务器 3.1.概述 3.2安装软件 3.3bind服务中三个关键文件 3.4主配置…

用excel计算一个矩阵的转置矩阵

假设我们的原矩阵是一个3*3的矩阵&#xff1a; 125346789 现在求它的转置矩阵&#xff1a; 鼠标点到一个空白的地方&#xff0c;用来存放结果&#xff1a; 插入-》函数&#xff1a; 选择TRANSPOSE&#xff0c;这个就是求转置矩阵的函数&#xff1a; 点击“继续”&#xff1a…

dcat admin 各种问题

样式问题 如何根据条件给表格数据栏添加背景色 use Illuminate\Support\Collection;protected function grid(){return Grid::make(new BookArticle(), function (Grid $grid) {... 其他代码// Collection的完整路径&#xff1a;Illuminate\Support\Collection;$grid->row…

ElasticSearch文档分析

ElasticSearch文档分析 包含下面的过程&#xff1a; 将一块文本分成适合于倒排索引的独立的 词条将这些词条统一化为标准格式以提高它们的“可搜索性”&#xff0c;或者 recall 分析器执行上面的工作。分析器实际上是将三个功能封装到了一个包里&#xff1a; 字符过滤器 首先&a…

项目生命周期分享

第一阶段&#xff1a; 项目启动&#xff0c;2天时间即可&#xff0c;需要输出项目进度计划 1.项目组成立1天&#xff0c;用来建立项目组&#xff0c;确定工作分工和工作方法&#xff0c;指定项目总体计划&#xff08;包括前期交流&#xff0c;需求收集&#xff0c;项目立项等…

【STM32 CAN】STM32G47x 单片机FDCAN作为普通CAN外设使用教程

STM32G47x 单片机FDCAN作为普通CAN外设使用教程 控制器局域网总线&#xff08;CAN&#xff0c;Controller Area Network&#xff09;是一种用于实时应用的串行通讯协议总线&#xff0c;它可以使用双绞线来传输信号&#xff0c;是世界上应用最广泛的现场总线之一。CAN协议用于汽…

【广州华锐互动】楼宇智能化VR虚拟教学系统

在如今的技术时代&#xff0c;教育行业正在逐步引入各种创新方法以提升教学质量。VR公司广州华锐互动开发的楼宇智能化VR虚拟教学系统就是其中的一种&#xff0c;它利用虚拟现实(VR)技术&#xff0c;为学生提供一种全新的、沉浸式的学习体验。 楼宇智能化VR虚拟教学系统涵盖综合…

openGauss学习笔记-121 openGauss 数据库管理-设置密态等值查询-使用JDBC操作密态数据库

文章目录 openGauss学习笔记-121 openGauss 数据库管理-设置密态等值查询-使用JDBC操作密态数据库121.1 连接密态数据库121.2 调用isValid方法刷新缓存示例121.3 执行密态等值查询相关的创建密钥语句121.4 执行密态等值查询相关的创建加密表的语句121.5 执行加密表的预编译SQL语…