Kafka 中的 Partition 是有序消息日志,为了实现高可用性,需要采用备份机制,将相同的数据复制到多个 Broker 上,而这些备份日志就是 Replica,目的是为了 防止数据丢失。
所有 Partition 的副本默认情况下都会均匀地分布到所有 Broker 上,一旦领导者副本所在的 Broker 宕机,Kafka 会从追随者副本中选举出新的领导者继续提供服务。
Replica(副本)
- 定义:
Replica是指一个分区在多个 Broker 上的复制版本。每个分区可以有一个或多个副本,以增加系统的容错能力和数据的持久性。 - 作用:通过多个副本,Kafka 可以保证即使某个 Broker 失效,数据仍然可以被访问和处理。此外,副本还可以用于负载均衡,提高系统的读取性能。
Leader(领导者)
- 定义:
Leader是一个分区的主副本,在所有副本中,只有 Leader 才能接收客户端的读写请求。 - 作用:Leader 负责处理来自客户端的所有读写操作,并且负责将写入的数据复制到其他的副本(Follower)。Leader 还负责维护分区的日志状态,如
High Watermark(HW)和Log End Offset(LEO)。
Follower(跟随者)
- 定义:
Follower是除 Leader 以外的其他副本。Follower 会从 Leader 中异步复制数据。 - 作用:Follower 的主要任务是从 Leader 中拉取数据,并保持与 Leader 的数据一致。Follower 不直接处理客户端请求,但在 Leader 失效时,其中一个 Follower 可以被提升为新的 Leader。