我正在考虑如何部署我们的kafka集群:一个包含几个代理组或几个集群的大集群。如果是一个大的集群,我想知道一个kafka集群可以有多大。kafka有一个控制器节点,我不知道它能支持多少个代理。另一个是_consume_offset_主题,它可以有多大,我们可以向它添加更多分区。
发布于 2019-05-08 14:49:41
我个人使用过生产Kafka集群,从3个经纪人到20个经纪人。它们都工作得很好,这只是取决于你投入了什么样的工作负荷。对于Kafka,我的总体建议是拥有更少数量的更大/更强大的代理,而不是拥有一堆微型服务器。
对于常备集群,您添加的每个代理都会增加节点之间的“串扰”,因为它们必须移动分区、复制数据以及同步维护元数据。这种额外的网络聊天可能会影响代理可以处理的负载量。一般来说,添加代理将增加总体容量,但您必须移动分区,以便在整个集群中适当地平衡负载。因此,最好从10个节点开始,这样主题和分区将从一开始均匀分布,而不是从6个节点开始,然后添加4个节点。
无论群集的大小如何,一次始终只有一个控制器节点。如果该节点碰巧关闭,另一个节点将接管控制器,但假设群集未处于不稳定状态,则在给定时间只能有一个节点处于活动状态。
__consumer_offsets主题可以有任意多个分区,但它默认设置为50个分区。由于这是一个紧凑的主题,假设没有过多的提交发生(在生产环境中我已经发生过两次),那么默认设置应该足以满足几乎任何场景。您可以通过在Kafka官方文档中查找以offsets.开头的代理属性来查找消费者偏移量主题的配置设置。
你可以在卡夫卡官方文档页面获得更多详细信息:https://kafka.apache.org/documentation/
发布于 2019-05-09 01:49:57
集群的大小可以通过以下方式确定。
对您的用例进行建模的最准确的方法是模拟您自己的负载,您可以使用kafka load generation tools kafka-producer-perf-test hardware.You kafka-consumer-perf-test。
基于生产者和消费者指标,我们可以决定集群的代理数量。
另一种方法是没有模拟,这是基于您获得所需数据保留期的数据的估计速率。
我们还可以计算吞吐量,并在此基础上确定集群中代理的数量。
示例
如果每秒有800条消息,每条消息有500字节,那么吞吐量就是800*500/(1024*1024) = ~0.4MB/s。现在,如果您的主题是分区的,并且您有3个代理和3个副本在运行,这将导致0.4/3*3=0.4MB/s。
有关该架构的更多详细信息,请访问confluent。
在Kafka集群中,单个代理充当控制器。如果您有一个由100个代理组成的集群,那么其中一个代理将充当控制器。
如果我们在内部交谈,每个代理都会尝试在zookeeper(/controller)中创建一个节点(临时节点)。第一个成为控制器。其他代理得到一个异常(“节点已经存在”),他们在控制器上设置监视。当控制器终止时,临时节点被移除,并且监视代理被通知用于控制器选择过程。
控制器的功能可以在here中找到。
__consumer_offset主题用于存储消费者提交的偏移量。它的默认值是50,但可以为更多的分区设置。若要更改,请设置offsets.topic.num.partitions属性。
https://stackoverflow.com/questions/56033682
复制相似问题