我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段
比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就50个分区),每个分区放在不同的broker上,那么我们要保证这50台服务器都不能宕机,一旦服务器宕机,分区数据就丢失了,保障服务不宕机这是很难的,所以Kafka给我们提供了副本机制
副本机制
- 在Kafka中,将主题分成多个分区
- 分区有两个角色,
Leader
分区和Follower
分区 - Kafka对外提供读写服务的是Leader分区
- Follower分区
只
负责从Leader分区同步
消息,与Leader分区保持一致 - Follower分区一定和Leader分区放在不同的服务器(broker)上,否则就没有意义了,一宕全宕
- 当Leader分区宕机,会从Follower分区(ISR同步副本)选出一个转换成Leader分区继续对外提供服务
我们举个🌰,如下图;