Skip to main content
NetApp artificial intelligence solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

浆纱

Kafka 大小调整可以通过四种配置模式进行:简单、粒度、反向和分区。

简单的

简单模式适合首次使用 Apache Kafka 的用户或早期使用案例。对于此模式,您可以提供吞吐量 MBps、读取扇出、保留和资源利用率百分比(默认值为 60%)等要求。您还可以进入环境,例如本地(裸机、VMware、Kubernetes 或 OpenStack)或云。根据这些信息,Kafka 集群的大小提供了代理、zookeeper、Apache Kafka 连接工作器、模式注册表、REST 代理、ksqlDB 和 Confluent 控制中心所需的服务器数量。

对于分层存储,请考虑使用粒度配置模式来确定 Kafka 集群的大小。粒度模式适合经验丰富的 Apache Kafka 用户或定义明确的用例。本节介绍生产者、流处理器和消费者的大小。

生产者

要描述 Apache Kafka 的生产者(例如本机客户端、REST 代理或 Kafka 连接器),请提供以下信息:

  • *姓名。*火花。

  • *生产者类型。*应用程序或服务、代理(REST、MQTT、其他)和现有数据库(RDBMS、NOSQL、其他)。您也可以选择“我不知道”。

  • *平均吞吐量。*以每秒事件数计算(例如 1,000,000)。

  • *峰值吞吐量。*以每秒事件数计算(例如 4,000,000)。

  • *平均消息大小。*以字节为单位,未压缩(最大 1MB;例如 1000)。

  • *消息格式。*选项包括 Avro、JSON、协议缓冲区、二进制、文本、“我不知道”和其他。

  • *复制因子。*选项为 1、2、3(Confluent 建议)、4、5 或 6。

  • *保留时间。*有一天(例如)。您希望将数据存储在 Apache Kafka 中多长时间?输入 -1 和任意单位可表示无限时间。计算器假设无限保留的保留时间为 10 年。

  • 选中“启用分层存储以减少代理数量并允许无限存储?”复选框。

  • 启用分层存储后,保留字段控制在代理本地存储的热数据集。档案保留字段控制数据在档案对象存储中的存储时间。

  • *档案存储保留。*一年(例如)。您希望将数据保存在档案存储中多长时间?输入 -1 和任意单位可获得无限持续时间。计算器假设无限保留的保留时间为 10 年。

  • 增长乘数。 1(例如)。如果此参数的值基于当前吞吐量,则将其设置为 1。要根据额外增长确定大小,请将此参数设置为增长乘数。

  • 生产者实例的数量。 10(例如)。将运行多少个生产者实例?此输入需要将 CPU 负载纳入到尺寸计算中。空白值表示 CPU 负载未纳入计算。

根据此示例输入,尺寸对生产者有以下影响:

  • 未压缩字节的平均吞吐量:1GBps。未压缩字节的峰值吞吐量:4GBps。压缩字节的平均吞吐量:400MBps。压缩字节的峰值吞吐量:1.6GBps。这是基于默认的 60% 压缩率(您可以更改此值)。

    • 所需的代理热集存储总量:31,104TB,包括复制和压缩。所需的总代理外存档存储:378,432TB(压缩)。使用"https://fusion.netapp.com"用于StorageGRID大小调整。

流处理器必须描述从 Apache Kafka 使用数据并返回到 Apache Kafka 的应用程序或服务。大多数情况下,这些都是在 ksqlDB 或 Kafka Streams 中构建的。

  • *姓名。*火花飘带。

  • *处理时间。*该处理器处理一条消息需要多长时间?

    • 1 毫秒(简单、无状态转换)[示例],10 毫秒(有状态的内存操作)。

    • 100ms(有状态网络或磁盘操作),1000ms(第三方 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 连接器。

  • *姓名。*激发消费者。

  • *处理时间。*该消费者需要多长时间来处理一条消息?

    • 1ms(例如,像日志记录这样的简单且无状态的任务)

    • 10ms(快速写入数据存储)

    • 100 毫秒(数据存储写入速度慢)

    • 1000ms(第三方 REST 调用)

    • 一些其他已知持续时间的基准测试过程。

  • *消费者类型。*应用程序、代理或接收器至现有数据存储(RDBMS、NoSQL 等)。

  • 这是从哪些应用程序读取的?将此参数与之前确定的生产者和流大小连接起来。

根据以上输入,您必须确定消费者实例的大小和主题分区估计。消费者应用程序需要以下数量的实例。

  • 平均吞吐量为 2,000,无增长乘数

  • 峰值吞吐量为 8,000,无增长乘数

  • 平均吞吐量为 2,000,包括增长乘数

  • 峰值吞吐量为 8,000,包括增长乘数

传入的主题可能也需要这个数量的分区。联系 Confluent 进行确认。

除了对生产者、流处理器和消费者的要求之外,您还必须提供以下额外要求:

  • *重建时间。*例如4小时。如果 Apache Kafka 代理主机发生故障,其数据丢失,并且需要配置新主机来替换故障主机,那么这个新主机必须多快重建自身?如果值未知,请将此参数留空。

  • *资源利用率目标(百分比)。*例如,60。您希望您的主机在平均吞吐量期间的利用率如何? Confluent 建议利用率为 60%,除非您使用 Confluent 自平衡集群,在这种情况下利用率可能会更高。

描述你的环境

  • *您的集群将在什么环境中运行?*亚马逊网络服务、微软 Azure、谷歌云平台、本地裸机、本地 VMware、本地 OpenStack 还是本地 Kubernates?

  • *主人详细信息。*核心数:例如48个,网卡类型(10GbE、40GbE、16GbE、1GbE或其他类型)。

  • *存储卷。*主持人:12(例如)。每个主机支持多少个硬盘或 SSD? Confluent 建议每个主机配备 12 个硬盘。

  • 存储容量/卷(以 GB 为单位)。 1000(例如)。单个卷可以存储多少 GB 的存储空间? Confluent 建议使用 1TB 磁盘。

  • 存储配置。存储卷如何配置? Confluent 建议使用 RAID10 来充分利用 Confluent 的所有功能。还支持 JBOD、SAN、RAID 1、RAID 0、RAID 5 和其他类型。

  • 单卷吞吐量(MBps)。 125(例如)。单个存储卷每秒的读取或写入速度是多少兆字节? Confluent 推荐使用标准硬盘,其吞吐量通常为 125MBps。

  • 内存容量(GB)。 64(例如)。

确定环境变量后,选择“Size my Cluster”。根据上面指出的示例参数,我们确定了 Confluent Kafka 的以下大小:

  • *Apache Kafka。*经纪人数量:22。您的集群受存储限制。考虑启用分层存储以减少主机数量并允许无限存储。

  • Apache ZooKeeper。数量:5;Apache Kafka Connect Workers:数量:2;Schema Registry:数量:2;REST Proxy:数量:2;ksqlDB:数量:2;Confluent Control Center:数量:1。

对于平台团队,请使用反向模式,无需考虑用例。使用分区模式来计算单个主题需要多少个分区。看 https://eventsizer.io根据反向和分区模式进行大小调整。