从Kafka到Pulsar:数据流演进之路 | 青训营笔记

102 阅读3分钟

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


0x00 消息队列概述

0.1 消息队列应用场景

12_消息队列应用场景.png

0.1.1 MQ消息通道

12_MQ消息通道.png

  • 异步解耦
  • 削峰填谷
  • 发布订阅
  • 高可用

0.1.2 EventBridge数据总线

  1. 事件源:将云服务、自定义应用、SaaS应用 等应用程序产生的事件消息发布到事件集。
  2. 事件集:存储接收到的事件消息,并根据事件规则将事件消息路由到事件目标。
  3. 事件目标:消费事件消息。

12_数据总线.jpeg

0.1.3 Data Platform流数据平台

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

12_流数据平台.png

0.2 主流消息队列介绍

12_主流消息队列介绍.png


0x01 Kafka详解

1.1 Kafka 架构介绍

12_Kafka架构介绍.png

1.1.1 Zookeeper

Kafka存储数据:

  1. Broker Meta信息(临时节点)
  2. Controller信息(临时节点)
  3. Topic信息(持久节点)
  4. Config信息(持久节点)

12_Zookeeper.png

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

1.1.2 Broker

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

12_Broker.png

1.1.3 Controller

  • Controller选举

    • Broker启动会尝试去zk中注册controller节点
    • 注册上controller节点的broker即为controller
    • 其余broker会watch controller节点,节点出现异常则进行重新注册 12_Controller选取.png
  • Controller作用

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

1.1.4 Coordinator

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

1.2 Kafka 高可用

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

12_Kafka高可用.png

1.2.1 Kafka副本ISR机制

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

12_Kafka副本ISR机制.png

1.2.2 Kafka写入Ack机制

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

1.2.3 Kafka副本同步

  • LEO
    • Log End Offset,日志最末尾的数据
  • HW
    • ISR中最小的LEO作为HW
    • HW的消息为Consumer可见的消息

12_Kafka副本同步.png

1.2.4 Kafka副本选举

12_Kafka副本选举.png

1.3 Kafka 集群扩缩容

Kafka集群扩缩容之后的目标:

  • Topic维度
    • partition在各个broker之间分布是均匀的
    • 同一个partition的replica不会分布在一台brok6
  • Broker维度
    • Broker之间replica的数量是均匀的

12_Kafka集群缩扩容.png

1.4 Kafka 未来演进之路

12_Kafuka未来演进.png


0x02 Pulsar详解

2.1 Pulsar 架构介绍

12_Pulsar架构介绍.jpeg

2.1.1 Pulsar Proxy

12_Pulsar Proxy.png

2.1.2 Pulsar Broker

12_PulsarBroker.jpeg

2.1.3 Pulsar Storage

12_PulsarStorage.png

2.2 Bookkeeper 介绍

2.2.1 Bookeeper整体架构

12_Bookkeeper0.jpeg

12_Bookkeeper1.png