微服务必备知识:Apache RocketMQ

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。目前市面上比较有名的中间件有:RabbitMQ、kafka、RocketMQApache RocketMQ是分布式消息和流数据平台,一个这函证具备低延退、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件,是企业数字化转型必须的核心、是基础性软件,已服务于阿里巴巴逾十年。

所属技术领域:

微服务

|名词定义|

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。目前市面上比较有名的中间件有:RabbitMQ、kafka、RocketMQ

Apache RocketMQ是分布式消息和流数据平台,一个这函证具备低延退、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件,是企业数字化转型必须的核心、是基础性软件,已服务于阿里巴巴逾十年。

|发展历程|

阿里巴巴最早是一个电商平台,内部有一套系统,同时承载了会员、订单、商品等应用,有上百人在维护,每天的提交和发布都非常复杂。为了更好的支撑快速发展的业务,阿里在2007年启动了“五彩石”项目,通过横向和纵向两个维度将这一单体应用拆分出用户中心,商品中心,交易中心,评价中心等平台型应用,这时候系统和系统之间的交互就变得非常重要。通常,系统和系统之间有两种交互方式,一种是同步方式,通过rpc来实现,一种是异步,阿里的第一代消息引擎 Notify就是基于这个背景下产生的,用于淘宝B2C业务系统和系统之间的消息流转。

紧接着在2010年,阿里B2B业务开始大规模使用 ActiveMQ,并打造了自己的消息引擎Napoli。但无论是Notify,还是Napoli,他们的存储都是基于关系型数据库,最大的隐患是容易在磁盘上造成堆积。

2011年,LinkedIn开源了自己的分布式消息引擎Kafka,Kafka拥有强大的日志处理和处理磁盘堆积的能力,随后我们用Java重写了Kafka的核心逻辑,并以MetaQ项目进行开源。但MetaQ在遇到淘宝海量数据交易场景时,出现了非常多的问题。为了解决这些问题,我们把MetaQ的存储从原先的partition全量数据存储模式优化为目录和数据文件分离的模式,这个版本我们命名为MetaQ2.0。但这种优化不能从根本上解决我们在大规模数据下遇到的问题,比如在系统宕机和扩容方面出现的Rebalance问题,随后我们决定去完全重写MetaQ2.0,才有了第一代的RocketMQ,为了体现RocketMQ是源于MetaQ 2.0,我们将其命名为RocketMQ 3.0。

2016年,我们在阿里云上线了RocketMQ的商业化产品阿里云消息队列MQ,帮助用户方便快捷的获得RocketMQ的消息发送和流数据处理能力。同年11月,我们将RocketMQ捐赠给Apache(版本升级为4.0),目的是希望更多的企业开发者加入到社区来共同发展RocketMQ。孵化期间,我们发现来自东南亚、包括美国的一些银行开始使用RocketMQ在跑PoC,这让我们感到非常欣慰。我们希望在未来,能够将RocketMQ建设成可以比肩Hadoop那样的生态。

2017年,不到10个月的时间里,RocketMQ从 Apache 毕业,成为Apache下的顶级项目,和 Hadoop 同规格。基于RocketMQ在各类场景下的丰富实践,我们将互联网业务对消息的需求进行抽象,形成了一套能满足大多数业务场景的标准模型,逐步发展成与厂商无关、平台无关的分布式消息及流处理领域的应用开发标准–OpenMessaging,并与10月进入Linux基金会。进入到2018年,团队和社区开始着手思考和构建下一代消息引擎– Apache RocketMQ 5.0,并大力发展Messaging生态,也希望这方面的专家能够加入我们,加入社区,一起打造OpenMessaging领域新标准。

|技术特点|

• 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型
• 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递
• 支持拉(pull)和推(push)两种消息模式
• 单一队列百万消息的堆积能力
• 支持多种消息协议,如 JMS、MQTT 等
• 分布式高可用的部署架构,满足至少一次消息传递语义
• 提供 docker 镜像用于隔离测试和云集群部署
• 提供配置、指标和监控等功能丰富的 Dashboard

|资料来源|

阿里云大学-视频网站
CSDN(发展历程部分)

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
128 1
|
1月前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
188548 162
|
8天前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接RabbitMQ时遇到Could not find any factory for identifier 'rabbitmq' that implements 'org.apache.flink.table.factories.DynamicTableFactory'错误,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
265 0
|
1月前
|
消息中间件 Java API
【微服务系列笔记】MQ消息可靠性
消息可靠性涉及防止丢失,包括生产者发送时丢失、未到达队列以及消费者消费失败处理后丢失。 确保RabbitMQ消息可靠性的方法有:开启生产者确认机制,确保消息到达队列;启用消息持久化以防止未消费时丢失;使用消费者确认机制,如设置为auto,由Spring确认处理成功后ack。此外,可开启消费者失败重试机制,多次失败后将消息投递到异常交换机。
53 1
|
1月前
|
消息中间件 Cloud Native 物联网
深度剖析 RocketMQ 5.0,Apache RocketMQ:如何从互联网时代演进到云时代?
从整体技术架构上学习 RocketMQ 5.0 的云原生架构、一体化架构,最后再分别从业务场景切入,详细介绍 RocketMQ 5.0 在不同的业务场景提供的能力和关键技术原理,包括业务消息、流处理、物联网以及面向云时代的事件驱动场景。
107716 1
|
1月前
|
消息中间件 缓存 API
|
1月前
|
Cloud Native Dubbo 应用服务中间件
Apache Dubbo 下一代云原生微服务挑战赛启动报名!五大赛题 50 万奖金池
Apache Dubbo 下一代云原生微服务挑战赛启动报名!五大赛题 50 万奖金池
|
1月前
|
消息中间件 RocketMQ Docker
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
63 0
|
1月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
113 10
|
1月前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
81 1

热门文章

最新文章

推荐镜像

更多