分区原因:
1.提高负载能力。
2.提高读写并发能力。
-
[x] 副本leader负责读写,follower负责备份(选举出leader)
- [x] 投递消息的分区策略
生产者发送消息的时候,会将消息数据封装成一个ProducerRecord对象。
ProducerRecord(…参数…..);
@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投递分区。