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

133 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第12天,以下是我的课堂笔记。 本次课程主要分为四个大板块:
1.消息队列概述
2.Kafka 详解
3. pulsar 详解
4. 周边和生态

1.消息队列概述

1.1.消息队列的应用场景

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

1.2主流消息队列的相关介绍

image.png

2.Kafka 详解

2.1 Kafka架构介绍

image.png

2.2 Kafka高可用

可用性定义
image.png
Kafka高可用
副本同步机制

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

副本切换机制

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

2.3 Kafka集群扩缩容

Kafka集群扩缩容之后的目标
Topic维度

  • partition在各个broker之间分布是均匀的
  • 同一个partition的replica不会分布在一台broker

Broker维度

  • Broker 之间replica的数量是均匀的

image.png

2.4 Kafka集群扩缩容问题

扩缩容时间长

  • 涉及到数据迁移,在生产环境中一次扩缩容可能要迁移TB甚至PB的 数据

扩缩容期间集群不稳定

  • 保证数据的完整性,往往会从最老的数据进行同步,这样会导致集群 时刻处于从磁盘读取数据的状态,disk/net/cpu负载都会比较高

扩缩容期间无法执行其他操作

  • 在一次扩缩容操作结束之前,无法进行其他运维操作(扩缩容)

2.5 Kafka未来演进之路

image.png

2.6 Kafka运维/调优经验介绍

image.png

3. pulsar 详解

3.1 Pulsar 架构介绍

image.png

3.2 Bookeeper

image.png image.png

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

3.3 Pulsar功能介绍

生产模式 image.png 消费模式 . Exclusive · Failover · Shared . Key Shared image.png

3.4 Pulsar HA & Scale-up

image.png . Topic<->Bundle完成映射
. Bundle分配给Broker

3.5 Pulsar vs Kafka

存储架构

  • 存储计算分离之后带来的优劣势
  • 多层架构,状态分离之后的优势

运维操作

  • 应对突发流量变化,集群扩缩容是否便捷
  • 运维任务是否影响可用性
  • 集群部署是否灵活

功能特性

  • 多语言&多协议
  • 多租户管理
  • 生产消费模式

生态集成
image.png

4.周边和生态

4.1周边生态概览

image.png