开源消息中间件RocketMQ详解

消息队列RocketMQ 是阿里巴巴集团自主研发的专业消息中间件,基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询以及定时(延时)消息等一系列消息服务,是企业级互联网架构的核心产品,为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、可靠重试等互联网应用所需的特性,阿里巴巴将RocketMQ内核贡献给Apache基金会,已成为Apache孵化的顶级项目。

产品功能

特色功能

  • 集群消费:一个 Group ID 所标识的所有 Consumer 平均分摊消费消息。
  • 广播消费:允许同一个 Group ID 所标识的所有 Consumer 都各自消费某条消息一次。
  • 顺序消息:允许消息消费者按照消息发送的顺序对消息进行消费。
  • 事务消息:实现类似 X/Open XA 的分布事务功能,以达到事务最终一致性状态。(注意版本差异,最新版本支持事务消息,老版本不支持
  • 定时(延时)消息:允许消息生产者指定消息进行定时(延时)投递,最长支持 40 天。
  • 消息轨迹:通过消息轨迹,能清晰定位消息从发布者发出,经由消息队列 RocketMQ 服务端,投递给消息订阅者的完整链路,方便定位排查问题。(注意版本差异,最新版本支持消息链路,老版本不支持
  • 重置消费进度:根据时间重置消费进度,允许用户进行消息回溯或者丢弃堆积消息。
  • 死信队列:将无法正常消费的消息储存到特殊的死信队列供后续处理。
  • 大消息:支持最大 4 MB 消息。

管理工具

  • 开源Web 控制台(RocketMQ Console):支持 Topic 管理、生产者管理、消费者管理、消息查询、消息轨迹展示和查询。
  • OpenAPI:提供 API 便于将消息队列 RocketMQ 管理工具集成到自己的控制台。
  • mqadmin 命令集:提供一套丰富的管理命令集,以命令方式对消息队列 RocketMQ 服务进行管理。

应用场景

  • 系统间异步解耦
  • 分布式事务(事务消息)
  • IM实时通信(例如钉钉)
  • 实时计算分析(数据收集)
  • 流量削峰(大促期间减少服务器压力)
  • 大规模机器缓存同步(利用广播消费机制)
  • 日志服务

高级特性

三种发送方式

三种发送方式

  • 可靠同步发送:消息生产者向消息服务器发送消息,必须要等待接收到服务器响应结果,才能发送下一条消息(适用于大多数应用场景,例如重要邮件/短信通知、新用户注册送优惠券、支付成功送红包等等)
  • 可靠异步发送:消息生产者向消息服务器发送消息,不用等待服务器响应直接发送下一条消息,通过回调接口来接收和处理服务器响应结果。(性能上比可靠同步消息高,使用于对调用执行顺序没有要求的场景)
  • 单向发送(oneway):消息生产者只发送消息到消息服务器,服务器无响应,也不会触发回调。(适用于对消息可靠性要求不高的场景,例如日志收集等)
发送方式发送TPS发送结果反馈可靠性
同步发送不丢失
异步发送不丢失
单项发送最快可能丢失

消息类型

定时/延时消息

在这里插入图片描述

  • 定时消息:在当前时刻后的某一个特定时间投递消息。
  • 延时消息:当前时刻延迟一定时间后投递消息。

消费者存在消息堆积时,定时/延时消息将不能严格按照配置的时间进行消费。

事务消息

在这里插入图片描述

顺序消息(全局/分区顺序)

消息重试

消息过滤

广播消费和集群消费

消息轨迹

设计原理

MQ架构

http://rocketmq.apache.org/assets/images/rmq-basic-arc.png

  • Broker:消息服务端实例,用来存放消息,通过master、slaver一主一备模式来保证消息可靠,不会丢失。
  • NameServer:名称服务器,存储集群中每个Broker实例的元数据信息(Broker会定期更新存放在NameServer集群中每个名称服务器上的元数据),主要通过名称服务器来管理主题路由信息。

消息队列存储方式及存储模型

刷盘策略

堆积策略

高可用方案

开源消息中间件对比

控制台RocketMQ Console使用

最佳实践

开发常见问题

持续更新中…

在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值