-
产品架构 图1 产品架构示意图(以4.8.0版本为例) 示意图说明: Broker:负责接收和存储Producer发送的消息,或者转发消息到Consumer。一个Broker由一个主节点和两个备节点组成。 NameServer:负责接收和存储Broker中的元数据。 Producer:从NameServer获取元数据,然后将消息发送到Broker。 Consumer:从NameServer获取元数据,然后从Broker拉取消息。
-
支持的消息类型 分布式消息服务RocketMQ版支持4种消息类型。 普通消息:没有特殊功能的消息,区别于延迟消息、顺序消息和事务消息。 延迟消息/定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到特定时间后才会发送给消费者进行消费。 顺序消息:消费者按照消息发送的顺序来消费消息。 事务消息:提供类似X/Open XA的分布事务功能,通过事务消息能达到分布式事务的最终一致。
-
支持的高级特性 分布式消息服务RocketMQ版支持4种高级特性。 消息过滤:消费者根据分布式消息服务RocketMQ版设置的标签对已订阅Topic中的消息进行过滤,达到只消费需要的消息的目的。 消息重试:消费者消费某条消息失败后,分布式消息服务RocketMQ版根据重试机制将消息重新发送给消费者进行消费。如果重试次数到达设定的最大值时,消息尚未被成功消费,此消息将被发送到死信队列。 分布式消息服务RocketMQ版的重试机制如表1所示。 表1 消息重试机制 消费类型 重试时间间隔 最大重试次数 顺序消费 通过suspendTimeMillis设置重试时间间隔。 默认值为1000ms,即1s。 通过消费者的setMaxReconsumeTimes函数配置最大重试次数。若未设置参数值,默认为无限重试。 普通消费 重试时间间隔根据重试次数阶梯变化,如表2所示。 创建消费组时设置。 取值范围:1-16。 表2 普通消费重试时间间隔 重试次数 与上次的间隔时间 重试次数 与上次的间隔时间 1 10s 9 7min 2 30s 10 8min 3 1min 11 9min 4 2min 12 10min 5 3min 13 20min 6 4min 14 30min 7 5min 15 1h 8 6min 16 2h 延时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟固定时间后才会发送给消费者进行消费。生产者可以指定18个延时等级,每个延时等级对应的时间如表3所示。 表3 延时等级 延时等级 延时时间 延时等级 延时时间 1 1s 10 6min 2 5s 11 7min 3 10s 12 8min 4 30s 13 9min 5 1min 14 10min 6 2min 15 20min 7 3min 16 30min 8 4min 17 1h 9 5min 18 2h 定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到设定的时间点后才会发送给消费者进行消费。分布式消息服务RocketMQ版支持任意时间的定时消息,最大推迟时间可达到1年。同时也支持定时消息的取消。 2022年3月30日及以后购买的实例支持定时消息功能,在此之前购买的实例不支持此功能。
-
细粒度授权 使用自定义细粒度策略,请使用管理员用户登录
IAM 控制台,按需选择DMS的细粒度权限进行授权操作。DMS for RocketMQ细粒度权限依赖说明请参见表3。 表3 DMS for RocketMQ细粒度权限依赖说明 权限名称 权限描述 权限依赖 dms:instance:list 查看实例列表 无 dms:instance:get 查看实例详情信息 无 dms:instance:create 创建实例 vpc:vpcs:get vpc:ports:create vpc:securityGroups:get vpc:ports:get vpc:subnets:get vpc:vpcs:list vpc:publicIps:get vpc:publicIps:list vpc:ports:update vpc:publicIps:update vpc:ports:delete dms:instance:getBackgroundTask 查看实例后台任务详情 无 dms:instance:deleteBackgroundTask 删除实例后台任务 无 dms:instance:modify 修改实例 vpc:vpcs:get vpc:ports:create vpc:securityGroups:get vpc:ports:get vpc:subnets:get vpc:vpcs:list vpc:publicIps:get vpc:publicIps:list vpc:ports:update vpc:publicIps:update vpc:ports:delete dms:instance:delete 删除实例 无
-
DMS for RocketMQ权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DMS for RocketMQ部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DMS for RocketMQ时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DMS for RocketMQ服务,管理员能够控制IAM用户仅能对实例进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,DMS for RocketMQ支持的API授权项请参见细粒度策略支持的授权项。 如表1所示,包括了DMS for RocketMQ的所有系统权限。 表1 DMS for RocketMQ系统权限 系统角色/策略名称 描述 类别 依赖关系 DMS FullAccess 分布式消息服务管理员权限,拥有该权限的用户可以操作所有分布式消息服务的功能。 系统策略 无 DMS UserAccess 分布式消息服务普通用户权限(没有实例创建、修改、删除、扩容)。 系统策略 无 DMS ReadOnlyAccess 分布式消息服务的只读权限,拥有该权限的用户仅能查看分布式消息服务数据。 系统策略 无 DMS VPCAccess 分布式消息服务租户委托时需要授权的VPC操作权限。 系统策略 无 DMS KMSAccess 分布式消息服务租户委托时需要授权的KMS操作权限。 系统策略 无 DMS Administrator 分布式消息服务的管理员权限。 系统角色 依赖Tenant Guest和VPC Administrator。 DMS ELBAccess 分布式消息服务租户委托时需要授权的ELB操作权限。 系统策略 无 DMS VPCEndpointAccess 分布式消息服务租户委托时需要授权的VPCEndpoint操作权限。 系统策略 无 DMSAgencyCheckAccessPolicy 分布式消息服务检查租户委托权限需要授权的IAM操作权限。 系统策略 无 表2列出了DMS for RocketMQ常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 常用操作与系统策略的关系 操作 DMS FullAccess DMS UserAccess DMS ReadOnlyAccess DMS VPCAccess DMS KMSAccess DMS ELBAccess DMS VPCEndpointAccess DMSAgencyCheckAccessPolicy 创建实例 √ × × × × × × × 修改实例 √ × × × × × × × 删除实例 √ × × × × × × × 变更实例规格 √ × × × × × × × 查询实例信息 √ √ √ × × × × ×
-
电商应用 电商应用存在诸多难题: 电商场景中通常会涉及到订单、支付和通知等等场景的业务处理。业务链通常都是多个系统相互协作完成一次作业,上层服务强依赖于下层服务,上层服务的性能会强依赖于下层服务,当业务链过深,则会严重影响外层服务的性能和用户体验。 在电商促销活动中,需要用户拥有订阅通知的能力。 分布式消息服务RocketMQ版为搭建电商系统提供了更多的选择。 分布式消息服务RocketMQ版可以解除多个业务系统之间的耦合度,提升各系统的处理能力和响应速度。 分布式消息服务RocketMQ版提供的定时、延迟等能力,满足需要订阅通知的电商场景。
-
身份认证 无论用户通过控制台还是API访问DMS for RocketMQ,都会要求访问请求方出示身份凭证,并进行身份合法性校验,同时提供登录保护和登录验证策略加固身份认证安全。 DMS for RocketMQ基于
统一身份认证 服务(Identity and Access Management,简称IAM),支持三种身份认证方式:用户名密码、访问密钥、临时访问密钥。同时还提供登录保护及登录验证策略。
-
相关信息 如果您想了解关于RocketMQ的相关概念,请参考RocketMQ基本概念。 RocketMQ实例创建时,如果消费者客户端与生产者客户端无需通过密文传输,那么您可以关闭SSL。此时连接RocketMQ实例生产和消费消息的操作请参见使用客户端连接RocketMQ(关闭SSL)。 如果您需要创建多个用户并为其赋予不同的Topic和消费组权限,以达到用户之间的权限隔离,那么您需要先开启ACL访问控制并配置ACL用户,具体操作请参考开启RocketMQ ACL访问和配置RocketMQ ACL用户。 如果您需要通过公网访问RocketMQ实例,请参见配置RocketMQ实例的公网访问。
-
步骤四:连接RocketMQ实例生产和消费消息 在E
CS 环境中进入“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实例。实例中的虚拟机资源会存储Topic信息。 进入购买RocketMQ实例页面。 在“快速购买”页签,设置实例基础配置,如图2所示,配置详情请参考表2。 表2 设置实例基础配置 参数 说明 计费模式 选择“按需计费”,即先使用再付费,按照RocketMQ实例实际使用时长计费,秒级计费,按小时结算。 区域 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 选择“华北-北京四”。 可用区 可用区指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 选择1个可用区。 图2 设置实例基础配置 设置实例规格和存储空间,如图3所示,配置详情请参考表3。 表3 设置实例规格和存储空间 参数 说明 套餐规格 选择“综合推荐”中的“入门规格”。针对入门级用户,提供兼容RocketMQ协议的基础版小规格实例,适用于性能诉求不高、时延容忍度较高的成本敏感业务或者预发环境等。 存储空间 根据实际需要选择存储RocketMQ数据的磁盘类型和磁盘大小。 RocketMQ实例创建后,磁盘类型不支持修改。 磁盘类型选择“超高I/O”,磁盘大小设置为“200GB”。 图3 设置实例规格和存储空间 设置实例网络环境信息,如图4所示,配置详情请参考表4。 表4 设置实例网络环境信息 参数 说明 虚拟私有云 虚拟私有云在RocketMQ实例创建完成后,不支持修改。 选择准备工作中设置好的虚拟私有云。 子网 子网在RocketMQ实例创建完成后,不支持修改。 选择准备工作中设置好的子网。 安全组 选择准备工作中设置好的安全组。 图4 设置实例网络环境信息 设置实例的访问方式,如图5所示,配置详情请参考表5。 表5 设置实例访问方式 参数 说明 公网访问 开启公网访问需要绑定弹性IP地址。此处选择关闭公网访问。 加密方式 开启SSL,表示服务端与客户端之间通过密文传输,安全性较高,性能较低。此处选择配置为“SSL”。 图5 设置实例访问方式 设置实例高级配置,如图6所示,配置详情请参考表6,其他参数保持默认设置。 表6 设置实例高级配置 参数 说明 实例名称 实例名称支持自定义,但需要符合命名规则:长度为4~64个字符,由英文字母开头,只能由英文字母、数字、中划线、下划线组成。 此处配置为“rocketmq-test”。 企业项目 该参数针对企业用户使用。企业项目是对企业不同项目间资源的分组和管理,属于逻辑隔离。 此处选择“default”。 ACL访问控制 开启ACL访问控制可以对生产消息和消费消息进行权限管理。此处选择关闭ACL访问控制。 标签 标签是RocketMQ实例的标识。此处不设置标签。 描述 描述是对实例的补充说明。此处不填写描述信息。 图6 设置实例高级配置 填写完上述信息后,单击“确认订单”,进入“确认配置”页面。 确认实例信息无误后,勾选“华为云用户协议”,并单击“提交”请求。 在实例列表页面,查看RocketMQ实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。 实例创建成功后,单击实例名称,进入实例概览页面。 记录实例的连接地址,便于生产和消费消息时使用。 图7 记录实例连接地址
-
操作流程 图1 RocketMQ使用流程 准备工作。 在创建RocketMQ实例前,您需要完成注册华为云并实名认证、为账户充值、为用户添加操作权限、创建VPC和子网、创建安全组、创建弹性云服务器并配置环境的准备工作。 创建RocketMQ实例。 在创建实例时,您需要开启SSL、关闭ACL,并配置已创建的VPC和子网、安全组。 创建Topic。 在实例创建成功后,您需要创建Topic,用于发送与接收消息。 连接RocketMQ实例生产和消费消息。 使用客户端连接实例,并通过命令行生产消费消息。
-
计费模式概述 分布式消息服务RocketMQ版提供包年/包月和按需计费两种计费模式,以满足不同场景下的用户需求。 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。购买周期越长,享受的折扣越大。一般适用于业务需求量长期稳定的成熟业务。 按需计费:一种后付费模式,即先使用再付费,按照RocketMQ实例实际使用时长计费,秒级计费,按小时结算。按需计费模式允许您根据实际业务需求灵活地调整资源使用,无需提前预置资源,从而降低预置过多或不足的风险。一般适用于电商抢购等业务需求量瞬间大幅波动的场景。 表1列出了两种计费模式的区别。 表1 计费模式 计费模式 包年/包月 按需计费 付费方式 预付费 按照订单的购买周期结算。 后付费 按照RocketMQ实例实际使用时长计费。 计费周期 按订单的购买周期计费。 秒级计费,按小时结算。 适用计费项 实例费用、存储空间费用 实例费用、存储空间费用 变更计费模式 支持变更为按需计费模式。 但包年/包月计费模式到期后,按需的计费模式才会生效。 包年/包月变更按需计费时,生效时间分为以下两种: 包年/包月资费模式到期后,按需的资费模式才会生效。 提交变更后,按需的资费模式立即生效。 支持变更为包年/包月计费模式。 变更规格 支持变更实例规格。 支持变更实例规格。 回收站中实例是否计费 开启回收站策略的包年/包月实例,退订后会存入回收站中,此时不收取实例费用,但是会按需收取存储空间费用。 从回收站中恢复的包年/包月实例,计费模式会变为按需计费。 开启回收站策略的按需实例,删除后会存入回收站中,此时不收取实例费用,按需收取存储空间费用。 适用场景 适用于可预估资源使用周期的场景。对于长期使用者,推荐该方式,价格比按需计费模式更优惠。 适用于资源需求波动的场景,可以随时开通,随时删除。 父主题: 计费模式
-
计费周期 按需计费RocketMQ实例按秒计费,每一个小时整点结算一次费用(以UTC+8时间为准),结算完毕后进入新的计费周期。计费的起点以RocketMQ实例创建成功的时间点为准,终点以实例删除时间为准。 例如,您在8:45:30购买了一个按需计费的RocketMQ实例,然后在8:55:00将其删除,则计费周期为8:00:00 ~ 9:00:00,在8:45:30 ~ 8:55:30间产生费用,该计费周期内的计费时长为600秒。
-
变更配置后对计费的影响 如果您在购买按需计费实例后变更了实例规格,会产生一个新订单并开始按新规格的价格计费,旧订单自动失效。 如果您在一个小时内变更了实例规格,将会产生多条计费信息。每条计费信息的开始时间和结束时间对应不同规格在该小时内的生效时间。 例如,您在9:00:00购买了一个按需计费实例,实例规格为rocketmq.4u8g.cluster*1,并在9:30:00升配为rocketmq.8u16g.cluster*1,那么在9:00:00 ~ 10:00:00间会产生两条计费信息。 第一条对应9:00:00 ~ 9:30:00,实例规格按照rocketmq.4u8g.cluster*1计费。 第二条对应9:30:00 ~ 10:00:00,实例规格按照rocketmq.8u16g.cluster*1计费。
-
适用计费项 分布式消息服务RocketMQ版对您选择的RocketMQ实例和RocketMQ的磁盘存储空间收费。以下计费项支持按需计费。 表1 适用计费项 计费项 说明 实例费用 4.8.0版本的实例费用包括代理规格和代理数量。 5.x基础版和专业版的实例费用包括TPS和部署类型。 存储空间费用 总存储空间的费用。 4.8.0版本时,总存储空间的费用为单个代理的存储空间*代理数量。 弹性TPS费用 5.x专业版时,如果开启弹性TPS功能,则会按照超过实例基础规格TPS上限的增量部分进行计费。 取值为计费周期即1小时内,增量部分TPS的最大值。 假设您计划购买一个4.8.0版本的RocketMQ实例,其存储空间为300GB。在购买RocketMQ实例页面底部,您将看到所需费用的明细,如图1所示。 图1 配置费用示例 配置费用将包括以下部分: 实例费用:根据所选配置(包括代理规格和代理数量)计算的费用。 存储空间费用:磁盘类型和总磁盘存储空间(单个代理的存储空间*代理数量)的费用。