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

Kafka集群实例

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

单个代理分区上限

单个代理建议消费组数

单个代理客户端总连接数上限

存储空间范围(GB)

单个代理流量规格(MB/s)

kafka.2u4g.cluster.small

3~30

20000

100

15

2000

300~300000

40

kafka.2u4g.cluster

3~30

30000

250

20

2000

300~300000

100

kafka.4u8g.cluster

3~30

100000

500

100

4000

300~600000

200

kafka.8u16g.cluster

3~50

150000

1000

150

4000

300~1500000

375

kafka.12u24g.cluster

3~50

200000

1500

200

4000

300~1500000

625

kafka.16u32g.cluster

3~50

250000

2000

200

4000

300~1500000

750

实例规格和网络带宽说明

Kafka实例的网络带宽主要由以下两个部分组成:

  1. 实例Broker对应的网络带宽
  2. 实例Broker的磁盘所对应的带宽值(不同类型的磁盘对应的带宽值不同,具体参考:如何选择磁盘类型

注意事项:

  • Kafka默认情况下测试均为尾读场景(即仅消费最新生产的数据),而不是冷读场景(即从头开始消费历史数据的场景)。
  • 老规格实例(即实例规格为100MB/s等)的带宽指的是实例所有Broker对应的网络带宽总和

新规格实例(即实例规格为kafka.2u4g.cluster等)的流量规格测算模型说明如下:

  • 测试模型读写比例为1:1
  • 默认Topic的副本数为3
  • 实例网络总流量 = 单个代理流量规格 * 代理数量
  • 实例整体流量 = 业务流量 + 代理节点间数据复制流量

参考上述测算模型说明,假如当前规格为kafka.2u4g.cluster,单个代理流量规格为100MB/s,代理数量为3,实例网络总流量、最大读流量和最大写流量分别为多少?

  1. 实例网络总流量 = 单个代理流量规格 * 代理数量 = 100MB/s * 3 = 300MB/s
  2. 最大读流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s
  3. 最大写流量 = 实例网络总流量 / 默认副本数 / 2 = 300MB/s / 3 / 2 = 50MB/s

新老规格对应关系

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实例,选择初始存储空间时,建议根据业务消息体积预估、副本数量以及预留磁盘大小选择合适的存储空间。每个Kafka代理会预留33GB的磁盘空间,用于存储日志和元数据。

例如:业务消息体积预估100GB,副本数为2,Kafka实例的代理数为3,则磁盘容量最少应为100GB*2+33GB*3=299GB。

Kafka实例支持对存储进行扩容,根据业务增长,随时扩容,节约成本。

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个。