云服务器内容精选

  • 跨VPC访问和通过DNAT访问实例 请按照表4设置安全组规则。 表4 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 9011 198.19.128.0/17 通过 VPC终端节点 实现跨VPC访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9011 0.0.0.0/0 使用DNAT访问Kafka实例(密文接入和明文接入都适用)。 入方向 TCP 9092 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(明文接入)。 入方向 TCP 9093 0.0.0.0/0 使用对等连接跨VPC访问Kafka实例(密文接入)。
  • 使用内网通过同一个VPC访问实例 客户端和实例是否使用相同的安全组? 是,如果保留了创建安全组后,系统默认添加的入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,则无需添加其他规则。否则,请添加表1所示规则。 表1 安全组规则 方向 协议 类型 端口 源地址 说明 入方向 TCP IPv4 9092 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(明文接入)。 入方向 TCP IPv6 9192 ::/0 使用内网通过同一个VPC访问Kafka实例(关闭SSL加密)。 入方向 TCP IPv4 9093 0.0.0.0/0 使用内网通过同一个VPC访问Kafka实例(密文接入)。 入方向 TCP IPv6 9193 ::/0 使用内网通过同一个VPC访问Kafka实例(开启SSL加密)。 否,执行2。 参考如下配置安全组规则。 假设客户端和Kafka实例的安全组分别为:sg-53d4、Default_All。以下规则,远端可使用安全组,也可以使用具体的IP地址,本章节以安全组为例介绍。 客户端所在安全组需要增加如下规则,以保证客户端能正常访问Kafka实例。 表2 安全组规则 方向 策略 协议端口 目的地址 出方向 允许 全部 Default_All 图1 配置客户端安全组 Kafka实例所在安全组需要增加如下规则,以保证能被客户端访问。 表3 安全组规则 方向 策略 协议端口 源地址 入方向 允许 全部 sg-53d4 图2 配置Kafka实例安全组
  • Kafka实例的SASL_SSL开关如何修改? 在“华北-北京一”、“中东-利雅得”、“拉美-圣保罗一”和“拉美-圣地亚哥”区域,Kafka SASL_SSL开关不支持购买实例后修改,在购买时,请慎重选择,如果购买后需要修改,需要重新购买实例。 除“华北-北京一”、“中东-利雅得”、“拉美-圣保罗一”和“拉美-圣地亚哥”以外的区域,集群版实例的SASL_SSL开关支持修改,具体步骤请参考修改实例的接入方式。单机版实例不支持SASL_SSL功能。 开启IPv6的实例不支持动态修改SASL_SSL开关。 父主题: 实例问题
  • 发起1对1聊天 用户在导航栏输入人员姓名,搜索人员,如图1所示。 图1 搜索 单击搜索结果中的人员,进入聊天会话。 图2 会话详情 在输入框内输入消息,相关消息说明如表1所示,完成后单击“发送”。 表1 消息发送说明 操作 说明 在输入框发送消息 支持文本消息、图片、表情、文件、视频的发送,最大支持500M。 发送表情 单击,选择表情后单击“发送”。 发送必达消息 单击,在弹出必达消息界面中输入信息,输入完成后单击“火速发送”。 说明: 必达消息最多支持1000字。 必达消息对方三分钟后未读,将自动转换成短信发送。 发送本地文件 单击,选择任意格式的本地文件的上传。
  • 开启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);
  • 单机实例和集群实例的差异 表3 单机实例和集群实例的差异 维度 单机 集群 使用场景 开发测试场景,对性能和可靠性无要求。 生产环境,无法容忍单点故障,有高可用诉求。 部署架构 采用单节点部署,高可用能力依赖于E CS 的HA能力,节点故障期间无法提供服务。 采用多节点集群部署,具有分布式高可用能力,无单点故障问题,出现故障服务自动切换。 SLA 无 参考SLA 功能限制 支持存储空间变更,不支持实例规格变更 不支持跨版本变更 支持存储空间和实例规格变更 不支持跨版本变更
  • 基础版和专业版的差异 分布式消息服务RocketMQ版5.x支持两种实例类型:基础版、专业版,它们的差异如表2所示。 表2 基础版和专业版的差异 维度 基础版 专业版 目标用户 入门级、对于成本敏感的用户。 对于可靠性、性能等要求高的进阶型、企业级用户。 产品定位 兼容开源的RocketMQ,提供基础的RocketMQ能力。 除了提供基础版能力外,还提供业务高可用、数据安全、信道加密等企业级特性。 产品功能 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 不支持消息轨迹 支持SSL 支持ACL 支持基础的消息收发能力 支持常见的消息类型(如普通消息、顺序消息、事务消息、定时消息) 支持消息轨迹 支持SSL 支持ACL 弹性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。
  • 接收消息 登录边缘节点。 使用MQTT客户端接收消息。 当前边缘节点MQTT支持两种模式。 一种是内置的MQTT broker(使用8883端口),需要使用节点证书认证,然后订阅对应Topic接收消息,具体使用方式请参见使用证书进行安全认证。 另外一种是使用外置的MQTT broker(使用1883端口),需要先安装第三方MQTT broker,然后订阅对应Topic接收消息。 这里介绍使用外置的MQTT broker的方式,外置的MQTT broker需要先安装MQTT broker,例如安装Mosquitto,步骤如下。 对于Ubuntu操作系统,可以使用如下命令安装mosquitto: apt-get install mosquitto systemctl start mosquitto systemctl enable mosquitto 对于CentOS操作系统,使用如下命令安装mosquitto: yum install epel-release yum install mosquitto systemctl start mosquitto systemctl enable mosquitto 安装完成后,使用订阅命令订阅,订阅后如果有消息发送,就会收到消息,如下所示。其中#表示订阅任何主题,可以替换为指定的主题,如/aaa、/bbb等。 [root@ief-node ~]# mosquitto_sub -t '#' -d Client mosq-m02iwjsp4j2ISMw6rw sending CONNECT Client mosq-m02iwjsp4j2ISMw6rw received CONNACK (0) Client mosq-m02iwjsp4j2ISMw6rw sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 0, Options: 0x00) Client mosq-m02iwjsp4j2ISMw6rw received SUBACK Subscribed (mid: 1): 0 Client mosq-m02iwjsp4j2ISMw6rw received PUBLISH (d0, q0, rQ, mQ, '/aaa', ... (31 bytes)) { "test-key": "test-value" }
  • 操作场景 IEF支持从云端SystemREST下发消息到边缘节点的SystemEventBus(MQTT broker)或ServiceBus两种场景,本章节是以前者为例。 通过调用开放在公网的IEF云端的REST Gateway接口,结合节点ID和自定义Topic,向边缘节点中的SystemEventBus发送消息。您的终端设备可以通过订阅对应的自定义Topic进行消息接收,实现自定义Topic的从云到边的消息下发。 使用方法主要分如下三个步骤。 创建消息路由 发送消息 接收消息
  • 参数说明 表1 结构格式说明表 名称 类型 说明 age Integer 年龄。 dress List of strings 包含glass和hat两个属性结果。 glass String 是否戴眼镜: yes:戴眼镜 none:未戴眼镜 unknown:未知 hat String 是否戴帽子: yes:戴帽子 none:未戴帽子 unknown:未知 mask String 是否戴口罩: yes:戴口罩 none:未戴口罩 unknown:未知 hair String 发型: long:长发 short:短发 unknown:未知 beard String 胡须: yes:有胡须 none:无胡须 unknown:未知 phototype String 图片类型: idcard:证件照 monitor:摄像头监控 internet photo:网络图片 smile String 笑脸。 quality FaceQuality 图片中人脸的遮挡度、模糊度、光照强度、姿态角度。 expression FaceExpression 人脸表情,包括中性、高兴、害怕、惊讶、伤心、生气、厌恶。 face_angle Integer 人脸图片旋转角(顺时针偏转角度),支持0°、90°、180°和270°图片旋转。 dress List of strings 包含glass和hat两个属性结果。 glass String 是否带眼镜: yes:带眼镜 dark:带墨镜 none:未戴眼镜 unknown:未知 hat String 是否带帽子: yes:带帽子 none:未戴帽子 unknown:未知 headpose List of doubles 人脸轮廓坐标值。 pitch_angle Double 围绕X轴旋转,俯仰角,范围[-180,180]。 roll_angle Double 围绕Z轴旋转,翻滚角,范围[-180,180]。 yaw_angle Double 围绕Y轴旋转,偏航角,范围[-180,180]。
  • 适用计费项 分布式消息服务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(元) 更多信息请参见变更资源规格费用说明。
  • 到期后影响 图3描述了包年/包月RocketMQ实例各个阶段的状态。购买后,在计费周期内RocketMQ实例正常运行,此阶段为有效期;RocketMQ实例到期而未续费时,将陆续进入宽限期和保留期。 图3 包年/包月RocketMQ实例生命周期 到期预警 包年/包月RocketMQ实例在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 资源到期未续费,进入宽限期。 如果您的包年/包月RocketMQ实例到期未续费,RocketMQ实例会进入宽限期,RocketMQ实例状态变为“已过期”。宽限期内您可以正常访问RocketMQ实例,但以下操作将受到限制: 变更实例规格。 退订的包年/包月RocketMQ实例不会进入回收站,会被彻底删除。 资源宽限期到期未续费,进入保留期。 如果您在宽限期内仍未续费包年/包月RocketMQ实例,RocketMQ实例会进入保留期,RocketMQ实例状态变为“已冻结”,您将无法对处于保留期的包年/包月RocketMQ实例执行任何操作。 资源保留期到期未续费,释放且不可恢复。 如果包年/包月RocketMQ实例在保留期到期前仍未续费,那么RocketMQ实例将被释放,数据无法恢复。释放的实例会被彻底删除,不会进入回收站。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。