华为云用户手册

  • 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • URI DELETE /v2/{project_id}/apigw/instances/{instance_id}/app-auths/{app_auth_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 app_auth_id 是 String 授权关系的编号
  • 响应示例 状态码: 200 OK { "app_id" : "9ed8b7fe84224de681e7d7a5587e76dc", "app_acl_type" : "PERMIT", "app_acl_values" : [ "192.168.0.1", "192.168.0.5-192.168.0.10", "192.168.0.100/28" ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:app_id. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3004", "error_msg" : "App 9ed8b7fe84224de681e7d7a5587e76dc does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 app_id String APP编号 app_acl_type String 类型 PERMIT (白名单类型) DENY (黑名单类型) app_acl_values Array of strings ACL策略值,支持IP、IP范围和CIDR方式。IP范围以英文中划线分隔。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • URI GET /v2/{project_id}/apigw/instances/{instance_id}/apps/{app_id}/app-acl 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 app_id 是 String 应用编号
  • 排查步骤 根据以下排查思路,如果解决完某个可能原因后,问题仍未解决,请继续排查其他可能原因。如果以下方法均不能解决您的疑问,请提交工单寻求更多帮助。 图1 排查思路 确定带宽是否超过限制 查看带宽的监控数据。 查看出入云带宽和带宽使用率等数据是否有超带宽,查看方法请参考导出监控指标。 查看带宽超限事件。 查看方法请参考查询EIP独享带宽历史超限情况。 如果未设置EIP带宽超限事件,请设置EIP带宽超限事件。当系统出现异常丢包或卡顿情况,您就可以通过“事件监控”查看EIP独享带宽历史超限详情。 偶尔短暂的超带宽不影响业务的情况下,可以忽略。如果持续超带宽或者多次瞬时超带宽,可参考步骤2排查处理。 带宽超限处理方法 流量突发可能会导致带宽瞬时超出上限,造成云服务器丢包。 建议您确认流量突发是否正常: 1. 正常流量突发,建议参考修改带宽提升带宽。 2. 非正常流量突发(比如攻击类流量导致的超带宽等),可参考系统资源被占用进行处理。 带宽未超限处理方法 根据步骤1中数据排查结果,带宽未超过限制,或未超过购买时的带宽大小,您可以考虑如下处理方法。 排查 云监控 告警设置是否异常 云监控设置EIP带宽超限告警时,告警策略设置不合理,系统将发送异常的带宽超限告警信息。解决方法请参考云监控告警设置异常。 EIP连接异常 EIP已绑定EIP,但是无法连接到Internet。解决方法请参考EIP连接出现问题时,如何排查?。
  • 什么是入云带宽和出云带宽? 带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,带宽数值越大表示传输能力越强,即在单位时间内传输的数据量越多。带宽分为公网带宽和内网带宽。 公网带宽是指华为云到Internet之间的网络带宽流量。公网带宽分为出云带宽和入云带宽。本文主要介绍出云带宽和入云带宽,具体内容参见表1。 图1 入云带宽和出云带宽 表1 出云带宽和入云带宽 带宽类别 描述 出云带宽 从华为云流出到Internet方向的带宽。例如,云服务器对外提供访问,或者在外网的FTP客户端下载云服务器内部的资源等方式都是使用出云带宽。在云监控指标中对应的是上行带宽/上行流量指标。 目前,华为云仅对出云带宽收取费用。 说明: 如果您需要查看带宽使用情况,请参见查看监控指标。 如果您需要查看带宽的计费详情,请参见费用账单。 入云带宽 从Internet流入华为云方向的带宽。例如,在云服务器内部下载外部网络资源,或者在外网的FTP客户端上传云服务器内部的资源等方式都是使用入云带宽。在云监控指标中对应的是下行带宽/下行流量指标。 入云带宽的最大值受用户购买的出云带宽值影响,带宽限速规则如下: 若您的带宽大小小于或等于10Mbit/s,则入云方向带宽为10Mbit/s,出云方向带宽大小为您的实际带宽大小。 若您的带宽大小大于10Mbit/s,则出云方向和入云方向带宽相同,都等于您的实际带宽大小。 上述带宽限速规则不适用华北-北京一、华东-上海二区域。 父主题: 带宽类
  • 单机和集群Kafka实例差异概述 单机实例是分布式消费服务Kafka版提供的单代理实例,只适用体验和业务测试场景,无法保证性能和可靠性。如果需要在生产环境使用Kafka实例,建议购买集群实例。 单机实例和集群实例支持的特性和功能有部分差异,具体如表1所示。 表1 单机实例和集群实例的差异说明 对比项 单机实例 集群实例 版本 支持2.7版本。 支持1.1.0、2.7和3.x版本。 可用区 支持单可用区。 支持1个或者3个及以上可用区。 代理数量 1个代理。 3个及以上代理。 接入方式 支持明文接入。 支持明文接入和密文接入。 变更实例规格 × √ 重置Kafka密码 × √ 查看磁盘使用量 × √ 修改分区平衡 × √ 设置Topic权限 × √ 用户管理 × √ 查看重平衡日志 × √ Smart Connect × √ 流控管理 × √ 修改配置参数 × √
  • 与RabbitMQ、RocketMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 3.8.35版本:支持。建议优先级大小设置在0-10之间。 AMQP-0-9-1版本:支持。优先级大小设置在1-9之间。 延迟队列 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 死信队列 支持 不支持 支持 消息重试 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消费模式 支持客户端主动拉取和服务端推送两种方式。 客户端主动拉取。 支持客户端主动拉取和服务端推送两种模式。 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 3.8.35版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 AMQP-0-9-1版本:支持。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消息过滤 支持 支持 3.8.35版本:不支持,但可以自行封装。 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.8.35版本:支持SSL认证。 AMQP-0-9-1版本:支持ACL访问控制。 事务性消息 支持 支持 支持
  • Kafka实例Topic数量计算 Kafka实例对Topic分区数之和设置了上限,当达到上限之后,用户无法继续创建Topic。 所以,Topic数量和实例分区数上限、每个Topic的分区数有关,其中,每个Topic分区数可在创建Topic时设置,如图1,实例分区数上限参考表1。 图1 Topic的分区数 kafka.2u4g.cluster * 3 broker实例的分区数上限为750。 如果该实例下每个Topic的分区个数都为3,则Topic个数为750/3=250个。 如果该实例下每个Topic的分区个数都为1,则Topic个数为750/1=750个。
  • 新老规格对应关系 2种Kafka实例规格对比,新老规格的对应关系如表2所示。 表2 Kafka实例新老规格对应关系 老规格 对应的新规格 规格类型 实例网络总流量 规格类型 实例网络总流量 100MB/s 100MB/s kafka.2u4g.cluster.small * 3 120MB/s 300MB/s 300MB/s kafka.2u4g.cluster * 3 300MB/s 600MB/s 600MB/s kafka.4u8g.cluster * 3 600MB/s 1200MB/s 1200MB/s kafka.4u8g.cluster * 6 1250MB/s 新老规格区别如下: 老规格使用的非独享资源,在高负载情况下容易出现资源抢占情况。新规格(kafka.2u4g.cluster.small除外)使用的独占资源,性能更优,性价比更高。 新规格支持最新的功能,例如:分区平衡、动态开启SSL、重平衡日志可观测等。 新规格支持规格灵活变更,例如:Broker规格的扩缩容。 新规格的磁盘大小选择更加灵活,磁盘大小不与实例规格进行绑定,仅与Broker数量相关。 新规格选择粒度更细,根据Broker规格和数量进行灵活的规格选择,并且最大规格可以达到10000MB/s以上。 新规格除了原有的磁盘类型,还支持通用型SSD、极速型SSD等多种磁盘类型,客户选择更加灵活。
  • Kafka实例规格参考 kafka.2u4g.cluster.small,三个代理 Kafka客户端连接数在6000以内,消费组个数在45个以内,业务TPS为60000以内时推荐选用。 kafka.2u4g.cluster,三个代理 Kafka客户端连接数在6000以内,消费组个数在60个以内,业务TPS为90000以内时推荐选用。 kafka.4u8g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在300个以内,业务TPS为300000以内时推荐选用。 kafka.8u16g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在450个以内,业务TPS为450000以内时推荐选用。 kafka.12u24g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在600个以内,业务TPS为600000以内时推荐选用。 kafka.16u32g.cluster,三个代理 Kafka客户端连接数在12000以内,消费组个数在600个以内,业务TPS为750000以内时推荐选用。
  • Kafka集群实例规格 Kafka集群实例由三个及以上代理组成,兼容开源Kafka 1.1.0、2.7和3.x。 TPS(Transaction per second),在Kafka场景中,指每秒能写入到Kafka实例的最大消息数量。下表中TPS性能,是指以1KB大小的消息为例的每秒处理消息条数。测试场景为连接内网访问明文接入、磁盘类型为超高I/O的实例。如果您想要了解更多关于TPS的性能,请参考测试Kafka实例TPS。 表1 Kafka集群实例规格 规格名称 代理个数范围 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围 单个代理流量规格(MB/s) kafka.2u4g.cluster.small 3~30 20000 100 15 2000 300GB~300000GB 40 kafka.2u4g.cluster 3~30 30000 250 20 2000 300GB~300000GB 100 kafka.4u8g.cluster 3~30 100000 500 100 4000 300GB~600000GB 200 kafka.8u16g.cluster 3~50 150000 1000 150 4000 300GB~1500000GB 375 kafka.12u24g.cluster 3~50 200000 1500 200 4000 300GB~1500000GB 625 kafka.16u32g.cluster 3~50 250000 2000 200 4000 300GB~1500000GB 750
  • 实例规格和网络带宽说明 Kafka实例的网络带宽主要由以下两个部分组成: 实例Broker对应的网络带宽 实例Broker的磁盘所对应的带宽值(不同类型的磁盘对应的带宽值不同,具体参考:如何选择磁盘类型) 注意事项: Kafka默认情况下测试均为尾读场景(即仅消费最新生产的数据),而不是冷读场景(即从头开始消费历史数据的场景)。 老规格实例(即实例规格为100MB/s等)的带宽指的是实例所有Broker对应的网络带宽总和 新规格实例(即实例规格为kafka.2u4g.cluster等)的流量规格测算模型说明如下: 测试模型读写比例为1:1 默认Topic的副本数为3 实例网络总流量 = 单个代理流量规格 * 代理数量 实例整体流量 = 业务流量 + 代理节点间数据复制流量 参考上述测算模型说明,假如当前规格为kafka.2u4g.cluster,单个代理流量规格为100MB/s,代理数量为3,实例网络总流量、最大读流量和最大写流量分别为多少? 实例网络总流量 = 单个代理流量规格 * 代理数量 = 100MB/s * 3 = 300MB/s 最大读流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s 最大写流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s
  • Kafka实例的存储空间估算参考 Kafka实例支持多副本存储,存储空间用于存储消息(包括副本中的消息)、日志和元数据。您在创建Kafka实例,选择初始存储空间时,建议根据业务消息体积预估、副本数量以及预留磁盘大小选择合适的存储空间。每个Kafka代理会预留33GB的磁盘空间,用于存储日志和元数据。 例如:业务消息体积预估100GB,副本数为2,Kafka实例的代理数为3,则磁盘容量最少应为100GB*2+33GB*3=299GB。 Kafka实例支持对存储进行扩容,根据业务增长,随时扩容,节约成本。
  • Topic 表2 Topic约束与限制 限制项 约束与限制 Topic总分区数 Topic总分区数和实例规格有关,具体请参考Kafka集群实例。 Kafka以分区为粒度管理消息,分区多导致生产、存储、消费都碎片化,影响性能稳定性。在使用过程中,当Topic的总分区数达到上限后,用户无法继续创建Topic。 单个Topic分区数 按照开源Kafka现有逻辑,单个Topic分区数只支持增加,不支持减少。 出于性能考虑,建议单个Topic的分区数设置为200以内。 Topic数量 Topic数量和Topic总分区数、每个Topic的分区数有关,具体请参考Kafka集群实例。 是否支持自动创建Topic 支持。开启自动创建Topic表示生产或消费一个未创建的Topic时,系统会自动创建此Topic,此Topic的默认参数值如下: 单机实例分区数为1,集群实例分区数为3。 单机实例副本数为1,集群实例副本数为3。 老化时间为72小时。 不开启同步复制和同步落盘。 消息时间戳类型为CreateTime。 批处理消息最大值为10485760字节。 集群实例如果在“配置参数”中修改“log.retention.hours”(老化时间)、“default.replication.factor”(副本数)或“num.partitions”(分区数)的参数值,此后自动创建的Topic参数值为修改后的参数值。单机实例不支持修改配置参数。 例如:“num.partitions”修改为“5”,自动创建的Topic参数值如下: 分区数为5。 副本数为3。 老化时间为72小时。 不开启同步复制和同步落盘。 消息时间戳类型为CreateTime。 批处理消息最大值为10485760字节。 同步复制 Topic副本数为1时,不能选择同步复制功能。 副本数 集群实例不建议使用单副本。实例节点出现故障的情况下,单副本Topic查询消息时可能会报“内部服务错误”,因此不建议使用单副本Topic。 老化时间 如果Topic已经设置了老化时间,此时“配置参数”中的log.retention.hours值将不对此Topic生效。仅在Topic中未设置老化时间时,“配置参数”中的log.retention.hours值才会对此Topic生效。 例如:Topic01设置的老化时间为60小时,“配置参数”中的log.retention.hours值为72小时,此时Topic01实际的老化时间为60小时。 批量导入/导出Topic 支持批量导出,不支持批量导入。 Topic名称 Topic名称开头包含特殊字符,例如#号“#”,会导致监控数据无法展示。 是否支持延迟队列 不支持 代理故障场景 实例中部分代理故障时,无法创建、修改和删除Topic,只能查询Topic。
  • 消费组 表3 消费组约束与限制 限制项 约束与限制 是否需要创建消费组、消费者、生产者 “auto.create.groups.enable”为“true”时,不需要单独创建消费组、生产者和消费者,在使用时自动生成,实例创建后,直接使用即可。 “auto.create.groups.enable”为“false”时,需要手动创建消费组,不需要单独创建生产者和消费者。 重置消费进度 重置消费进度可能会导致重复消费。 消费组名称 消费组名称开头包含特殊字符,例如#号“#”,会导致监控数据无法展示。 代理故障场景 实例中部分代理故障时,无法创建、修改和删除消费组,以及重置消费进度,只能查询消费组。
  • 实例 表1 实例约束与限制 限制项 约束与限制 Kafka ZooKeeper Kafka集群依赖ZooKeeper进行管理,开放ZooKeeper可能引发误操作导致业务受损,当前仅Kafka内部使用,不对外提供服务。 版本 当前服务端版本为1.1.0、2.7、3.x。实例创建后,服务端版本不支持升级。 兼容0.10以上的客户端版本,推荐使用和服务端一致的版本。 登录Kafka节点所在机器 不能登录。 存储空间 集群实例只支持扩大存储空间,不支持减小存储空间。 扩容存储空间有次数限制,最多扩容20次。 单机实例不支持修改存储空间。 基准带宽/代理数量 集群实例只支持增加基准带宽/代理数量,不支持减小基准带宽/代理数量。 单机实例不支持修改代理数量。 代理规格 集群实例支持扩容/缩容代理规格。 若Topic为单副本,扩容/缩容期间无法对该Topic生产消息或消费消息,会造成业务中断。 若Topic为多副本,扩容/缩容代理规格不会造成服务中断,但可能会导致消费的分区消息发生乱序,请谨慎评估业务影响,建议您在业务低峰期扩容/缩容。 扩容/缩容代理规格的过程中,节点滚动重启造成分区Leader切换,会发生秒级连接闪断,在用户网络环境稳定的前提下,Leader切换时长一般为1分钟以内。多副本的Topic需要在生产客户端配置重试机制。 若集群实例已创建的分区数总和大于待缩容规格的实例分区数上限,此时无法缩容。 单机实例不支持修改代理规格。 修改VPC/子网/可用区 实例创建后,不支持修改VPC/子网/可用区。 是否支持Kerberos认证 不支持 客户端单IP连接数 2020年7月以及之后购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为1000个,在此之前购买的实例,Kafka实例的每个代理允许客户端单IP连接的个数默认为200个,如果超过了,会出现连接失败问题。
  • 与开源Kafka的差异 分布式消息服务Kafka版在兼容开源Kafka基础上,对版本特性做了一定程度的定制和增强,所以,除了拥有开源Kafka的优点,分布式消息服务Kafka版提供了更多可靠、实用的特性。 表1 分布式消息服务Kafka版与开源Kafka的差异说明 对比类 对比项 分布式消息服务Kafka版 开源Kafka 简单易用 立等可用 即开即用,可视化操作,自助创建,自动化部署,分钟级创建实例,立即使用,实时查看和管理消息实例。 自行准备服务器资源,安装配置必要的软件并进行配置,等待时间长。 易出错。 简单API 提供简单的实例管理RESTful API,使用门槛低。 无 成本低廉 按需使用 提供多种规格,按需使用,支持一键式在线进行实例代理个数、磁盘存储空间和代理规格扩容。 搭建消息服务本身需要费用,而且即使没有使用,所占用资源本身依旧要收费。 完全托管 租户不需要单独采购硬件资源,直接使用就绪的服务,无需额外成本。 需要购买硬件资源,自行搭建整个消息服务,使用和维护成本高。 实践验证 成熟度高 经受电商网站大规模访问考验,并且已经在华为云许多产品中使用,广泛部署运行在分布于世界各地的电信级客户云业务系统里。满足严苛的电信级故障模式库标准。紧随社区主流版本,修复开源bug,持续上线新功能,进行版本升级。 使用开源软件成熟度低,无法保证关键业务,商业案例少;自研周期长,并需要长时间进行验证。 能力强大 100%兼容开源,支持一键扩容,深度优化开源代码提升性能和可靠性,支持消息查询、消息迁移等高级特性。 功能不完善,需额外投入进行开发。 稳定可靠 稳定高可用 支持跨AZ部署,提升可靠性。故障自动发现并上报告警,保证用户关键业务的可靠运行。 需要自己开发或基于开源实现,开发成本高昂,无法保证业务可靠运行。 无忧运维 后台运维对租户完全透明,整个服务运行具有完备的监控和告警功能。有异常可以及时通知相关人员。避免7*24小时人工值守。 需要自行开发完善运维功能,尤其是告警及通知功能,否则只能人工值守。 安全保证 VPC隔离,支持SSL通道加密。 需要自行进行安全加固。
  • Kafka单机实例规格 Kafka单机实例由一个代理组成,兼容开源Kafka 2.7版本,适用于测试场景,不建议用于生产业务。 TPS(Transaction per second),在Kafka场景中,指每秒能写入到Kafka实例的最大消息数量。下表中TPS性能,是指以1KB大小的消息为例的每秒处理消息条数。测试场景为连接内网访问明文接入、磁盘类型为超高I/O的实例。 表1 Kafka单机实例规格 规格名称 代理个数 单个代理TPS 单个代理分区上限 单个代理建议消费组数 单个代理客户端总连接数上限 存储空间范围 单个代理流量规格(MB/s) kafka.2u4g.single.small 1 20000 100 15 2000 100GB~10000GB 40 kafka.2u4g.single 1 30000 250 20 2000 100GB~10000GB 100
  • Kafka单机实例Topic数量计算 Kafka实例对Topic分区数之和设置了上限,当达到上限之后,用户无法继续创建Topic。 所以,Topic数量和实例分区数上限、每个Topic的分区数有关,其中,每个Topic分区数可在创建Topic时设置,实例分区数上限参考表1。 kafka.2u4g.single实例的分区数上限为250。 如果该实例下每个Topic的分区个数都为2,则Topic个数为250/2=125个。 如果该实例下每个Topic的分区个数都为1,则Topic个数为250/1=250个。
  • Kafka单机实例的存储空间估算参考 Kafka实例支持多副本存储,存储空间用于存储消息(包括副本中的消息)、日志和元数据。您在创建Kafka实例,选择初始存储空间时,建议根据业务消息体积预估、副本数量以及预留磁盘大小选择合适的存储空间。每个Kafka代理会预留33GB的磁盘空间,用于存储日志和元数据。 例如:业务消息体积预估100GB,副本数为2,Kafka实例的代理数为1,则磁盘容量最少应为100GB*2+33GB*1=233GB。 Kafka实例支持对存储进行扩容,根据业务增长,随时扩容,节约成本。
  • 与Kafka、RocketMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 3.8.35版本:支持。建议优先级大小设置在0-10之间。 AMQP-0-9-1版本:支持。优先级大小设置在1-9之间。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消费模式 支持客户端主动拉取和服务端推送两种方式。 客户端主动拉取。 支持客户端主动拉取和服务端推送两种模式。 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 3.8.35版本:不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 AMQP-0-9-1版本:支持。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 3.8.35版本:不支持。 AMQP-0-9-1版本:支持。 消息过滤 支持 支持 3.8.35版本:不支持,但可以自行封装。 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.8.35版本:支持SSL认证。 AMQP-0-9-1版本:支持ACL访问控制。 事务性消息 支持 支持 支持
  • 配置RabbitMQ镜像队列 登录RabbitMQ实例的Web UI。 在菜单栏,选择“Admin”。 图1 选择Admin菜单 (可选)如果您需要设置指定Vhost,请执行本步骤;如果不需要,请直接执行4。 选择右侧导航栏“Virtual Hosts”,然后输入“Name”,单击“Add virtual host”,创建Vhost。 图2 创建Vhost 选择右侧导航栏“Policies”,为Vhost设置策略。 图3 设置Vhost策略 表1 策略参数说明 参数 说明 Virtual Host 设置策略所应用的Vhost。如果为指定的Vhost设置,请在“Virtual Host”选择3创建的Vhost;如果没有,则默认为“/”。 Name 策略的名称,用户自定义。 Pattern Queue的匹配模式(正则表达式)。 Apply to 策略所适用的目标。 Priority 策略的优先级,数字越大,优先级越高。 Definition 镜像定义,包括三个部分ha-sync-mode、ha-mode、ha-params。 ha-sync-mode: 表示镜像队列中消息的同步方式,有效取值范围为:automatic和manual。 automatic:表示自动向master同步数据。 manual:表示手动向master同步数据。 ha-mode: 指明镜像队列的模式,有效取值范围为:all、exactly和nodes。 all:表示在集群所有的节点上进行镜像。 exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定。 nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定。 ha-params: ha-mode模式需要用到的参数。 说明: 如果将队列镜像到集群所有节点上,可能会导致集群承受不必要的网络及磁盘I/O流量。因此,推荐您使用以下参数配置: ha-sync-mode: automatic ha-mode: exactly ha-params: n/2+1,其中n表示集群中总节点数量。 例如集群总节点数为3,ha-params设置为3/2+1=2,此时队列将镜像到一个主节点和一个从节点上。这样配置既保证了数据的高可用性,又避免了不必要的资源开销。 单击“Add policy”。 策略添加成功后如下图所示。 图4 Vhost策略
  • LVS的心跳超时时间 RabbitMQ集群实例使用LVS进行负载均衡,如图1所示,单节点实例不涉及LVS。 图1 集群实例的负载均衡 LVS对客户端连接设置了心跳超时时间,默认为90s。如果客户端在90s内没有向LVS发送心跳(AMQP心跳帧或消息收发),LVS会主动断开与客户端的连接,此时客户端需要重新连接。 如果存在消息收发时间间隔大于90s的场景,请在客户端开启心跳并设置小于90s的心跳超时时间。推荐设置心跳超时时间为10s。
  • 什么是心跳 RabbitMQ实例提供了心跳功能,以确保应用程序层及时发现中断的连接和完全无响应的对端。心跳还可以防止某些网络设备在一段时间内由于没有活动而中断TCP连接。开启心跳的方法为在连接上指定心跳超时时间。 心跳超时时间定义了对等TCP连接在多长时间后被服务端和客户端视为关闭。服务端和客户端会对配置的心跳超时时间进行协商,客户端必须配置该值来发送心跳。RabbitMQ官方团队维护的3个客户端(Java、.NET、Erlang语言)的心跳超时时间协商逻辑如下: 服务端和客户端设置的心跳超时时间都不为0时,两者间较小的值生效。 服务端和客户端任意一端设置的心跳超时时间为0,另一端不为0时,非0的值生效。 服务端和客户端的心跳超时时间都设置为0时,表示禁用心跳。 配置心跳超时时间后,RabbitMQ服务端和客户端都会向对方发送AMQP心跳帧作为心跳,发送的时间间隔为心跳超时时间的一半。客户端在两次错过心跳后,会被认为是不可达的,TCP连接将被关闭。当客户端检测到服务端由于心跳而无法访问时,需要重新连接。更多关于心跳的说明,请参考Detecting Dead TCP Connections with Heartbeats and TCP Keepalives。 一些客户端(如C语言客户端)没有发送心跳的逻辑,即使配置了心跳超时时间,开启了心跳,仍然无法发送心跳。此时需要额外启动一个线程,编写发送心跳的逻辑。
  • 修订记录 发布日期 更新内容 2023-05-04 第五次正式发布。 修改安全组和网络ACL的区别是什么?,安全组配置策略支持拒绝策略。 2022-12-14 第四次正式发布。 新增如何设置镜像的网卡多队列属性?章节。 2022-05-30 第三次正式发布。 修改IEC在哪些站点提供服务?,新增IEC支持的站点。 2021-04-12 第二次正式发布 新增一些热点问题。 2020-10-30 第一次正式发布。
  • 安全组和网络ACL的区别是什么? 安全组和网络ACL(Access Control Lists,访问控制列表)的区别如表1所示。 表1 安全组和网络ACL 对比项 安全组 网络ACL 防护对象 实例级别操作。 子网级别操作。 配置策略 支持允许、拒绝策略。 支持允许、拒绝策略。 优先级 多个规则冲突,取其并集生效。 多个规则冲突,优先级高的规则优先生效。 应用操作 创建实例时必须选择安全组,安全组自动应用到实例。 创建子网没有网络ACL选项,如果创建网络ACL,需要添加关联子网、添加出入规则,并启用网络ACL,才可应用到关联子网及子网下的实例。 报文组 仅支持报文三元组(即协议、端口和对端地址)过滤。 支持报文五元组(即协议、源端口、目的端口、源地址和目的地址)过滤。 父主题: 边缘网络
  • IEC范畴下的VPC和EIP与华为云的云服务VPC和EIP是什么关系? IEC范畴下的边缘网络与华为云上其他网络相关的服务,如虚拟私有云(Virtual Private Cloud,VPC)、弹性公网IP(Elastic IP,EIP)完全独立,没有关联关系,各自承载不同的业务。但从两者的功能维度来看,又是相类似的。 举例说明,通过IEC控制台或者API创建的虚拟私有云仅归属于华为云服务IEC的边缘云业务范畴,与通过华为云服务VPC创建的虚拟私有云没有关联关系。IEC上创建的虚拟私有云不能通过云服务VPC管理,云服务VPC上创建的虚拟私有云也不能通过IEC管理。 父主题: 边缘网络
  • 网卡多队列支持列表 网卡多队列的支持情况和实例规格、虚拟化类型、镜像的操作系统有关,只有同时满足这些要求,边缘实例才能开启网卡多队列功能。 支持网卡多队列的实例规格请参见实例规格。 网卡多队列数为大于1的值,表示支持网卡多队列。 虚拟化类型必须为KVM,XEN类型不支持网卡多队列。 表1所列的Linux公共镜像,支持网卡多队列。 Linux操作系统边缘实例建议将操作系统内核版本升级至2.6.35及以上,否则不支持网卡多队列。 建议您使用命令uname -r查询内核版本,如果低于2.6.35请联系技术支持升级内核。 表1 Linux边缘实例网卡多队列支持列表 类别 镜像 是否支持多队列 是否默认开启多队列 Linux Ubuntu 14.04/16.04 Server 64bit 是 是 openSUSE 42.2 64bit 是 是 SUSE Enterprise 12 SP1/SP2 64bit 是 是 CentOS 6.8/6.9/7.0/7.1/7.2/7.3/7.4/7.5/7.6 64bit 是 是 Debian 8.0.0/8.8.0/8.9.0/9.0.0 64bit 是 是 Fedora 24/25 64bit 是 是 EulerOS 2.2 64bit 是 是
共100000条