一个Topic的多个分区,被分布在kafka集群中的多个server上。每个分区都有一个server为"leader";leader负责所有的读写操作,如果leader失效,那么将会有其他follower来接管(成为新的leader);follower只是单调的和leader 跟进,同步消息即可。由此可见作为leader的server承载了全部的请求压力,因此从集群的整体考虑,有多少个partitions就意味着有多 少个"leader",kafka会将"leader"均衡的分散在每个实例上,来确保整体的性能稳定。
具体流程:
1. Producer根据指定的partition方法,将消息发布到指定topic的partition里面
2. kafka集群接收到Producer发过来的消息后,将其持久化到硬盘
3.Consumer从kafka集群pull数据,并控制获取消息的offset