-
分布式消息服务RocketMQ版5.x专业版规格 分布式消息服务RocketMQ版5.x专业版产品规格由以下七个维度定义: 资源规格:定义使用的弹性云服务器的规格类型。 磁盘类型:定义存储空间的磁盘类型,包含高I/O、超高I/O、通用型SSD和极速型SSD。 存储容量:定义实例可以保存的存储容量。 实例TPS:定义实例的TPS性能。 弹性TPS:定义实例的弹性TPS。 实例Topic数上限:定义实例可以创建的Topic数量。 实例消费组数上限:定义实例可以创建的消费组数量。 分布式消息服务RocketMQ版5.x专业版支持的产品规格如表4和表5所示。下表中TPS是指以普通消息类型、4KB消息大小为基准计算的每秒收发消息的总条数。如果消息类型为定时消息/延时消息/事务消息,发送消息的调用次数需要在普通消息基础上乘以5,接收消息的调用次数不需要乘以5。例如:每秒发送一条普通消息,TPS为1次/秒。每秒发送一条事务消息,TPS=1*5=5次/秒。 表4 实例规格说明(分布式消息服务RocketMQ版5.x专业版单机) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.p1.large.1 100 ~ 30000 500 200 500 表5 实例规格说明(分布式消息服务RocketMQ版5.x专业版集群) 资源规格 存储容量(GB) 实例TPS 弹性TPS 实例Topic数上限 实例消费组数上限 rocketmq.p2.large.8 200 ~ 60000 4000 2000 400 1500 rocketmq.p2.large.12 200 ~ 60000 6000 3000 400 1500 rocketmq.p2.large.20 200 ~ 60000 10000 5000 800 1500 rocketmq.p2.large.40 400 ~ 120000 20000 10000 800 1500 rocketmq.p2.large.100 400 ~ 120000 50000 25000 1000 2000 rocketmq.p2.large.150 400 ~ 120000 75000 37500 1000 2000 rocketmq.p2.large.200 800 ~ 240000 100000 50000 1500 4000 rocketmq.p2.large.300 800 ~ 240000 150000 50000 1500 4000
-
分布式消息服务RocketMQ版5.x基础版规格 分布式消息服务RocketMQ版5.x基础版产品规格由以下六个维度定义: 资源规格:定义使用的弹性云服务器的规格类型。 磁盘类型:定义存储空间的磁盘类型,包含高I/O、超高I/O、通用型SSD和极速型SSD。 存储容量:定义实例可以保存的存储容量。 实例TPS:定义实例的TPS性能。 实例Topic数上限:定义实例可以创建的Topic数量。 实例消费组数上限:定义实例可以创建的消费组数量。 分布式消息服务RocketMQ版5.x基础版支持的产品规格如表2和表3所示。下表中TPS是指以普通消息类型、4KB消息大小为基准计算的每秒收发消息的总条数。如果消息类型为定时消息/延时消息/事务消息,发送消息的调用次数需要在普通消息基础上乘以5,接收消息的调用次数不需要乘以5。例如:每秒发送一条普通消息,TPS为1次/秒。每秒发送一条事务消息,TPS=1*5=5次/秒。 表2 实例规格说明(分布式消息服务RocketMQ版5.x基础版单机) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 rocketmq.b1.large.1 100 ~ 30000 500 50 500 表3 实例规格说明(分布式消息服务RocketMQ版5.x基础版集群) 资源规格 存储容量(GB) 实例TPS 实例Topic数上限 实例消费组数上限 实例连接数上限 rocketmq.b2.large.4 200 ~ 60000 2000 100 1000 4000 rocketmq.b2.large.8 200 ~ 60000 4000 100 1000 4000 rocketmq.b2.large.12 200 ~ 60000 6000 100 1000 6000
-
分布式消息服务RocketMQ版4.8.0规格 分布式消息服务RocketMQ版4.8.0产品规格由以下七个维度定义: 资源规格:定义使用的弹性云服务器的规格类型。 代理个数:定义实例的规模。 磁盘类型:定义存储空间的磁盘类型,包含高I/O、超高I/O、通用型SSD和极速型SSD。 存储容量:定义单个代理可以保存的存储容量。 单个代理TPS:定义单个代理的TPS性能(以1KB消息大小为基准计算)。 单个代理Topic数上限:定义单个代理可以创建的Topic数量。 单个代理消费组数上限:定义单个代理可以创建的消费组数量。 分布式消息服务RocketMQ版4.8.0支持的产品规格如表1所示。 TPS(Transaction per second)是指每秒可以生产消息和消费消息的总次数,可以理解为对应规格每秒生产消息和消费消息的总吞吐量(以1KB消息大小为基准计算)。 表1 实例规格说明(分布式消息服务RocketMQ版4.8.0) 资源规格 代理(个) 存储容量(GB/代理) 单个代理TPS 单个代理Topic数上限 单个代理消费组数上限 rocketmq.4u8g.cluster.small 1 ~ 10 300 ~ 30000 15000 2000 2000 rocketmq.4u8g.cluster 1 ~ 10 300 ~ 60000 20000 4000 4000 rocketmq.8u16g.cluster 1 ~ 10 300 ~ 90000 25000 8000 8000 rocketmq.12u24g.cluster 1 ~ 10 300 ~ 90000 28000 12000 12000 rocketmq.16u32g.cluster 1 ~ 10 300 ~ 90000 30000 16000 16000
-
与Kafka、RabbitMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 3.x.x版本:支持。建议优先级大小设置在0-255之间。 AMQP-0-9-1版本:支持。优先级大小设置在1-9之间。 延迟队列 支持 不支持 3.x.x版本:不支持。 AMQP-0-9-1版本:支持。 死信队列 支持 不支持 支持 消息重试 支持 不支持 3.x.x版本:不支持。 AMQP-0-9-1版本:支持。 消费模式 支持客户端主动拉取和服务端推送两种方式。 客户端主动拉取。 支持客户端主动拉取和服务端推送两种模式。 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 3.x.x版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 AMQP-0-9-1版本:支持。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 3.x.x版本:不支持。 AMQP-0-9-1版本:支持。 消息过滤 支持 支持 3.x.x版本:不支持,但可以自行封装。 AMQP-0-9-1版本:支持。 多租户 支持 支持 支持 多协议支持 兼容RocketMQ协议。 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现。 跨语言支持 支持多语言的客户端。 采用Scala和Java编写,支持多种语言的客户端。 支持多种语言的客户端。 流量控制 RocketMQ 5.x支持基于实例规格的流量控制。 支持client、user和Topic级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序。 支持单分区(partition)级别的顺序性。 单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能时,才能实现消息有序。 安全机制 支持SSL认证。 支持SSL、SASL身份认证和读写权限控制。 3.x.x版本:支持SSL认证。 AMQP-0-9-1版本:支持ACL访问控制。 事务性消息 支持 支持 3.x.x版本:支持。 AMQP-0-9-1版本:不支持。
-
身份策略权限管理 DMS for RocketMQ服务支持身份策略授权。如表4所示,包括了DMS for RocketMQ身份策略中的所有系统身份策略。身份策略授权场景的系统身份策略和角色与策略授权场景的并不互通。 表4 DMS for RocketMQ系统身份策略 系统策略名称 描述 策略类别 DMSReadOnlyAccessPolicy 分布式消息服务只读权限。 系统身份策略 DMSUserAccessPolicy 分布式消息服务普通用户权限(没有实例创建、修改、删除、扩容)。 系统身份策略 DMSFullAccessPolicy 分布式消息服务所有权限。 系统身份策略 表5列出了DMS for RocketMQ常用操作与系统策略的授权关系,您可以参照该表选择合适的系统身份策略。 表5 RocketMQ实例常用操作与系统身份策略的关系 操作 DMSReadOnlyAccessPolicy DMSUserAccessPolicy DMSFullAccessPolicy 创建实例 × × √ 修改实例 × × √ 删除实例 × × √ 变更实例规格 × × √ 重启实例 × √ √ 查询实例信息 √ √ √
-
角色与策略权限管理 DMS for RocketMQ服务支持角色与策略授权。默认情况下,管理员创建的
IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DMS for RocketMQ部署时通过物理区域划分,为项目级服务。授权时,“授权范围”需要选择“指定区域项目资源”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果“授权范围”选择“所有资源”,则该权限在所有区域项目中都生效。访问DMS for RocketMQ时,需要先切换至授权区域。 如表2所示,包括了DMS for RocketMQ的所有系统权限。角色与策略授权场景的系统策略和身份策略授权场景的并不互通。 表2 DMS for RocketMQ系统权限 系统角色/策略名称 描述 类别 依赖关系 DMS FullAccess 分布式消息服务管理员权限,拥有该权限的用户可以操作所有分布式消息服务的功能。 系统策略 无 DMS UserAccess 分布式消息服务普通用户权限(没有实例创建、修改、删除、扩容)。 系统策略 无 DMS ReadOnlyAccess 分布式消息服务的只读权限,拥有该权限的用户仅能查看分布式消息服务数据。 系统策略 无 DMS Administrator 分布式消息服务的管理员权限。 系统角色 依赖Tenant Guest和VPC Administrator,在同项目中勾选依赖的角色。 DMS VPCAccess 分布式消息服务租户委托时需要授权的VPC操作权限。 系统策略 无 DMS KMSAccess 分布式消息服务租户委托时需要授权的KMS操作权限。 系统策略 无 DMS ELBAccess 分布式消息服务租户委托时需要授权的ELB操作权限。 系统策略 无 DMS VPCEndpointAccess 分布式消息服务租户委托时需要授权的VPCEndpoint操作权限。 系统策略 无 DMSAgencyCheckAccessPolicy 分布式消息服务检查租户委托权限需要授权的IAM操作权限。 系统策略 无 DMS BSSAccess 分布式消息服务租户委托时需要授权的BSS操作权限。 系统策略 无 表3列出了DMS for RocketMQ常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表3 RocketMQ实例常用操作与系统策略的关系 操作 DMS FullAccess DMS UserAccess DMS ReadOnlyAccess DMS VPCAccess DMS KMSAccess DMS ELBAccess DMS VPCEndpointAccess DMSAgencyCheckAccessPolicy DMS BSSAccess 创建实例 √ × × × × × × × × 修改实例 √ × × × × × × × × 删除实例 √ × × × × × × × × 变更实例规格 √ × × × × × × × × 重启实例 √ √ × × × × × × × 查询实例信息 √ √ √ × × × × × ×
-
单机实例和集群实例的差异 表3 单机实例和集群实例的差异 维度 单机 集群 使用场景 开发测试场景,对性能和可靠性无要求。 生产环境,无法容忍单点故障,有高可用诉求。 部署架构 采用单节点部署,高可用能力依赖于E
CS 的HA能力,节点故障期间无法提供服务。 采用多节点集群部署,具有分布式高可用能力,无单点故障问题,出现故障服务自动切换。 SLA 无 参考SLA 功能限制 支持存储空间变更,不支持实例规格变更 不支持跨版本变更 支持存储空间和实例规格变更 不支持跨版本变更
-
基础版和专业版的差异 分布式消息服务RocketMQ版5.x支持两种实例类型:基础版、专业版,它们的差异如表2所示。 表2 基础版和专业版的差异 维度 基础版 专业版 目标用户 入门级、对于成本敏感的用户。 对于可靠性、性能等要求高的进阶型、企业级用户。 产品定位 兼容开源的RocketMQ,提供基础的RocketMQ能力。 除了提供基础版能力外,还提供业务高可用、数据安全、信道加密等企业级特性。 产品功能 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 支持消息轨迹 支持SSL 支持ACL,但不支持为指定ACL用户配置Topic和消费组权限 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 支持消息轨迹 支持SSL 支持ACL,且支持为指定ACL用户配置Topic和消费组权限 支持弹性TPS 可用性 多可用区 多可用区 资源部署方式 资源共享 底层物理资源采用共享型部署方式,在大部分情况下规格可以达到对应的TPS,极端负载情况下可能出现TPS不稳定。 资源独享 底层物理资源采用独享型专有资源部署,保障性能的稳定,具备更好的可靠性和可服务性。
-
5.x版本的优势 与4.8.0版本相比,5.x版本具有如下优势: 架构更先进 5.x版本提供无状态的Proxy接入,解决无法通过代理访问的问题。5.x提供了Pop消费模式,降低消费堆积发生的概率。 开发门槛更低 支持开源gRPC协议SDK,提供更多种语言的SDK,API更加简洁友好。 成本更弹性 支持更小的规格,灵活弹性扩容,节约成本。专业版支持弹性TPS,弹性TPS能力适用于业务侧偶尔出现少量突发流量的场景。 兼容性好 完全兼容RocketMQ 4.8.0 SDK的接入方式,可以无缝升级到5.x。
-
与开源RocketMQ的差异 分布式消息服务RocketMQ版在兼容开源RocketMQ基础上,对版本特性做了一定程度的定制和增强。 表1 分布式消息服务RocketMQ版与开源RocketMQ的差异说明 功能项 分布式消息服务RocketMQ版 开源RocketMQ 延迟消息/定时消息 延迟消息:支持18个固定延迟时长,最长延迟2小时。 定时消息:支持任意延迟时长,4.8.0版本最长延迟1年,5.x版本最长延迟7天。 仅支持18个固定延迟时长,最长延迟2小时。 顺序消息 支持 支持 消息重试 支持 支持 死信消息 支持 支持 集群消费 支持 支持 广播消费 支持 支持 死信队列 支持 支持 消费重置 支持 支持 消息查询 支持 支持 加密传输 支持 支持 消息轨迹 支持 支持 事务消息 支持,事务消息大量堆积时,性能提升10倍 支持,事务消息大量堆积时,性能较差 死信导出 支持 不支持 数据转储 待规划 不支持 实例诊断 一键诊断消费问题 不支持 实例监控 支持以图表形式查看历史值,18+监控项 仅支持查看当前监控值,不支持CPU、内存等监控指标。 ACL访问控制 灵活配置,一键生效 配置复杂 运维扩容 极速扩容,一键生效 手动扩容,操作复杂
-
消费组 表3 消费组约束与限制 限制项 约束与限制 创建消费组的数量 消费组的数量根据产品规格确定,不支持修改。 当消费组的数量达到上限后,您无法继续创建消费组。 是否需要创建消费组、消费者、生产者 不需要单独创建消费组、生产者和消费者,在使用时自动生成,实例创建后,直接使用即可。 重置消费进度 重置消费进度可能会导致重复消费。 代理故障场景 实例中部分代理故障时,无法创建、修改和删除消费组,只能查询消费组。
-
消息 表4 消息约束与限制 限制项 约束与限制 消息存储时长 消息默认保留时间为48小时,支持修改,最大存储时长为720小时,超过保留时间会被自动删除。 消息大小 生产消息的最大长度为4MB,其中,消息属性(即消息本身的信息,比如Topic名称、消息类型、消息ID、消息发送时间等)大小均不能超过16KB。消息大小不支持修改。 消息大小超过限制会导致消息发送失败。 定时消息的延时时长 4.8.0版本支持的最大延时时长为1年,5.x版本为7天,且均不支持修改。 两个版本均支持在各自延时时长范围内设置任意时间的定时消息。
-
实例 表1 实例约束与限制 限制项 约束与限制 版本 实例创建后,不支持变更版本。建议服务端版本和客户端版本保持一致。 实例类型 5.x的基础版不支持直接升级到专业版。 存储空间 磁盘类型创建完成后不可修改。 只支持扩大存储空间,不支持减小存储空间。 扩容存储空间有次数限制,最多扩容20次。 代理个数 只支持增加代理个数,不支持减小代理个数。 代理规格 支持扩容代理规格。 若实例Broker数为1,扩容期间会导致Broker主备切换,造成业务中断30秒以内。 若实例Broker数大于1,且Topic分布到多个Broker上,则扩容期间会发生秒级连接闪断。顺序消息可能会发生乱序,请谨慎评估业务影响,建议您在业务低峰期扩容。 修改VPC/子网/可用区 实例创建后,不支持修改VPC/子网/可用区。 Request-Reply机制 不支持此机制。 修改配置参数 不支持调用开源接口修改配置参数。
-
步骤四:连接RocketMQ实例生产和消费消息 在ECS环境中进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息命令。 命令示例如下: JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 -p "hello rocketmq" 10.xxx.xxx.89:8100;10.xxx.xxx.144:8100:表示RocketMQ实例的“连接地址”,即11中记录的连接地址。 Topic01:表示RocketMQ实例下创建的Topic名称,即4中创建的Topic名称。 hello rocketmq:表示生产消息的内容,可自定义。 运行消费普通消息命令。 命令示例如下: JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "10.xxx.xxx.89:8100;10.xxx.xxx.144:8100" -t Topic01 如上图中BODY显示的内容即为消费消息的内容。 如需停止消费使用Ctrl+C命令退出。
-
相关信息 如果您想了解关于RocketMQ的相关概念,请参考RocketMQ基本概念。 RocketMQ实例创建时,如果消费者客户端与生产者客户端无需通过密文传输,那么您可以关闭SSL。此时连接RocketMQ实例生产和消费消息的操作请参见使用客户端连接RocketMQ(关闭SSL)。 如果您需要创建多个用户并为其赋予不同的Topic和消费组权限,以达到用户之间的权限隔离,那么您需要先开启ACL访问控制并配置ACL用户,具体操作请参考开启RocketMQ ACL访问和配置RocketMQ ACL用户。 如果您需要通过公网访问RocketMQ实例,请参见配置RocketMQ实例的公网访问。