我有4台机器,其中Kafka群集配置了拓扑 每台机器都有一个动物园管理员和两个经纪人。
使用此配置,您对最佳主题和分区的建议是什么?
复制因子3: 使用kafka 0.10.XX
感谢?
答案 0 :(得分:6)
无论有多少节点(截至2017年7月),每个主题都限制在100,000个分区
主题数量取决于机器中最小RAM的大小。这是因为Zookeeper将所有内容保存在内存中以便快速访问(同时它不会对znodes进行分片,只需在写入时跨ZK节点进行复制)。这实际上意味着一旦你耗尽一台机器内存,ZK将无法添加更多主题。在Kafka代理节点上达到此限制之前,您很可能会用完文件句柄。
在他们的网站上引用KAFKA文档(6.1基本卡夫卡行动https://kafka.apache.org/documentation/#basic_ops_add_topic):
每个分片分区日志都放在Kafka日志目录下的自己的文件夹中。此类文件夹的名称由主题名称,短划线( - )和分区ID组成。由于典型的文件夹名称长度不能超过255个字符,因此主题名称的长度将受到限制。我们假设分区数量不会超过100,000。因此,主题名称不能超过249个字符。这在短划线的文件夹名称和可能的5位长分区ID中留下了足够的空间。
引用Zookeeper文档(https://zookeeper.apache.org/doc/trunk/zookeeperOver.html):
复制数据库是包含整个数据树的内存数据库。更新将记录到磁盘以获得可恢复性,并且写入在应用于内存数据库之前会序列化到磁盘。
性能:
根据您的发布和消费语义,主题分区有限性将发生变化。以下是一组您应该问自己的问题,以深入了解潜在的解决方案(您的问题是非常开放的):
良好链接:
http://cloudurable.com/ppt/4-kafka-detailed-architecture.pdf https://www.slideshare.net/ToddPalino/putting-kafka-into-overdrive https://www.slideshare.net/JiangjieQin/no-data-loss-pipeline-with-apache-kafka-49753844 https://kafka.apache.org/documentation/