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