更新时间:2024-11-07 GMT+08:00
分享

约束与限制

本章节介绍分布式消息服务Kafka版产品功能的约束和限制,您在使用Kafka实例时注意不要超过相应的约束和限制,以免程序出现异常。

如果因为您的实例配置超过相应的约束和限制而导致的任何不稳定情况,不在SLA承诺和赔偿范围内。

实例

表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个,如果超过了,会出现连接失败问题。

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”时,需要手动创建消费组,不需要单独创建生产者和消费者。

重置消费进度

重置消费进度可能会导致重复消费。

消费组名称

消费组名称开头包含特殊字符,例如#号“#”,会导致监控数据无法展示。

代理故障场景

实例中部分代理故障时,无法创建、修改和删除消费组,以及重置消费进度,只能查询消费组。

消息

表4 消息约束与限制

限制项

约束与限制

消息大小

生产消息的最大长度为10MB,超过10MB会导致生产失败。

用户

表5 用户约束与限制

限制项

约束与限制

创建用户的数量

一个Kafka实例最多创建的用户数量在控制台存在两种限制,一种为20个,另一种为500个,具体以控制台为准。

代理故障场景

实例中部分代理故障时,无法创建、修改和删除用户,以及重置密码,只能查询用户。

相关文档