云服务器内容精选

  • 开启RocketMQ消息轨迹(Go) 在客户端开启消息轨迹的方法如下: 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 [root@ecs-test sarama]# go version go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 进入Go脚本所在的bin目录下。 执行“touch go.mod”命令新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.0 ) 生产者开启消息轨迹(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" ) func main() { namesrvs := []string{"192.168.0.1:8100"} traceCfg := &primitive.TraceConfig{ Access: primitive.Local, Resolver: primitive.NewPassthroughResolver(namesrvs), } p, _ := rocketmq.NewProducer( producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), producer.WithRetry(2), producer.WithTrace(traceCfg)) // 增加此行代码表示开启了消息轨迹。 err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } res, err := p.SendSync(context.Background(), primitive.NewMessage("topic1", []byte("Hello RocketMQ Go Client!"))) if err != nil { fmt.Printf("send message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", res.String()) } time.Sleep(10 * time.Second) err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } } 消费者开启消息轨迹(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/consumer" "github.com/apache/rocketmq-client-go/v2/primitive" ) func main() { namesrvs := []string{"192.168.0.1:8100"} traceCfg := &primitive.TraceConfig{ Access: primitive.Local, Resolver: primitive.NewPassthroughResolver(namesrvs), } c, _ := rocketmq.NewPushConsumer( consumer.WithGroupName("testGroup"), consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), consumer.WithTrace(traceCfg), // 增加此行代码表示开启了消息轨迹。 ) err := c.Subscribe("TopicTest", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { fmt.Printf("subscribe callback: %v \n", msgs) return consumer.ConsumeSuccess, nil }) if err != nil { fmt.Println(err.Error()) } // Note: start after subscribe err = c.Start() if err != nil { fmt.Println(err.Error()) os.Exit(-1) } time.Sleep(time.Hour) err = c.Shutdown() if err != nil { fmt.Printf("shutdown Consumer error: %s", err.Error()) } }
  • 开启RocketMQ消息轨迹(Java) 在客户端开启消息轨迹的方法如下: 生产者开启消息轨迹(除事务消息以外的消息类型) 构造函数的“enableMsgTrace”参数传入“true”,例如: DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", true); 生产者开启消息轨迹(事务消息) 构造函数的“enableMsgTrace”参数传入“true”,例如: TransactionMQProducer producer = new TransactionMQProducer(null, "ProducerGroupName", null, true, null); 消费者开启消息轨迹 构造函数的“enableMsgTrace”参数传入“true”,例如: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupName", true);
  • 基础版和专业版的差异 分布式消息服务RocketMQ版5.x支持两种实例类型:基础版、专业版,它们的差异如表2所示。 表2 基础版和专业版的差异 维度 基础版 专业版 目标用户 入门级、对于成本敏感的用户。 对于可靠性、性能等要求高的进阶型、企业级用户。 产品定位 兼容开源的RocketMQ,提供基础的RocketMQ能力。 除了提供基础版能力外,还提供业务高可用、数据安全、信道加密等企业级特性。 产品功能 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 不支持消息轨迹 支持SSL 支持ACL 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 支持消息轨迹 支持SSL 支持ACL 弹性TPS 可用性 多可用区 多可用区 资源部署方式 资源共享 底层物理资源采用共享型部署方式,在大部分情况下规格可以达到对应的TPS,极端负载情况下可能出现TPS不稳定。 资源独享 底层物理资源采用独享型专有资源部署,保障性能的稳定,具备更好的可靠性和可服务性。
  • 单机实例和集群实例的差异 表3 单机实例和集群实例的差异 维度 单机 集群 使用场景 开发测试场景,对性能和可靠性无要求。 生产环境,无法容忍单点故障,有高可用诉求。 部署架构 采用单节点部署,高可用能力依赖于E CS 的HA能力,节点故障期间无法提供服务。 采用多节点集群部署,具有分布式高可用能力,无单点故障问题,出现故障服务自动切换。 SLA 无 参考SLA 功能限制 支持存储空间变更,不支持实例规格变更 不支持跨版本变更 支持存储空间和实例规格变更 不支持跨版本变更
  • 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。
  • 到期后影响 图3描述了包年/包月RocketMQ实例各个阶段的状态。购买后,在计费周期内RocketMQ实例正常运行,此阶段为有效期;RocketMQ实例到期而未续费时,将陆续进入宽限期和保留期。 图3 包年/包月RocketMQ实例生命周期 到期预警 包年/包月RocketMQ实例在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 资源到期未续费,进入宽限期。 如果您的包年/包月RocketMQ实例到期未续费,RocketMQ实例会进入宽限期,RocketMQ实例状态变为“已过期”。宽限期内您可以正常访问RocketMQ实例,但以下操作将受到限制: 变更实例规格。 退订的包年/包月RocketMQ实例不会进入回收站,会被彻底删除。 资源宽限期到期未续费,进入保留期。 如果您在宽限期内仍未续费包年/包月RocketMQ实例,RocketMQ实例会进入保留期,RocketMQ实例状态变为“已冻结”,您将无法对处于保留期的包年/包月RocketMQ实例执行任何操作。 资源保留期到期未续费,释放且不可恢复。 如果包年/包月RocketMQ实例在保留期到期前仍未续费,那么RocketMQ实例将被释放,数据无法恢复。释放的实例会被彻底删除,不会进入回收站。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 适用计费项 分布式消息服务RocketMQ版对您选择的RocketMQ实例和RocketMQ的磁盘存储空间收费。以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 实例费用 4.8.0版本的实例费用包括代理规格和代理数量。 5.x基础版的实例费用包括TPS和部署类型。 存储空间费用 总存储空间(单个代理的存储空间*代理数量)的费用。随包年/包月RocketMQ实例创建的存储空间,其计费模式也为包年/包月。 假设您计划购买一个RocketMQ 4.8.0版本的实例,其存储空间为300GB。在购买RocketMQ实例页面底部,您将看到所需费用的明细,如图1所示。 图1 配置费用示例 配置费用将包括以下部分: 实例费用:根据所选配置(包括代理规格和代理数量)计算的费用。 存储空间费用:磁盘类型和总磁盘存储空间(单个代理的存储空间*代理数量)的费用。
  • 变更配置后对计费的影响 当前包年/包月RocketMQ实例资源的规格不满足您的业务需要时,您可以在RocketMQ实例控制台发起变更规格操作,变更时系统将按照如下规则为您计算变更费用: 资源升配:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 资源降配:新配置价格低于老配置价格,此时华为云会将新老配置的差价退给您。 这里以资源升配且无任何优惠的场景为例,假设您于2023/04/08在“华北-北京四”区域购买了一个包年/包月RocketMQ实例(rrocketmq.4u8g.cluster*1),购买时长为1个月,计划在2023/04/18变更规格为rocketmq.8u16g.cluster*1。旧配置价格为6300 元/月,新配置价格为12150 元/月。计算公式如下: 升配费用=新配置价格*剩余周期-旧配置价格*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=12(4月份剩余天数)/ 30(4月份最大天数)+ 8(5月份剩余天数)/ 31(5月份最大天数)=0.6581,代入公式可得升配费用=12150*0.6581-6300*0.6581=3849.89(元) 更多信息请参见变更资源规格费用说明。
  • 计费示例 假设您于2023/03/08 15:50:04在“华北-北京四”区域购买了一个包年/包月4.8.0版本的RocketMQ实例(规格:rocketmq.4u8g.cluster.small*1,总存储空间:超高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(超高I/O 300GB)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 您需要为每个计费周期预先付费,各项RocketMQ资源单独计费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 实例费用 实例规格单价 * 购买时长 请参见分布式消息服务RocketMQ版价格详情中的“实例价格”。 存储空间费用 存储空间单价 * 购买时长 请参见分布式消息服务RocketMQ版价格详情中的“存储价格”。 图2给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务RocketMQ版价格详情中的价格为准。 图2 包年/包月RocketMQ实例费用计算示例(华北-北京四区域)
  • 适用场景 包年/包月计费模式需要用户预先支付一定时长的费用,适用于长期、稳定的业务需求。以下是一些适用于包年/包月计费模式的业务场景: 稳定业务需求:对于长期运行且资源需求相对稳定的业务,如企业官网、在线商城、博客等,包年/包月计费模式能提供较高的成本效益。 长期项目:对于周期较长的项目,如科研项目、大型活动策划等,包年/包月计费模式可以确保在整个项目周期内资源的稳定使用。 业务高峰预测:如果能预测到业务高峰期,如电商促销季、节假日等,可提前购买包年/包月资源以应对高峰期的需求,避免资源紧张。 数据安全要求高:对于对数据安全性要求较高的业务,包年/包月计费模式可确保资源的持续使用,降低因资源欠费而导致的数据安全风险。
  • 计费说明 分布式消息服务RocketMQ版的计费项由实例费用和存储空间费用组成。具体内容如表1所示。 表1 分布式消息服务RocketMQ版计费项 计费项 计费项说明 适用的计费模式 计费公式 实例费用 4.8.0版本计费因子:代理规格和代理数量 5.x基础版计费因子:TPS和部署类型 包年/包月、按需计费 实例规格单价 * 购买时长 实例规格单价请参见分布式消息服务RocketMQ版价格详情中的“实例价格”。 存储空间费用 计费因子:云硬盘类型、容量 包年/包月、按需计费 云硬盘单价 * 购买时长 云硬盘单价请参见分布式消息服务RocketMQ版价格详情中的“存储价格”。
  • 计费示例 以包年/包月计费模式为例,假设您于2023/03/08 15:50:04在“华北-北京四”区域购买了一个包年/包月4.8.0版本的RocketMQ实例(规格:rocketmq.4u8g.cluster.small*1,总存储空间:超高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(超高I/O 300GB)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 图1给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务RocketMQ版价格详情中的价格为准。 图1 包年/包月RocketMQ实例费用计算示例(华北-北京四区域) 按需计费模式下,各计费项的计费示例请参见计费示例。
  • 变更配置后对计费的影响 如果您在购买按需计费实例后变更了实例规格,会产生一个新订单并开始按新规格的价格计费,旧订单自动失效。 如果您在一个小时内变更了实例规格,将会产生多条计费信息。每条计费信息的开始时间和结束时间对应不同规格在该小时内的生效时间。 例如,您在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计费。
  • 计费示例 假设您于2023/04/18 9:59:30在“华北-北京四”区域购买了一个按需计费4.8.0版本的RocketMQ实例(规格:rocketmq.4u8g.cluster.small*1,总存储空间:高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(高I/O 300GB),然后在2023/04/18 10:45:46将其删除,则: 第一个计费周期为9:00:00 ~ 10:00:00,在9:59:30 ~ 10:00:00间产生费用,该计费周期内的计费时长为30秒。 第二个计费周期为10:00:00 ~ 11:00:00,在10:00:00 ~ 10:45:46间产生费用,该计费周期内的计费时长为2746秒。 您需要为每个计费周期付费,各项RocketMQ资源单独计费,计费公式如表2所示。产品价格详情中标出了资源的每小时价格,您需要将每小时价格除以3600,得到每秒价格。 表2 计费公式 资源类型 计费公式 资源单价 实例费用 实例规格单价 * 购买时长 请参见分布式消息服务RocketMQ版价格详情中的“实例价格”。 存储空间费用 存储空间单价 * 购买时长 请参见分布式消息服务RocketMQ版价格详情中的“存储价格”。 图2给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务RocketMQ版价格详情中的价格为准。 图2 按需计费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秒。