从Kafka到Pulsar:数据流演进之路

简介: 从Kafka到Pulsar:数据流演进之路

消息队列概述

消息队列的应用场景

MQ消息通道
图片.png


EventBridge事件总线

图片.png

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

Data Platform流数据平台

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

「自我思考」消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。


主流消息队列的相关介绍

图片.png


Kafka

「简介」Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。既然是消息队列,那么Kafka也就拥有消息队列的相应的特性了。

Kafka架构介绍

图片.png

👇讲解架构中的组件

Zookeeper

  1. 选举机制: Paxos机制
  2. 提供一致性:
  • 写入(强一致性)
  • 读取(会话一致性)
  1. 提供可用性:一半以上节点存活即可读写
  2. 提供功能:
  • 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信息广播
  • 集群扩缩容时,进行状态控制
  • Partition/Replica状态机维护

Coordinator介绍

  • 负责topic partition <-> consumer的负载均衡
  • 根据不同的场景提供不同的分配策略

Kafka高可用

  1. 副本同步机制
  • 提供Isr副本复制机制,提供热备功能
  • 写入端提供ack=0,-1,1机制,控制副本同步强弱
  1. 副本切换机制
  • 提供clean/unclean副本选举机制

Kafka集群扩缩容之后的目标

  1. Topic维度
  • partition在各个broker之间分布是均匀的
  • 同一个partition的replica不会分布在一台broker
  1. Broker维度
  • Broker之间replica的数量是均匀的

自我思考

  • Kafka像其他Mq一样,也有自己的基础架构,主要存在生产者Producer、Kafka集群Broker、消费者Consumer、注册消息Zookeeper
  • Kafka中消息是以topic进行分类的,Producer生产消息,Consumer消费消息,都是面向topic的。

Pulsar

「简介」Pulsar 是一个企业级的分布式消息系统,最初由 Yahoo 开发,在 2016 年开源,并于2018年9月毕业成为 Apache 基金会的顶级项目。Pulsar 已经在 Yahoo 的生产环境使用了三年多,主要服务于Mail、Finance、Sports、 Flickr、the Gemini Ads platform、 Sherpa (Yahoo 的 KV 存储)。

Pulsar架构介绍

图片.png


👇讲解架构中的组件
Pulsar Proxy的作用及应用场景

  • 部分场景无法知道Broker地址,如云环境或者Kubernetes环境
  • Proxy提供类似GateWay代理能力,解耦客户端和Broker,保障Broker安全

Pulsar Broker

无状态组件,负责运行两个模块

  1. Http服务器
  • 暴露了restful接口,提供生产者和消费者topic查找api
  1. 调度分发器
  • 异步的tcp服务器,通过自定义二进制协议进行数据传输

Pulsar数据存储Segment在不同存储中的抽象

  • 分布式Jourmal系统(Bookeeper)中为Journal/L edger
  • 分布式文件系统(GFS/HDFS)中为文件
  • 普通磁盘中为文件
  • 分布式Blob存储中为Blob
  • 分布式对象存储中为对象

Pulsar Storage

图片.png


Bookkeeper基本概念

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

Pulsar生产模式

图片.png


Pulsar消费模式

图片.png

Pulsar VS Kafka

  1. 存储架构
  • 存储计算分离之后带来的优劣势
  • 多层架构,状态分离之后的优势
  1. 运维操作
  • 应对突发流量变化,集群扩缩容是否便捷
  • 运维任务是否影响可用性
  • 集群部署是否灵活
  1. 功能特性
  • 多语言&多协议
  • 多租户管理
  • 生产消费模式
  1. 生态集成

自我思考Pulsar对比Kafka优点

  1. 流式处理和队列的合体
  2. 支持分区,但不是必需的
  3. 日志固然不错,但 ledger 更胜一筹
  4. 无状态
  5. 简单的跨域复制
  6. 稳定的表现
目录
相关文章
|
消息中间件 存储 Kubernetes
kafka/pulsar on k8s
kafka/pulsar on k8s
kafka/pulsar on k8s
|
1月前
|
消息中间件 监控 Kafka
Apache Kafka 成为实时数据流处理的关键组件
【10月更文挑战第8天】随着大数据技术的发展,Apache Kafka 成为实时数据流处理的关键组件。Kafka Manager 提供了一个简洁易用的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件修改、启动服务、创建和管理 Topic 等操作,帮助你快速上手。
48 3
|
19天前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
39 0
|
3月前
|
消息中间件 Java Kafka
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
271 9
|
3月前
|
消息中间件 负载均衡 Java
"深入Kafka核心:探索高效灵活的Consumer机制,以Java示例展示数据流的优雅消费之道"
【8月更文挑战第10天】在大数据领域,Apache Kafka凭借其出色的性能成为消息传递与流处理的首选工具。Kafka Consumer作为关键组件,负责优雅地从集群中提取并处理数据。它支持消息的负载均衡与容错,通过Consumer Group实现消息的水平扩展。下面通过一个Java示例展示如何启动Consumer并消费数据,同时体现了Kafka Consumer设计的灵活性与高效性,使其成为复杂消费场景的理想选择。
121 4
|
3月前
|
vr&ar 图形学 开发者
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
135 0
|
5月前
|
消息中间件 数据挖掘 Kafka
使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流
使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流
126 2
|
5月前
|
消息中间件 关系型数据库 MySQL
使用Flink实现Kafka到MySQL的数据流转换:一个基于Flink的实践指南
使用Flink实现Kafka到MySQL的数据流转换:一个基于Flink的实践指南
633 1
|
5月前
|
消息中间件 分布式计算 Kafka
利用Spark将Kafka数据流写入HDFS
利用Spark将Kafka数据流写入HDFS
|
5月前
|
消息中间件 关系型数据库 MySQL
使用Flink实现MySQL到Kafka的数据流转换
使用Flink实现MySQL到Kafka的数据流转换
112 0