Kafka 详解  | 青训营笔记

115 阅读2分钟

Kafka 详解  | 青训营笔记

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

消息队列概述

1. 消息队列应用场景

1.1 MQ 消息通道:

image.png

1.2 EventBridge 事件总线:

image.png

  • 事件源:将云服务、自定义应用、SaaS应用等应用程序产生的事件消息发布到事件集。

  • 事件集:存储接收到的事件消息,并根据事件规则将事件消息路由到事件目标。

  • 事件目标:消费事件消息。

1.3 Data Platform 数据流平台:

image.png

  • 提供批/流数据处理能力
  • 各类组件提供各类Connect
  • 提供Streaming/Function能力
  • 根据数据schema灵活的进行数据预处理

2. 主流消息队列介绍

-   RabbitMQ
-   RocketMQ
-   Kafka
-   Pulsar

image.png

Kafka 详解

1. Kafka 架构介绍

image.png

1.1 Zookeeper

image.png

  • 选举机制:Paxos机制
  • 提供一致性:写入(强一致性)、读取(会话一致性)
  • 提供可用性:一半以上节点存活即可读写
  • 提供功能:watch机制、持久/临时节点能力

1.2 Broker

image.png

Broker角色:

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

1.3 Controller

Conrroller选举: image.png

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

Controller作用: image.png

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

1.4 Coordinator

image.png

  • 负责topic-partition <-> consumer 的负载均衡
  • 根据不同的场景提供不同的分配策略
    • Dynamic Membership Protocol
    • Static Membership Protocol
    • Incremental Cooperative Rebalance

2. Kafka 高可用

  • 副本同步机制
    • 提供lsr副本复制机制,提供热备功能
    • 写入端提供ack=0,-1,1机制,控制副本同步强弱
  • 副本切换机制
    • 提供clean/unclean副本选举机制

2.1 Kafka 副本 ISR 机制

image.png

  • AR
    • Assign Replica,已经分配的所有副本
  • OSR
    • Out Sync Replica
    • 很久没有同步数据的副本
  • ISR
    • 一直都在同步数据的副本
    • 可以作为热备进行切换的副本
    • min.insync.replica 最少isr数量配置

2.2 Kafka 写入 Ack 机制

  • Ack = 1
    • Leader 副本写入成功,Producer 即认为写成功
  • Ack = 0
    • OneWay 模式
    • Producer 发送后即为成功
  • Ack = -1 -ISR 中所有副本都成功,Producer 才认为写成功