全部产品
Search
文档中心

云消息队列 Kafka 版:使用限制

更新时间:Dec 20, 2024

云消息队列 Kafka 版对某些具体指标进行了约束和规范,您在使用云消息队列 Kafka 版时注意不要超过相应的限制值,以免程序出现异常。

重要

若由于您的实例配置超出下列限制导致的任何不稳定情况,不在SLA承诺和赔偿范围内。

使用限制

云消息队列 Kafka 版的限制项和限制值,请参见下表。

限制项

限制值

说明

限制Topic总数(分区总数)

支持

云消息队列 Kafka 版的存储和协调机制是以分区为粒度的,Topic总数(分区总数)太多,会导致存储碎片化,集群性能和稳定性下降。

Topic减少对应分区

不支持

这是Apache Kafka自身设计所限制的。

暴露ZooKeeper

不支持

在使用设计层面,Apache Kafka自0.9.0之后已经屏蔽掉ZooKeeper,即客户端使用无需访问ZooKeeper。云消息队列 Kafka 版的ZooKeeper是部分共享的,出于安全考虑,不予暴露。您也无需感知到ZooKeeper。

登录部署云消息队列 Kafka 版的机器

不支持

无。

版本

支持2.2.x版本~3.3.x版本

  • 非Serverless实例支持2.2.x~2.6.x版本。

  • Serverless实例支持3.3.x版本。

如需升级版本,请参见升级实例版本

分区数量和Topic数量的对应关系

1∶1

可使用的Topic数量与总分区数强相关。例如,您购买了分区数为50、流量规格为alikafka.hw.2xlarge、规格内赠送分区数为1000的实例,那么该实例总分区数=购买分区数+规格内赠送分区数=50+1000=1050,可用Topic数量为1050。

说明

仅非Serverless实例适用。

变更实例的地域

不支持

实例购买部署之后,其地域与物理资源紧密结合,无法变更。如需变更实例的地域,请释放实例,并重新购买。

变更实例网络属性

支持

网络属性可以根据需要变更。具体操作,请参见升级实例配置

消息大小

10 MB

消息大小不得超过10 MB,否则消息会发送失败。

监控报警

支持

数据延时1分钟。

接入点

购买规格

  • 标准版:支持默认接入点、SSL接入点。

  • 专业版:支持默认接入点、SSL接入点、SASL接入点。

  • Serverless实例:支持默认接入点、SSL接入点、SASL接入点。

云存储单分区

宕机和升级时可能导致不可用

建议创建的分区数大于1,如果强依赖单分区,可以使用Local存储。

说明
  • 仅非Serverless实例存在此限制,Serverless实例的云存储单分区具有高可用性。

  • 仅专业版实例支持在创建Topic时将存储引擎类型选择为Local存储,标准版暂不支持。

说明

云消息队列 Kafka 版非Serverless实例不再支持按照Topic规格购买实例,若您的已有实例是按照Topic规格购买的,那么Topic数量与分区数量的对应关系为1∶16,专业版实例Topic数量=购买Topic数量×2。

配额限制

下表列举了云消息队列 Kafka 版使用限制项,超出下列使用限制可能会产生稳定性问题。其他限制中列举了部分可能对服务端造成不良影响的使用场景,需要谨慎使用避免造成服务端过载引发稳定性问题。

除非另有说明,限制都是针对每个集群的。如需更大的配额,请提交工单咨询。

限制项

限制条件

说明

连接数(单节点)

  • 起步连接数为1000(业务实际流量规格为20 MB/s)。

  • 业务实际流量规格每增加100 MB/s,连接数增加1000(上限为 10000)。

计算公式:C = min(10000, 1000 + (F // 100) * 1000)

F是流量(以MB/s为单位),C是所需的连接数量。//表示整数除法,即向下取整。

单台Broker的TCP连接数。

如需更大连接数,提交工单申请。

Serverless实例预留发送规格 =业务实际发送流量规格*3

公网(SSL)连接数(单节点)

  • 起步连接数为200(业务实际流量规格为20 MB/s)。

  • 业务实际流量规格每增加100 MB/s,连接数增加100(上限为1000)。

计算公式:C = min(1000, 200 + (F // 100) * 100)

F是流量(以MB/s为单位),C是所需的连接数量。//表示整数除法,即向下取整。

单台Broker的公网(SSL)TCP连接数。

如需更大连接数上限,提交工单申请。

建立连接频率(单节点)

  • Serverless实例:150次/秒

  • 按小时后付费和包年包月实例:50次/秒

每秒客户端与服务端尝试建立连接次数(包含因鉴权失败等原因导致的失败连接)。

公网(SSL)建立连接频率(单节点)

10次/秒

每秒客户端与服务端尝试建立公网(SSL)连接次数(包含因鉴权失败等原因导致的失败连接)。

batch size

batch size TP50=4 KB以下定义为碎片化发送

发送客户端攒批后PRODUCE请求中携带的消息batch大小。推荐使用2.4以上的客户端版本,提升batch攒批能力,请参见提升发送性能(减少碎片化发送请求)

发送request频率(集群)

  • 起步10000 request/s(业务实际流量规格为20 MB/s)。

  • 业务实际流量规格20 MB/s以上每增加20 MB/s,增加5000 request/s。

计算公式:R = 10000 + (F // 20) * 5000

F是实际流量(以MB/s为单位),R是所需的发送request频率。//表示整数除法,即向下取整。

客户端发送PRODUCE的请求数量。

如需更大请求数上限,提交工单申请。

消费request频率(集群)

  • 起步5000 request/s(业务实际流量规格为20 MB/s)。

  • 业务实际流量规格20 MB/s以上每增加20 MB/s,增加2500 request/s。

计算公式:R = 5000 + (F // 20) * 2500

F是实际流量(以MB/s为单位),R是所需的消费request频率。//表示整数除法,即向下取整。

客户端消费FETCH的请求数量。

如需更大请求数上限,提交工单申请。

提交消费位点频率(单节点)

  • 起步100 request/s(业务实际流量规格为20 MB/s)。

  • 业务实际发送流量规格20 MB/s以上每增加100 MB/s,增加100 request/s。

  • 上限1000 request/s

计算公式:R = min(1000, 100 + (F // 100) * 100)

F是实际流量(MB/s),R是请求(requests/s),//表示整数除法。

客户端发送 OFFSET_COMMIT 的请求数量。

如需更大请求数,提交工单申请。

元数据request频率(集群)

  • 起步100 request/s(业务实际流量规格为20 MB/s)。

  • 业务实际流量规格20 MB/s以上每增加100 MB/s,增加100 request/s。

  • 上限1000 request/s

计算公式:R = min(1000, 100 + (F // 100) * 100)

F是实际流量(以MB/s为单位),R是请求速率(requests/s),//表示整数除法。

服务端收到的客户端元数据request,例如METADATA,INIT_PRODUCER_ID,CREATE_ACL,JOIN_GROUP 等。

警告

如果请求过于频繁,会影响集群稳定性。

最大分区数(集群)

Serverless实例:

  • 预留生产规格1 GB/s以下3000分区副本数

  • 预留生产规格1 GB/s以上每增加100 MB/s增加300分区副本数

  • 上限15000分区副本数

按小时后付费和包年包月实例分区数计算方式相同。具体详情,请参见计费项目

分区数包括用户建立的不同类型Topic的分区。

如需更大分区上限数,提交工单申请。

创建/删除分区频率(集群)

900分区(每10秒)

包含控制台,OpenAPI、Kafka Admin等所有分区操作。

consumer group数量(集群)

2000/集群

Topic和Group的订阅比建议 1:1,不超过 3:1。

用户使用的Group数量。

如需更大Group上限数,提交工单申请。

警告

过多的消费者组可能导致服务端协调负载增加、元数据管理复杂性提高,从而影响性能和故障恢复时间。

消息格式版本

消息格式版本需大于V1

推荐使用2.4以上的客户端版本。

警告

使用较低版本的Kafka消息格式可能导致服务端CPU上升、吞吐性能下降及兼容性和安全性等问题。

其他限制

  • 开启某些压缩算法可能会影响服务端性能,进一步影响延迟和吞吐。

  • 大量高频率初始化事务Producer Id可能造成内存溢出导致服务端过载,影响稳定性。因此我们将内核参数transactional.id.expiration.ms调整为15 min,如有特殊需求,请提交工单咨询。

  • 无效消息体时间戳拦截,当message.timestamp.type= CreateTime时,Broker收到消息时的时间戳与消息中指定的时间戳之间的最大差值超过配置的参数值message.timestamp.difference.max.ms,会拒绝写入这条消息。此配置用于防止时间戳的误设置,如果时间戳设置太小,LogSegment会立刻被删除,如果设置太大,LogSegment将无法被删除。

  • 为了防止Compact Topic异常写入,导致集群存储写满而宕机。Compact Topic分区默认存储上限为5 GB,如有特殊需求,请提交工单咨询。

  • 如果实例CPU使用率超过85%,则可能对实例集群的稳定性产生影响,如宕机、发送消费长尾延迟抖动等异常问题。

  • Kafka的性能由集群提供支持,如果用户的发送行为或者分区分配存在倾斜等问题,则难以充分发挥集群的最大能力。

  • 开源事务消息存在大量已知且尚未修复的问题,建议谨慎使用,例如KAFKA-12671。更多问题,请参见KAFKA ISSUES