Kafka Producer架构 - 选择记录的分区
本节课将介绍Kafka生产者架构的一些较低层次的细节。我们将介绍Kafka生产者架构,讨论了如何选择分区、生产者节奏和分区策略。
Kafka Producers
Kafka生产者将记录发送到主题。这些记录有时被称为消息。
生产者选择将记录发送到每个主题的哪个分区。生产者可以循环发送记录。生产者可以根据记录的优先级将记录发送到特定的分区,从而实现优先级系统。
一般来说,生产者根据记录的键(key)将记录发送到一个分区。Java的默认分区器使用记录键(key)的hash散列来选择分区,如果记录没有键,则使用轮询策略。
这里的重要概念是生产者挑选分区。
如下图所示,生产者在offset 12上写入,同时消费者组A在offset 9读取。
Kafka生产者写记录的节奏和分区
生产者按其节奏写入,因此不能保证跨分区的记录顺序。
生产者可以配置他们的一致性/持久性级别(ack=0, ack=all, ack=1),我们将在后面介绍。
生产者选择分区,以便Record/消息根据数据进入给定分区。例如,可以将具有某个'employeeId'的所有事件放到同一个分区中。如果不需要分区内的顺序,可以使用“Round Robin”(轮询)分区策略,这样记录就可以均匀地分布在各个分区上。
Kafka Producer架构常见问题
问:生产者偶尔会比消费者写得快吗?
答:是的。生产者可以有大量的记录,而消费者不必与消费者在同一页上。
问:没有使用key的生产者的默认分区策略是什么?
答:Round-Robin(轮询)。
问:对于使用key的生产者的默认分区策略是什么?
答:具有相同键(key)的记录被发送到相同的分区。
问:谁选择将记录发送到哪个分区?
答:生产者选择一个记录到哪个分区。