请耐心等待。我对卡夫卡很新。 我正在研究生产者可以在运行时(不是固定数字)出现并发布消息的项目。目前,他们发布到kafka经纪人在运行时创建的唯一主题(topic.uuid),我在另一端订阅了一个订阅了topic。*模式并订阅了所有主题,并在新主题进入时进行了重新平衡。这是正确的做法吗?
现在,我很困惑,如果我们有一个主题有多个分区或多个主题,每个分区有一个分区。技术上,它是相同的。
但是,获得新分区(在运行时)和每个分区(在运行时)的新消费者所涉及的复杂性是什么,以实现更高的吞吐量,因为在各种博客中提到,分区数应该具有相同数量的消费者一个小组。
答案 0 :(得分:15)
主题。您可以拥有多个主题,每个主题用于特定的消息系列。
从技术/架构的角度来看,例如您可以拥有一个解析重要消息的主题 另一个使用日志压缩进行批量加载/备份的主题,以获得更精细的每条记录保留策略。
分区很有意思。 Kafka是一个分布式系统。主题可以有多个分区。当您拥有多个Kafka代理时,每个代理都将获得一组他们负责分配的分区。
例如如果您有一个包含24个分区的主题并且您生成了3个Kafka 经纪人,每个人将负责8个分区。卡夫卡 和Zookeeper将负责处理这些负载分布 在代理的情况下正确分区和重新分配分区 沮丧。
消费者可以从这些分区中读取并从领导经纪人处读取。如果在使用者组中有多个使用者,则这些使用者将分发他们读取的分区。
例如如果消费者群体中的消费者数量多于主题中的分区,则某些消费者将永远不会收到任何消息。