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

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

一、消息队列概述

消息队列的应用场景

  • MQ消息通道
  • EventBridge事件总线
  • Data Platform流数据平台

MQ消息通道

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

EventBridge事件总线

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

Data Platform 流数据平台

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

二、Kafka详解

Zookeeper

Kafka存储数据:

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

Broker

Broker角色

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

Controller选举

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

Kafka高可用

副本同步机制

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

副本切换机制

  • 提供clean/unclean副本选举机制

三、Pulsar详解

Pulsar Proxy

Pulsar Proxy的作用及应用场景

  • 部分场景无法知道Broker地址,如云环境或者Kubernetes环境
  • Proxy提供类似GateWay代理能力,解耦客户端和Broker,保障Broker安全

Pulsar客户端连接集群的两种方式

  • Pulsar Client -> Broker
  • Pulsar Client -> Proxy

Bookkeeper基本概念

  • Ledger: BK的一个基本存储单元,BK Client的读写操作都是以Ledger为粒度的
  • Fragment: BK的最小分布单元(实际上也是物理上的最小存储单元),也是Ledger的组成单位,默认情况下一个Ledger会对应的一个Fragment (一个Ledger也可能由多个Fragment组成)
  • Entry:每条日志都是一个Entry,它代表一个record,每条record都会有一个对应的entry id