我计划决定 Kafka 集群上应该存在多少个节点。我不确定要考虑的参数。我确信它必须 >=3(复制因子为 2,容错率为 1 个节点)。
有人可以告诉我在决定集群大小以及它们如何影响大小时应该记住哪些参数。
我知道以下因素,但不知道它如何定量地影响集群大小。我知道它如何定性地影响集群大小。还有其他影响集群大小的参数吗? 1. Replication factor (cluster size >= replication factor) 2. Node failure tolerance. (cluster size >= node-failure + 1)
在考虑所有参数的情况下,以下场景的集群大小应该是多少 1. There are 3 topics. 2. Each topic has messages of different size. Message size range is 10 to 500kb. Average message size being 50kb. 3. Each topic has different partitions. Partitions are 10, 100, 500 4. Retention period is 7 days 5. There are 100 million messages which gets posted every day for each topic.
有人可以将我指向相关文档或任何其他可能讨论此问题的博客。我用谷歌搜索了它,但无济于事
请您参考如下方法:
每个代理的总 MB/s 为:
数据/天 = (100×10^6 消息/天) × 0.5MB = 5TB/天每个主题
这为我们提供了每个 Broker 约 58MB/s 的数据。假设消息在分区之间平均分配,对于我们得到的整个集群:58MB/s x 3 Topics = 178MB/s 对于所有集群。
现在,对于复制,您有: 每个主题 1 个额外的副本。因此,这变为 58MB/sec/broker INCOMING 原始数据 + 58MB/sec/broker OUTGOING 复制数据 + 58MB/sec/broker INCOMING 复制数据。
每个代理入口约为 136MB/s,每个代理导出约为 58MB/s。
系统负载将变得非常高,这没有考虑任何流处理。
可以通过增加代理的数量并将您的主题拆分到更具体的分区来处理系统负载。
如果您的数据非常重要,那么您可能需要不同的(高)复制因子。容错性也是决定复制的一个重要因素。
例如,如果您有非常重要的数据,除了管理您的分区的 N 个事件代理(带有副本)之外,您可能需要在不同区域添加备用跟随者。
如果您需要非常低的延迟,那么您可能希望进一步增加您的分区(通过添加额外的键)。您拥有的 key 越多,每个分区上的消息就越少。
对于低延迟,您可能需要一个仅管理该特殊主题且不对其他主题进行额外计算的新集群(带有副本)。
如果某个主题不是很重要,那么您可能希望降低该特定主题的复制因子,并对某些数据丢失更具弹性。
在构建 Kafka 集群时,支持您的基础设施的机器应该具备同样的能力。那是因为分区是以循环方式完成的,您希望每个代理能够处理相同的负载,因此消息的大小无关紧要。
流处理的负载也将产生直接影响。管理你的 kafka 监视器和管理你的流的好软件是 Lenses ,我个人非常喜欢它,因为它与 processing real-time streams 的工作非常出色。

