规模估算
Kafka 规模估算可通过四种配置模式来执行:简单,精细,反向和分区。
简单
简单模式适用于首次使用 Apache Kafka 的用户或早期使用情形。对于此模式,您可以提供吞吐量 MBps ,读取扇出,保留和资源利用率百分比等要求(默认为 60% )。您还可以进入内部环境(裸机, VMware , Kubernetes 或 OpenStack )或云。根据这些信息, Kafka 集群的规模估算可提供代理, zookeeper , Apache Kafka Connect 工作人员,架构注册表, REST 代理, ksqlDB 和 Confluent 控制中心所需的服务器数量。
对于分层存储,请考虑采用粒度配置模式来估算 Kafka 集群的规模。粒度模式适用于经验丰富的 Apache Kafka 用户或定义明确的用例。本节介绍了针对生产者,流处理器和使用者的规模估算。
生产者
要描述 Apache Kafka 的生成方(例如原生客户端, REST 代理或 Kafka 连接器),请提供以下信息:
-
* 名称 * Spark 。
-
* 生成方类型。 * 应用程序或服务,代理( REST , MQT ,其他)和现有数据库( RDBMS , NoSQL ,其他)。您也可以选择 " 我不知道 " 。
-
* 平均吞吐量 * ,以每秒事件数(例如 1 , 000 , 000 )表示。
-
* 峰值吞吐量 * ,以每秒事件数(例如 4 , 000 , 000 )表示。
-
* 平均消息大小 * ,以字节为单位,未压缩(最大 1 MB ;例如 1000 )。
-
* 消息格式。 * 选项包括 Avro , JSON ,协议缓冲区,二进制文件,文本, " 我不知道 " 等。
-
* 复制因子。 * 选项包括 1 , 2 , 3 ( Confluent 建议), 4 , 5 , 或 6.
-
* 保留时间 * 一天(例如)。您希望将数据存储在 Apache Kafka 中多长时间?输入 -1 并输入任意单位,持续时间不受限制。计算器假定保留时间为 10 年,以实现无限保留。
-
选中 " 启用分层存储以减少代理数量并允许无限存储? " 复选框
-
启用分层存储后,保留字段将控制存储在代理本地的热数据集。归档保留字段用于控制数据在归档对象存储中的存储时间。
-
* 归档存储保留。 * 一年(例如)。您希望将数据存储在归档存储中多长时间?输入 -1 并输入任意单位,持续时间不受限制。计算器假定保留 10 年以实现无限保留。
-
* 增长乘数 * 1 (例如)。如果此参数的值基于当前吞吐量,请将其设置为 1 。要根据其他增长调整大小,请将此参数设置为增长乘数。
-
* 生产商实例数。 * 10 (例如)。将运行多少个生产商实例?要将 CPU 负载纳入规模估算计算,需要使用此输入。如果值为空,则表示 CPU 负载未计入计算中。
根据此示例输入,规模估算对生成方具有以下影响:
-
未压缩字节的平均吞吐量: 1 Gbps 。未压缩字节的峰值吞吐量: 4 Gbps 。以压缩字节为单位的平均吞吐量: 400 Mbps 。以压缩字节为单位的峰值吞吐量: 1.6 GBps 。此值基于默认 60% 的压缩率(您可以更改此值)。
-
所需的总代理热设置存储: 31 , 104 TB ,包括复制,已压缩。所需的代理外归档存储总量: 378 , 432 TB ,已压缩。使用 … "https://fusion.netapp.com" 用于 StorageGRID 规模估算。
-
流处理器必须描述其应用程序或服务,这些应用程序或服务会使用 Apache Kafka 中的数据并生成回 Apache Kafka 。大多数情况下,这些数据存储库内置在 ksqlDB 或 Kafka 流中。
-
* 名称 * 。 * Spark 流式传输器。
-
* 处理时间。 * 此处理器处理单条消息需要多长时间?
-
1 毫秒(简单,无状态转换) [ 示例 ] , 10 毫秒(有状态内存操作)。
-
100 毫秒(有状态网络或磁盘操作), 1000 毫秒(第三方 REST 调用)。
-
我已对该参数进行了基准测试,并确切了解它需要多长时间。
-
-
* 输出保留 * 1 天(示例)。流处理器会将其输出返回到 Apache Kafka 。您希望将此输出数据存储在 Apache Kafka 中多长时间?输入 -1 并输入任意单位,持续时间不受限制。
-
选中 " 启用分层存储以减少代理数量并允许无限存储? " 复选框
-
* 归档存储保留。 * 1 年(例如)。您希望将数据存储在归档存储中多长时间?输入 -1 并输入任意单位,持续时间不受限制。计算器假定保留 10 年以实现无限保留。
-
* 输出直通百分比 * 100 (例如)。流处理器会将其输出返回到 Apache Kafka 。多少百分比的入站吞吐量将输出回 Apache Kafka ?例如,如果入站吞吐量为 20Mbps ,而此值为 10 ,则输出吞吐量将为 2Mbps 。
-
从哪些应用程序读取此数据?选择 "Spark " ,即在基于生产商类型的规模估算中使用的名称。根据上述输入,估算流处理程序实例和主题分区估计值时可能会产生以下影响:
-
此流处理器应用程序需要以下数量的实例。传入的主题可能也需要这么多分区。请联系 Confluent 以确认此参数。
-
1 , 000 表示平均吞吐量,无增长乘数
-
4 , 000 表示峰值吞吐量,无增长乘数
-
1 , 000 表示使用增长乘数的平均吞吐量
-
4 , 000 表示峰值吞吐量,并使用增长乘数
-
使用者
请描述您使用 Apache Kafka 中的数据而不生成回 Apache Kafka 的应用程序或服务,例如原生客户端或 Kafka 连接器。
-
* 名称 * 。 * Spark 使用者。
-
* 处理时间。 * 此使用者需要多长时间处理一条消息?
-
1 毫秒(例如,日志记录等简单无状态任务)
-
10 毫秒(快速写入数据存储库)
-
100 毫秒(写入数据存储库的速度较慢)
-
1000 毫秒(第三方 REST 调用)
-
已知持续时间的其他一些基准流程。
-
-
* 使用者类型。 * 应用程序,代理或接收到现有数据存储库( RDBMS , NoSQL ,其他)。
-
从哪些应用程序读取此数据?将此参数与先前确定的生成方和流规模估算相连接。
根据上述输入,您必须确定使用者实例的规模估算和主题分区估算。使用者应用程序需要以下数量的实例。
-
2 , 000 表示平均吞吐量,无增长乘数
-
峰值吞吐量为 8 , 000 ,无增长乘数
-
2 , 000 表示平均吞吐量,包括增长乘数
-
8 , 000 表示峰值吞吐量,包括增长乘数
传入主题可能也需要此数量的分区。请联系 Confluent 进行确认。
除了对生产者,流处理器和使用者的要求之外,您还必须满足以下附加要求:
-
* 重建时间。 * 例如, 4 小时。如果 Apache Kafka 代理主机发生故障,其数据丢失,并且配置了新主机来更换发生故障的主机,则新主机必须自行重建多快?如果此值未知,请将此参数留空。
-
* 资源利用率目标(百分比)。 * 例如 60 。您希望主机在平均吞吐量期间的利用率如何?除非您使用的是 Confluent 自平衡集群,否则 Confuent 建议使用 60% 的利用率,在这种情况下,利用率可能会更高。
描述您的环境
-
* 您的集群将在什么环境中运行? * Amazon Web Services , Microsoft Azure , Google 云平台,内部裸机,内部部署 VMware , 内部使用 OpenStack 还是内部使用 Kubernates ?
-
* 主机详细信息。 * 核心数: 48 (例如),网卡类型( 10GbE , 40GbE , 16GbE , 1GbE 或其他类型)。
-
* 存储卷。 * 主机: 12 (例如)。每个主机支持多少个硬盘驱动器或 SSD ?因此,建议每个主机配置 12 个硬盘驱动器。
-
* 存储容量 / 卷(以 GB 为单位)。 * 1000 (例如)。单个卷可以存储多少 GB 的存储?这两者建议使用 1 TB 磁盘。
-
* 存储配置。 * 如何配置存储卷?Confuent 建议使用 RAID10 来利用所有 Confluent 功能。JBOD , SAN , RAID 1 , RAID 0 , RAID 5 , 此外,还支持其他类型。
-
* 单卷吞吐量( MBps )。 * 125 (例如)。单个存储卷的每秒读取或写入速度(以 MB/ 秒为单位)有多快?Confuent 建议使用标准硬盘驱动器,这些驱动器的吞吐量通常为 125 MBps 。
-
* 内存容量( GB ) .* 64 (例如)。
确定环境变量后,选择调整集群大小。根据上述示例参数,我们确定了以下 Confluent Kafka 规模估算:
-
* Apache Kafka.* 代理计数: 22 。您的集群受存储限制。请考虑启用分层存储以减少主机数量并允许无限存储。
-
* Apache zookeeper 。 * 计数: 5 ; Apache Kafka Connect Worker :计数: 2 ;架构注册表:计数: 2 ; REST 代理:计数: 2 ; ksqlDB :计数: 2 ; Confluent Control Center :计数: 1 。
对平台团队使用反向模式,而不考虑使用情形。使用分区模式计算单个主题所需的分区数。请参见 https://eventsizer.io 用于根据反向和分区模式进行规模估算。