Kafka到Pulsar数据流演进之路(一) | 青训营笔记

100 阅读2分钟

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

1 消息队列

1.1 消息队列的应用场景

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

1.1.2 MQ消息通道

消息队列作为消息生产端和消费端的中间环节。

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

1.1.3 EventBridge 数据总线

消息队列收集事件源,通过一定规则路由到事件目标中。

事件源:将云服务、自定义应用、SaaS应用等应用程序产生的事件消息发布到事件集。

事件集:存储接收到的事件消息,并根据事件规则将事件消息路由到事件目标。

事件目标:消费事件消息。

image.png

1.1.3 Data Platform 流数据平台

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

image.png

1.2 主流消息队列

RabbitMQRocketMQKafkaPulsar
推出时间2007201220102016
开发语言ErlangJavaScala/JavaJava
单机吞吐量一般较高
延迟一般
可用性(分片)高(主从架构)高(主从架构)非常高(分布式)非常高(分布式)
一致性较高
扩展性较高

2 Kafka

2.1 Kafka架构介绍

(1) ZooKeeper

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

Paxos机制,leader和server节点会投票,获得大部分选票的会成为leader,其他节点会成为server observer是为了扩展读能力产生的节点。 leader节点数据会像server和observer节点进行拷贝。

(2) Broke角色

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

(3) Controller选举

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

2.2 Kafka高可用

副本同步机制

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

副本切换机制

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