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.mzph.cn/news/138262.shtml

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

相关文章

《QT从基础到进阶·二十》QThreadPool线程池的使用

什么情况下比较适合用线程池? 比如我有上百个任务要同时处理,难道开上百个线程?NO!!! 有了线程池的加持,自动给任务分配线程处理, 多线程不再是真爱~ 线程池创建: 1、自…

常见排序算法之插入排序类

插入排序,是一种简单直观的排序算法,工作原理是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增1的有序表。在实现过程中,它使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循…

7-Zip的介绍和【阿里云盘】的使用

7zip从入门到入坑 前言一、7-zip的介绍和安装1、基本介绍1)7-Zip 主要特征2)支持格式3)基础功能4)安装环境需求 2、基本操作(1)简便的界面(2)发生的问题 二、阿里云盘的使用1、“exe…

GZ038 物联网应用开发赛题第2套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第2套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评人员反映,不得扰乱赛场秩序; 3、遵守赛场纪律,尊重考评人员,…

京东数据分析:2023年9月京东笔记本电脑行业品牌销售排行榜

鲸参谋监测的京东平台9月份笔记本电脑市场销售数据已出炉! 9月份,笔记本电脑市场整体销售下滑。鲸参谋数据显示,今年9月份,京东平台上笔记本电脑的销量将近59万,环比下滑约21%,同比下滑约40%;销…

vivo 数据库降本实践:探索成本效益最优的数据库解决方案

vivo 自 2022 年开始调研、测试 OceanBase 至今,现已上线 17 个业务系统,涵盖日志类、分析类、交易类业务,实现了总资源节省 80%,开发、运维工作大幅简化。vivo 体系与流程 IT 部门数据库高级工程师廖光明在本文中,详细…

SQL 算数函数

AVG() 求数值列的平均值。 具体计算过程:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值。 语法: SELECT AVG(column_name) FROM table_name; 当参数 column_name 列中的数据均为空时,结果会返回 NULL。 …

Hadoop学习总结(使用Java API操作HDFS)

使用Java API操作HDFS,是在安装和配置Maven、IDEA中配置Maven成功情况下进行的,如果Maven安装和配置不完全将不能进行Java API操作HDFS。 由于Hadoop是使用Java语言编写的,因此可以使用Java API操作Hadoop文件系统。使用HDFS提供的Java API构…

Linux centos系统中添加磁盘

为了学习与训练文件系统或磁盘的分区、格式化和挂载/卸载,我们需要为虚拟机添加磁盘。根据需要,可以添加多块不同大小的磁盘。具体操作讨论如下,供参考。 一、添加 1.开机前 有两个地方,可选择打开添加硬盘对话框 (1)双击左侧…

Linux常用命令——bzmore命令

在线Linux命令查询工具 bzmore 查看bzip2压缩过的文本文件的内容 补充说明 bzmore命令用于查看bzip2压缩过的文本文件的内容,当下一屏显示不下时可以实现分屏显示。 语法 bzmore(参数)参数 文件:指定要分屏显示的.bz2压缩包。 在线Linux命令查询…

同城跑腿服务预约小程序的作用如何

无论是互联网服务化加快还是前几年疫情冲击,在同城生活服务场景中出现了很多商机,如外卖跑腿、校园跑腿、代买代送等,无论公司还是个人都借势不断提升自己品牌的影响力,并且依赖朋友圈不断提升生意营收。 同城跑腿品牌不少&#…

vue项目pdf文件的预览

1.下载 您可以在以下网址下载pdfjsLib&#xff1a;https://github.com/mozilla/pdf.js pdfjsLib是一个开源项目&#xff0c;您可以在GitHub上找到其源代码和相关资源。 2.放置文件位置 3.进入 在index.html引入 <script src"<% BASE_URL %>static/pdfjs-dist/b…

Linux系统编程——文件操作原理

文件描述符 1.文件描述符是文件的索引&#xff1a; 对于内核而言&#xff0c;所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时&#xff0c;内核向进程返回一个文件描述符。 int fd1 open("./file1",O_RDWR);…

【中间件篇-Redis缓存数据库04】Redis底层原理持久化、分布式锁

Redis底层原理 持久化 Redis虽然是个内存数据库&#xff0c;但是Redis支持RDB和AOF两种持久化机制&#xff0c;将数据写往磁盘&#xff0c;可以有效地避免因进程退出造成的数据丢失问题&#xff0c;当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当…

TortoiseSVN 状态图标不显示的两种解决办法

文章目录 TortoiseSVN 方式解决注册表方式解决 TortoiseSVN 方式解决 在桌面或者资源管理器中鼠标右键打开 TortoiseSVN 设置选择 Icon Overlays (图标覆盖)Status cache&#xff08;状态缓存&#xff09; 选择 ‘Shell’ 选择 Icon Overlays&#xff08;图标覆盖&#xff09;…

Run highlighted commands using IDE

背景 有时候在 IEDE 的命令行中输入命令&#xff0c;会弹出如下提示&#xff0c;或者命令被着了背景色了&#xff0c;是怎么回事&#xff1f; 其实就是提示你可以使用 IDEA 的功能替代命令行。比如使用ctrlenter或cmdenter之后使用的就是 IDEA 里的功能 直接enter运行&#x…

3 分钟看完 NVIDIA GPU 架构及演进

近期随着 AI 市场的爆发式增长&#xff0c;作为 AI 背后技术的核心之一 GPU&#xff08;图形处理器&#xff09;的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要&#xff0c;特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多&#xff0c;主要就是 NVIDIA、AM…

MySQL最新2023年面试题及答案,汇总版(4)【MySQL最新2023年面试题及答案,汇总版-第三十四刊】

文章目录 MySQL最新2023年面试题及答案&#xff0c;汇总版(4)01、一个6亿的表a&#xff0c;一个3亿的表b&#xff0c;通过外键tid关联&#xff0c;你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录&#xff1f;02、SQL语句优化的一些方法有哪些&#xff1f;03…

免费小程序HTTPS证书

随着互联网的快速发展&#xff0c;小程序已经成为人们日常生活中不可或缺的一部分。然而&#xff0c;在小程序的开发和使用过程中&#xff0c;安全问题一直是开发者们关注的重点。其中&#xff0c;HTTPS 证书是保障小程序安全的重要工具之一。在这方面&#xff0c;免费的小程序…

C++使用线程池模拟异步事件处理机制

在C很多框架中都有异步事件处理机制&#xff0c;这导致我们在看源码时经常很疑惑&#xff0c;难以理解&#xff0c;而其中包含的编程套路可能是一些成熟的技术&#xff0c;只是我们不熟悉&#xff0c;比如WebRTC中类似于Qt的信号槽机制&#xff0c;线程事件处理, 或者使用系统异…