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的分布式架构,架构极简,零外部依赖;另外在吞吐量方面也具备了无限扩展的能力,万亿级吞吐保证,同时满足微服务与大数据场景;它已经连续十年支撑了双十一的万亿级消息洪峰,为百万级的客户端实例提供低延迟的消息服务。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Sketch是什么软件,如何收费和获得免费版

Sketch软件为设计师构建了一个优秀的本地Mac应用程序。Sketch是整个设计过程的平台,通过基于Web的工具共享工作,获取反馈,测试原型,并将其移交给任何浏览器。Sketch软件的定价根据不同的许可类型和订阅计划而变化。本文从Sketch软…

18. 深度学习 - 从零理解神经网络

文章目录 本文目标预测趋势与关系波士顿房价预测 Hi, 你好。我是茶桁。 我们终于又开启新的篇章了,从今天这节课开始,我们会花几节课来理解一下深度学习的相关知识,了解神经网络,多层神经网络相关知识。并且,我们会尝…

网络安全自学手册

想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…

No module named ‘importlib.metadata‘

解决办法 参考博客 https://wenku.csdn.net/answer/45a1563cc02e9592dd1d1d28fe7b88e7 pip install importlib_metadata

使用U盘安装ubuntu22操作教程

U盘启动 将烧录好的U盘,插上待安装系统的电脑 服务器在开机之后长按【ESC键】进入BIOS选项中,选择对应的U盘启动 如下图,在界面中“USB”选项就是我的U盘,第一启动项选择U盘启动,其他启动项不动,选择后按F…

③【操作表数据】MySQL添加数据、修改数据、删除数据

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL添加数据、修改数据、删除数据 &#x1f…

让旗下产品受到更多用户认可,GNC健安喜登陆中国国际进口博览会

11月5日-10日,第六届中国国际进口博览会(以下简称“中国进博会”)在上海国家会展中心正式起航。自2018年首次举办以来,中国进博会受到了无数参展企业的推崇,无数制造商、采购商的追捧。随着参会企业的逐年增长&#xf…

辐射骚扰整改思路及方法:对共模电流的影响?|深圳比创达电子EMC

某产品首次EMC测试时,辐射、静电、浪涌均失败。本篇文章就“原理探究:对共模电流的影响”问题进行详细讨论。 现在来研究左侧的磁场分布情况。分别对两根导线使用右手螺旋定则可以发现,两根导线的磁场均为顺时针方向,即磁场是互相…

Java后端开发——JDBC入门实验

JDBC(Java Database Connectivity)是Java编程语言中用于与数据库建立连接并进行数据库操作的API(应用程序编程接口)。JDBC允许开发人员连接到数据库,执行各种操作(如插入、更新、删除和查询数据&#xff09…

代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数

前言 在今天的题目开始之前,让我们来回顾一下之前的知识,动规五部曲 1.确定dp数组含义 2.确定dp数组的递推公式 3.初始化dp数组 4.确定遍历顺序 5.打印dp数组来排错 tips: 1.当求取物品有限的时候用0-1背包,求取物品无限的时候用完全背包 结果是排列还是组合也有说法,当结果是组…

如何选择最适合的知识付费小程序开发工具?

在选择适合的知识付费小程序开发工具时,需要考虑开发者的技能水平、项目需求、平台兼容性以及用户体验。下面将介绍一些常用的开发工具,并提供一些选择工具的考虑因素。 1. 微信小程序开发工具 微信小程序是知识付费小程序的一个常见平台,…

生活污水处理一体化处理设备有哪些

生活污水处理一体化处理设备有多种类型,包括但不限于以下几种: 鼓风机:提供曝气系统所需的气流。潜水污水提升泵:将污水从低处提升到高处。旋转式滚筒筛分机:对污水中的悬浮物进行分离和筛选。回旋式格栅:…

LVS NAT 模式

1.3.2. LVS DR 模式 模式(局域网改写 (局域网改写 mac 地址) ①.客户端将请求发往前端的负载均衡器,请求报文源地址是 CIP,目标地址为 VIP。 ②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址&am…

股票四倍杠杆什么意思?

股票四倍杠杆是指投资者通过借款或使用金融衍生品,以增加其投资股票的能力,达到放大投资回报的目的。具体来说,投资者可以通过向券商或银行等金融机构借入资金,或者使用融资融券等金融衍生品,以增加其购买股票的资本&a…

看李广的故事:发现团队管理之道

在漠北之战中,李广因迷失道路而延误了军期。因李广年事已高,无法承受幕府的责难,最终选择在军前自刎而死。 这一事件令人痛惜,不禁让人想起在工作中遇到的类似情况。有些同事因为突然离职,让领导感到愕然,…

【python小游戏】飞机大作战源码分享(附完整源码+图片资源可直接运行)

效果演示 源码 plane_main1.py import pygame from plane_sprites import * import timeclass PlaneGame(object):"""飞机大战主游戏"""def __init__(self):print("游戏初始化")# 1. 创建游戏的窗口self.screen pygame.display.set…

WPF中数据绑定验证深入讲解

WPF中数据绑定验证深入讲解 WPF在用户输入时,提供了验证功能,通常验证使用以下两种方式来实现: 在数据对象中引发错误。通常是在属性设置过程中抛出异常,或者在数据类中实现INotifyDataErrorInfo或IDataErrorInfo接口。在绑定级…

epoll实现 IO复用

1、epoll实现 IO复用 epoll的提出--》它所支持的文件描述符上限是系统可以最大打开的文件的数目;eg:1GB机器上,这个上限10万个左右。 每个fd上面有callback(回调函数)函数,只有活跃的fd才有主动调用callback,不需要轮询…

【Python爬虫】网页抓取实例之淘宝商品信息抓取

之前我们已经说过网页抓取的相关内容 上次我们是以亚马逊某网页的产品为例 抓取价格、品牌、型号、样式等 该网页上价格、品牌、型号、样式等 都只有一个 如果网页上的目标内容 根据不同规格有多个 又该怎么提取呢? ▼如下图所示 当机身颜色、套餐、存储容量…

python3.8.10虚拟环境安装talib总报平台不匹配

目录 环境: 需求: 问题: 概述 过程及解决 解决方案总结 环境: 操作系统:window10、64位 开发工具:pycharm python版本:python3.8.10 需求: 在python3.8.10的虚拟环境中安…