对于云消息队列 Confluent 版集群来说,影响资源使用的因素众多,包括使用的业务场景、业务应用程序性能等,本文结合一般场景给出云消息队列 Confluent 版集群资源评估参考建议,帮助您在购买创建集群时评估集群规模。在集群创建完成后,您仍然可以根据实际的资源使用率进行集群扩容来变更集群的资源配置。
组成架构
云消息队列 Confluent 版是一个流数据平台,能够组织管理来自不同数据源的数据,是一个稳定高效的系统。如下图所示,它由六个组件构成,分别为Kafka Broker、Rest Proxy、Connect、Zookeeper、ksqlDB、Control Center。
默认情况下,云消息队列 Confluent 版集群Kafka Broker、Rest Proxy、Connect、Zookeeper、ksqlDB、Control Center组件的副本数为3、2、2、3、2、1,您也可以根据实际的业务需求设置合适的副本数量。
集群资源评估
Kafka Broker资源评估
首先,需要评估您的业务需求,需求参数由下表列出。
需求参数
参数说明
扇出因子
写入的数据会被consumer消费多少次,其中不包含Broker内部副本的复制流量。
数据峰值流入
业务数据的峰值流量,单位:MB/s。
数据平均流入
业务数据的平均流量,单位:MB/s。
数据保留时长
数据保留时长,默认7天。
分区副本因子
分区副本因子,默认为3,即每个分区具有3个副本。
估算Broker的节点数:理想情况下,单个Kafka Broker最大能够支持100 MB/s的流量;建议生产集群至少需要4个Broker节点数,并保留50%的IO带宽资源冗余。此外,从分区副本限制考虑,每个Broker不应超过2000个分区副本;整个集群不应超过200,000个分区副本。如果预估集群总分区副本数量会比较多,建议您从总分区数来评估所需Broker的节点数。
说明Broker节点数 = Max(4,数据峰值流入 * (扇出因子 + 2 * 分区副本因子-1) * 2 / 400 MB/s)。
估算每个Broker的CU数量:由于所需CU数量与集群配置、客户端配置及其使用方式、分区数量、集群规模、Consumer个数、Producer个数等都有关系,难以估算。建议您创建生产集群时,每个Broker使用8 CU以上每Broker的配置,开发测试集群使用4 CU每Broker的配置。同时,建议您每4 CU的Broker上不应超过100个leader副本或300个分区副本(包含leader副本)。
估算每个Broker的磁盘大小:每个Broker的磁盘大小 = Max(1TB,数据平均流入 * 数据保留时长 * 分区副本因子 / Broker节点数)。
Connect资源评估
节点数评估:建议选择2个节点以上以保证Connect为高可用的。
CU评估:建议选择每个节点8 CU以上。
Schema Resgitry资源评估
Schema Resgitry生产环境建议配置2个节点,每个节点2 CU。
Control Center资源评估
Control Center生产环境建议配置1个节点,计算资源为4 CU以上,数据存储300 GB以上。
ksqlDB资源评估
节点数评估:建议选择2个节点以上以保证REST Proxy为高可用的。
CU评估:建议选择每个节点4 CU以上。
存储评估:ksqlDB的存储大小依赖于聚合语句以及并发查询的数量,默认选择100 GB。
REST Proxy资源评估
节点数评估:建议选择2个节点以上以保证REST Proxy为高可用的。
CU评估:如果您需要通过REST Proxy进行消息的持续生产和消费,您需要选择每个节点8 CU以上;否则,您可以选择每个节点4 CU。
集群资源性能对比
下表展示了不同CU个数下,集群的总吞吐量变化,以及单个Producer时延变化。您可以根据业务的数据流量以及时延要求,选择合适的集群CU个数。
以下测试结论在4 Broker规格集群、单Topic、300 Partion、60 Producer、单条消息大小1 KB的测试条件下获得,实际业务场景与测试环境可能存在一定的性能差异。
集群规格 | 不限流条件下, 集群总吞吐量 | 不限流条件下, Producer平均吞吐量 | 不限流条件下, 平均时延 | 时延小于100ms条件下, 集群总吞吐量 |
单Broker 4 CU | 370 MB/s | 5.95 MB/s | 9718 ms | 130 MB/s |
单Broker 8 CU | 400 MB/s | 7.33 MB/s | 8351 ms | 195 MB/s |
单Broker 12 CU | 400 MB/s | 7.39 MB/s | 8343 ms | 240 MB/s |
单Broker 16 CU | 400 MB/s | 7.47 MB/s | 8335 ms | 290 MB/s |
单Broker 20 CU | 400 MB/s | 7.58 MB/s | 8237 ms | 305 MB/s |
默认情况下,云消息队列 Confluent 版集群为4 Broker规格,具备400 MB/s吞吐量的集群性能。如果您希望增加集群的吞吐量性能,可以对集群进行水平扩容。每新增加一个Broker,集群吞吐量性能增加100 MB/s。
建议您在水平增加Broker时,为每个Broker配置8 CU及以上的计算资源,从而保证CU数不会成为影响集群吞吐量性能的瓶颈因素。
下表列出了不同Broker个数下,对应的集群吞吐量性能、消息处理能力,以及能够支持的Partion数量。
集群规格 | 集群吞吐量 | 每小时处理消息数 | 保证每个Partion吞吐量1MB/s,能够支持Partion数 |
4 Broker | 400 MB/s | 14.7亿条 | 400个 |
8 Broker | 800 MB/s | 29.5亿条 | 800个 |
12 Broker | 1200 MB/s | 44.2亿条 | 1200个 |
16 Broker | 1600 MB/s | 59亿条 | 1600个 |
20 Broker | 2000 MB/s | 73.7亿条 | 2000个 |
通常场景下,Partion吞吐量建议值在1 MB/s ~ 5 MB/s;对于低延迟需求的场景,应该限制每个Partion的吞吐量大小。当Partion数达到一定数量时,集群吞吐量会下降,时延增加。
集群规格选择建议
以下给出典型场景下的集群规格建议,您也可以参考Confluent官网指导文档。
使用场景 | 建议生产环境使用 | 建议测试环境使用 | ||||
集群规格 | 生产规格(400MB/s吞吐,不含复制流量) | 最小规格(300MB/s吞吐,不含复制流量) | ||||
配置指标 | CU | Disk | Nodes | CU | Disk | Nodes |
Kafka Brokers | 12 | 3 TB | 4 | 4 | 1 TB | 3 |
Zookeeper | 4 | 100 GB | 3 | 2 | 100 GB | 3 |
Kafka Connect | 12 | N/A | 2 | 4 | N/A | 2 |
Control Center | 12 | 300 GB | 1 | 4 | 250 GB | 1 |
Schema Registry | 2 | N/A | 2 | 2 | N/A | 2 |
REST Proxy | 16 | N/A | 2 | 4 | N/A | 2 |
KsqlDB | 4 | 100 GB | 2 | 4 | 100 GB | 2 |
创建集群后,您仍可以根据业务需求在不同规格的基础上调整集群资源配置。
集群组件资源分配规则
下表列出各组件的资源配置范围。
您可以根据业务需求,在以下支持的资源区间内选择合适的集群规格配置。
产品组件 | 支持版本 | 副本数量 | 单节点组件CU数 | 单节点Disk(进步式100 GB) |
Kafka Brokers | 专业版/企业版 | 默认值:3 最小值:3 最大值:20 | 默认值:4 最小值:4 最大值:20 | 默认值:1000 GB 范围:1000 GB - 30000 GB |
ZooKeeper | 专业版/企业版 | 默认值:3 最小值:3 最大值:3 | 默认值:2 最小值:2 最大值:20 | 默认值:100 GB 范围:100 GB - 30000 GB |
Control Center | 专业版/企业版 | 默认值:1 最小值:1 最大值:20 | 默认值:4 最小值:4 最大值:20 | 默认值:300 GB 范围:300 GB - 30000 GB |
Schema Register | 专业版/企业版 | 默认值:2 最小值:2 最大值:3 | 默认值:2 最小值:2 最大值:20 | 无存储 |
Kafka Connect | 专业版/企业版(默认勾选,可取消不使用该组件功能) | 默认值:2 最小值:2 最大值:20 | 默认值:8 最小值:4 最大值:20 | 无存储 |
KsqlDB | 专业版/企业版(默认勾选,可取消不使用该组件功能) | 默认值:2 最小值:2 最大值:20 | 默认值:4 最小值:4 最大值:20 | 默认值:100 GB 范围:100 GB - 30000 GB |
Rest Proxy | 专业版/企业版(默认勾选,可取消不使用该组件功能) | 默认值:2 最小值:2 最大值:20 | 默认值:8 最小值:4 最大值:20 | 无存储 |
相关文档
Confluent提供了针对Kafka和Confluent Platform的资源评估工具,该工具适用于云消息队列 Confluent 版,详情请参见Sizing Calculator for Apache Kafka and Confluent Platform。