分布式消息服务RocketMQ是一款低成本、高可靠、高性能的消息中间件产品,兼容开源RocketMQ客户端,提供高效可靠的消息传递服务,解决分布式应用系统之间的消息数据通信难题,用于系统间的解耦,用户只需专注业务,无需部署运维,适用于电商、金融、政企等多样业务场景。
产品示意图
分布式消息服务RocketMQ发布订阅基本流程如下:
1、producer生产者连接nameserver,产生数据放入不同的Topic;
2、对于RocketMQ,一个Topic可以分布在各个Broker上,我们可以把一个Topic分布在一个Broker上的子集定义为一个Topic分片;
3、将Topic分片再切分为若干等分,其中的一份就是一个Queue。每个Topic分片等分的Queue的数量可以不同,由用户在创建Topic时指定;
4、consumer消费者连接nameserver,根据broker分配的Queue来消费数据。
核心组件
分布式消息服务RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应1台或者多台服务器,每个Broker可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的Broker。Message Queue用于存储消息的物理地址,每个Topic中的消息地址存储于多个Message Queue中。ConsumerGroup由多个Consumer 实例构成。更多信息请参见产品架构。
开源对比
相较于开源自建RocketMQ,分布式消息服务RocketMQ在自动化部署、运维监控、增强能力、延迟消息/定时消息、ACL访问控制等方面更具优势。更多信息请参见开源对比。
支持的消息类型
分布式消息服务RocketMQ支持的消息类型包括普通消息、顺序消息、事务消息与延时消息。
- 普通消息:RocketMQ中无特性的消息,普通消息主要包含同步消息和异步消息两种。
- 顺序消息:指消费消息的顺序要同发送消息的顺序一致,在RocketMQ中,主要有两种有序消息:全局有序消息和局部有序消息(又叫普通有序消息、分区有序消息)。
- 事务消息:提供类似X/Open XA的分布式事务功能来确保业务发送方和MQ消息的最终一致性,其本质是通过半消息(prepare消息和commit消息)的方式把分布式事务放在MQ端来处理。
- 延时消息:生产者将消息发送到消息队列RocketMQ服务端,设计消费时延,在预设的时间后才可以被消费者消费。
更多信息请参见功能特性。
功能特性
分布式消息服务RocketMQ的功能特性主要体现在以下几个方面:
访问接口
支持通过API调用,创建队列、查询消息监控指标、查询消息内容等。
队列能力
支持多种消息类型,包括普通队列(高并发场景)、FIFO有序队列(顺序信息场景)、严格有序队列。
消息能力
支持消息过滤、消息复用、消息重试、消息回溯、消息数据主动删除以及消息广播等能力。
安全防护
提供云审计进行租户管理操作的记录。
运维监控
提供主题、订阅组、生产者、消费者、队列的管理;同时支持集群、主题、队列多维度指标监控。
更多信息请参见功能特性。
应用场景
分布式消息服务RocketMQ适用于电商、金融、政企等多样业务场景,通常用于业务的分布式系统异步通信、数据同步和交换以及削峰填谷等场景。更多信息请参见应用场景。
使用限制
分布式消息服务RocketMQ对Topic、Group等对象信息进行限制,使用时注意不要超过限制,以免程序出现异常。更多信息请参见使用限制。