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

68 阅读2分钟

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

消息队列概述

  • 消息队列应用场景

    • MQ 消息通道
    • EventBridge 事件总线
    • Data Platform 数据流平台
  • 主流消息队列介绍

    • RabbitMQ
    • RocketMQ
    • Kafka
    • Pulsar

Kafka

Kafka存储数据:

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

Broker角色

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

Controller选举

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

Controller作用

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

image.png

Coordinator

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

Kafka写入Ack机制

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

Kafka集群扩容步骤

  • 扩容Broker节点
    • Leader副本写入成功,Producer即认为写成功
  • 计算均衡的Replica分布拓扑
    • 保证Topic的partition在broker间分布均匀
    • 保证Broker之间Replica分布均匀
  • Controller负责新的副本分布元数据广播
    • Controller将新的leader/follower信息广播给broker
  • Broker负责新副本的数据同步
    • Broker上有需要同步数据的副本则进行数据同步

Kafka集群缩容步骤

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

Pulsar功能

image.png