分区原因:

1.提高负载能力。
2.提高读写并发能力。

  • [x] 副本leader负责读写,follower负责备份(选举出leader)

  • [x] 投递消息的分区策略
    生产者发送消息的时候,会将消息数据封装成一个ProducerRecord对象。
    ProducerRecord(…参数…..);
    kafka笔记:kafka生产者消息投递分区策略

@NotNull string topic 主题 string类型部位空
integer partition 分区序号,如0,1,2
string key
string value

分为三种情况:

  • 指定partition分区序号,则直接将消息投递进指定序号的分区。
  • 没有指定partition分区序号,指定了key的情况下。对key进行hash得到的值,跟topic的分区数量进行取模得到partition分区的值。如一个topic的分区数量为3,则hash(key)%3为消息投递的分区。
  • 没有指定分区partition和没有指定key,则进行轮询RoundRobin投递分区。