1 controller broker选举.
kafka所有的broker都会在zookeeper注册。但是同一时刻只会存在一个controller. 其它的叫fellow。
通过zookeeper 的 get /controller可以获取controller信息。
2 controller作用:
2.1 controller会监听zookeeper上元数据信息的变化,并将元数据信息同步到所有follower上。 每个broker都会保存独立的元数据信息在内存。
producer写数据时,我们有个参数bootstraper, 可以填任意个节点。 原因是每个节点都有独立的元数据信息。
2.2 监控所有其它的broker
如果其中一个挂了,会将该broker下所有分区的副本重新选择一个leader, 由该leader进行读写操作。(注意:副本在kafka信息中,以broker编号的形式体现)
参考:kafka写入源码过程 https://www.jianshu.com/p/afb2c314fee0