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

73 阅读3分钟

这是我参与【第四届青训营-大数据场】笔记创作活动的第12天

消息队列

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

Data Platform;流数据平台

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

Kafka 架构介绍

Kafka 存储数据:

8878b21796fa45cf0e2345207d01f0e.png

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

选举机制:Paxos机制

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

提供可用性: 一半以上节点存活即可读写

6f3a8421cef78a41b24660777f98895.png

提供功能: watch 机制

持久/临时节点能力 Broker 角色

若干个 Broker 节点组成 Kafka 集群

  • Broker 作为消息的接收模块,使用 React 网络模型进行消息数据的接收
  • Broker 作为消息的持久化模块,进行消息的副本复制以及持久化
  • Broker 作为高可用模块,通过副本间的 Failover 进行高可用保证

Controller 选举

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

Controller 作用

  • Broker 重启/宕机时,负责副本的 Failover 切换
  • Topic 创建/删除时,负责 Topic meta 信息广播
  • 1集群扩缩容时,进行状态控制
  • Partition/Replica 状态机制
Coordinator 介绍
  • 负责 topic-partition <-> consumer 的负载均衡
  • 根据不同的场景提供不同的分配策略
  • Dynamic Membership Protocol Static Membership Protocol
  • Incremental Cooperative Rebalance

Kafka 高可用

  • 副本同步机制
  • 提供 lsr 副本复制机制,提供热备功能
  • 写入端提供 ack=0-1,1机制,控制副本同步强弱
  • 副本切换机制
  • 提供 clean/unclean 副本选举机制
AR
  • Assign Replica,已经分配的所有副本 OSR
  • . Out Sync Replica
  • 很久没有同步数据的副本 ISR
  • 一直都在同步数据的副本
  • 可以作为热备进行切换的副本
  • min.insync.replicas 最少 isr 数量配置 Clean 选举
  • 优先选取 lsr 中的副本作为 leader
  • 如果 lsr 中无可用副本,则 partition 不可用 Unclean 选举
  • 优先选取 lsr 中的副本作为 leader
  • 如果 lsr 中无可用副本,则选择其他存活副本
Kafka 集群扩缩容之后的目标
  • Topic 维度
  • partition 在各个 broker 之间分布是均匀的
  • 同一个 partition 的 replica 不会分布在一台 broker
  • Broker 维度
  • Broker 之间 replica 的数量是均匀的

a8c1132c5a67ce73b7544a2c723d8b6.png

Kafka 集群扩容步骤

· 扩容 Broker 节点 ·Leader 副本写入成功,Producer 即认为写成功

  • 计算均衡的 Replica 分布拓扑保证 Topic 的 partition 在 broker 间分布均匀 · 保证 Broker 之间 Replica 分布均匀 . Controller 负责新的副本分布元数据广播 · Controller 将新的 leader/follower 信息广播给 broker · Broker 负责新副本的数据同步 · Broker 上有需要同步数据的副本则进行数据同步