kafka 体系结构
体系结构相关角色
- producer:生产者
- consumer :消费者
- Broker:可以看作一个独立的 Kafka 服务节点或 Kafka服务实例。一个或多个broker组成一个Kafka集群
Zookeeper集群 - partition:分区。一个主题包含多个分区,一个分区只属于单个主题。同个分区内,通过offset能保证有序,但跨分区不保证有序
- topic:主题。生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。
- replica:partition的副本(包含leader和follower两类)。通过增加副本数量可以提升容灾能力,一主多从,其中 leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步
- leader:leader挂了后,ISR中的follower有资格被选举成leader
- follower:从leader拉取消息进行同步
通过partition的水平扩展支持高性能,通过replica提升容灾能力
kafka 多副本架构
一主2从
AR ISR OSR
(恒等式:AR=ISR+OSR),(正常情况下,所有的follower都应该与leader保持一定程度的同步:OSR=0,AR=ISR)
- AR(Assigned Replicas)分区中的所有副本统称为AR
- ISR(On-Sync Replicas ):所有与 leader 副本保持 一定程度 同步 的副本(包括 leader 副本在内〕,这个一定程度是个范围,通过参数可以配置
- OSR ( Out-of-Sync Replicas):与 leader 副本同步 未到一定程度 的副本(不包 括 leader 副本)
leader 副本负责维护和跟踪 ISR 集合中所有 follower 副本的滞后状态,当 follower 副本落后太多或失效时,leader副本会把它从ISR集合中剔除。 如果OSR集合中有follower副本追上了 leader副本,那么 leader副本会把它从 OSR集合转移至 ISR集合
分区中各种偏移量
- HW (High Watermark)高水位 它标识 了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset之前的消息
- LEO (Log END offset) 底水位 下一条待写入消息的位置
- ISR 集合中最小的LEO既为HW,消费者只能消费HW 之前的消息,如下图IS集合中 follower2副本的LEO为4,则leader的HW为4 只能消费4之前的消息