对于多租户kafka集群,我想控制指定kakfa代理上的Topic分区分配。例如,主题A可以位于代理1,代理2上;并且主题B可以位于Broker-3,broker-4上。
kafka有这种机制吗?例如,我们可以为代理和主题设置标签吗,只能将具有相同标签的主题放在代理上。
答案 0 :(得分:1)
是的,这是配置主题的一部分。来自docs:
分布日志的分区分布在 Kafka群集中的服务器,每个服务器处理数据和 请求共享分区。每个分区被复制 跨可配置数量的服务器进行容错。
每个分区都有一个充当“领导者”的服务器,零或 更多充当“追随者”的服务器。领导者处理所有阅读和 跟随者被动地写入分区请求 复制领导者。如果领导者失败,则跟随者之一将 自动成为新的领导者。每个服务器都充当领导者 它的一些分区和其他分区的跟随者,因此负载很好 在集群中保持平衡。
您可以指定分区和副本的数量,Kafka将分发它们,或者您可以指定分区/副本的位置。
#non manual assignment example
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replication-factor 2 --partitions 123
# Create topic with manual replica assignment
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2