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

93 阅读2分钟

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

消息队列概述

消息队列应用场景

  • MQ 消息通道:异步解耦 削峰填谷 高可用 发布订阅

  • EventBridge 事件总线

    • 事件源:将应用程序产生的事件消息发布到事件集
    • 事件集:存储事件消息,根据规则将事件消息路由到事件目标
    • 事件目标:消费事件消息
  • Data Platform 数据流平台

    • 提供流批 数据处理能力
    • 各类组件提伯那个各类Connect
    • 提供Streaming/Function能力
    • 根据数据schema灵活的进行数据预处理
  • 主流消息队列介绍 1660058122998.png

Kafka 详解

Kafka 架构介绍

1660058272473.png

  • Zookeeper集群
  • Broker 接收、持久化模块 高可用
  • Controller
    • 选举(分布式锁,存在且唯一)
    • 作用 1660059121939.png
  • Coordinator 负责topic-partition到consumer的负载均衡,不同场景有不同的分布策略

Kafka 高可用

  • 副本同步机制 AR/ISR(一直都在同步数据的副本,可以作为热备进行切换的副本,可用性和一致性之间寻找一个平衡)/OSR
  • 副本切换机制
  • kafka写入Ack机制(1/0/-1)
  • Kafka副本同步
  • Kafka副本选举:优先选取Isr中的副本作为leader 如果Isr中无可用副本,clean选举(注重一致性):则partition不可用 unclean:则选择其他存活副本(注重可用)

Kafka 集群扩缩容

  • Topic维度
  • partition在各个broker之间分布是均匀的
  • 同一个partition的replica不会分布在一台broker
  • Broker维度
  • Broker之间replica的数量是均匀的(保证Broker之间负载是均匀的)

扩容步骤:

  1. 扩容Broker节点
  2. 计算均衡的Replica分布拓扑
  3. Controller负责新的副本分布元数据广播
  4. Broker负责新副本的数据同步

缩容步骤:

  1. 计算均衡的Replica分布拓扑
  2. Controller负责新的副本分布元数据广播
  3. Broker负责新副本的数据同步
  4. 下线缩容的Broker节点

扩缩容问题:扩缩容时间长,扩缩容期间集群不稳定,扩缩容期间无法执行其他操作

Kafka 未来演进之路

  1. 去除zookeeper依赖
  2. 使用KRaft作为元数据和数据存储介质
  3. 存储计算分离演进

Kafka 运维/调优经验介绍

  1. 单机吞吐
  2. 参数配置
  3. 指标可视化
  4. 扩缩容优化