这是我参与「第四届青训营 」笔记创作活动的第12天

55 阅读2分钟

数据流演进之路

2.1.1 ZooKeeper Kafka 存储数据:

Broker Meta 信息(临时节点) Controller 信息(临时节点) Topic 信息(持久节点) Config 信息(持久节点) 选举机制

Paxos 机制 提供一致性

写入(强一致性) 读取(会话一致性) 提供可用性

一半以上节点存活即可读写 提供功能

watch 机制 持久/临时节点能力 2.1.2 Broker Broker 角色

若干个 Broker 节点组成 Kafka 集群 Broker 作为消息的接收模块,使用 React 网络模型进行消息数据的接收 Broker 作为消息的持久化模块,进行消息的副本复制以及持久化 Broker 作为高可用模块,通过副本间的Failover 进行高可用保证 2.1.3 Controller 选举 Controller 选举

Broker 启动会尝试去 zk 中注册 controller 节点 注册上 controller 节点的 broker 即为 controller 其余 broker 会 watch controller 节点,节点出现异常则进行重新注册

  • Controller 作用

    • Broker 重启/宕机时,负责副本的 Failover 切换
    • Topic 创建/删除时,负责 Topic meta 信息广播
    • 集群扩缩容时,进行状态控制
    • Partition/Replica 状态机维护

2.1.4 Coordinator Coordinator 介绍

负责 topic-partition <-> consumer 的负载均衡

根据不同的场景提供不同的分配策略

Dynamic Membership Protocol Static Membership Protocol Incremental Cooperative Rebalance Kafka 高可用

副本同步机制

提供 isr 副本复制机制,提供热备功能 写入端提供 ack=0,-1,1机制,控制副本同步强弱 副本切换机制

提供 clean/unclean 副本选举机制 2.2.1 Kafka 副本 ISR 机制 AR

Assign Replica,以及分配的所有副本 OSR

Out Sync Replica,很久没有同步数据的副本 ISR

一直都在同步数据的副本 可以作为热备进行切换的副本 min.insync.replicas 最少 isr 数据配置 2.2.2 Kafka 写入 Ack 机制 Ack = 1

Leader 副本写入成功,Producer 即认为写成功 Ack = 0

OneWay 模式 Producer 发送后即为成功 Ack = -1

ISR 中所有副本都成功,Producer 才认为写成功 2.2.3 Kafka 副本同步 LEO

Log End Offset,日志最末尾的数据 HW

ISR 中最小的 LEO 作为 HW HW 的消息为 Consumer 可见的消息