Pulsar 和 Kafka 架构对比

2024-05-02 07:32
文章标签 架构 kafka 对比 pulsar

本文主要是介绍Pulsar 和 Kafka 架构对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文作者是 David Kjerrumgaard,目前任职于 Splunk,Apache Pulsar 和 Apache NiFi 项目贡献者。译者为 Sijia@StreamNative。原文链接:https://searchdatamanagement.techtarget.com/post/Apache-Pulsar-vs-Kafka-and-other-data-processing-technologies,翻译已获授权。

关于 Apache Pulsar

Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。
GitHub 地址:http://github.com/apache/pulsar/

相比于 Kafka 等数据处理中间件,分布式消息平台 Apache Pulsar 如何存储数据?本文基于架构,对比了 Apache Kafka 等传统数据处理中间件和分布式消息平台 Apache Pulsar 的优劣势,供大家参考。

存储可扩展

Apache Pulsar 的多层架构将消息服务层与存储层完全解耦,从而使各层可以独立扩展。传统的分布式数据处理中间件(如 Hadoop、Spark)则在同一集群节点/实例上处理和存储数据。这种设计可以降低通过网络进行传输的数据量,使得架构更简洁,性能也有所提升,但同时扩展性、弹性、运维受到了影响。

Pulsar 的分层架构在云原生解决方案中独树一帜。如今,大幅提升的网络带宽为此架构提供了坚实基础,有利于计算和存储的分离。Pulsar 的架构将服务层与存储层解耦:无状态 broker 节点负责数据服务;bookie 节点负责数据存储(如图 1)。

图 1. 服务层与存储层解耦

服务层与存储层解耦的架构有很多优势。首先,各层都可以弹性扩展,彼此之间互不影响。借助云和容器等环境的弹性能力,各层可以自动扩缩容,动态适应流量高峰。其次,通过显著降低集群扩展和升级复杂性,提高了系统可用性和可管理性。再次,这种设计还属于容器友好型设计,使 Pulsar 成为托管云原生流系统的最佳方案。Apache Pulsar 使用高可扩展的 BookKeeper 作为存储层,实现了强大的持久保证与分布式数据存储和复制,并原生支持跨地域复制。

多层设计可以轻松实现分层存储,从而可以将访问频率较低的数据卸载到低成本的持久化存储(如 AWS S3、Azure 云)中。Pulsar 支持配置预定义的存储大小或时间段,自动将存储在本地磁盘的数据卸载至云存储平台,释放本地磁盘,同时安全备份事件数据。

Pulsar vs. Kafka

Apache Pulsar 和 Apache Kafka 都具有类似的消息传递概念。客户端通过 topic(逻辑上分为多个分区)与二者进行交互。通常而言,写入 topic 的无限数据流会被分为分区(特定数量、大小相等的分组),从而使数据均匀分布在系统中,并被多个客户端同时使用。

Apache Pulsar 和 Apache Kafka 之间的本质区别在于存储分区的基础架构。Apache Kafka 是基于分区的发布/订阅系统,旨在作为整体架构运行,服务层和存储层位于同一节点上。

图 2. Kafka 分区

Kafka 存储:基于分区

在 Kafka 中,分区数据作为 leader 节点上的单个连续数据存储,然后复制到副本节点上(副本节点可预配置),实现数据多副本。这种设计通过两种方式限制了分区的容量,并扩展了 topic。首先,由于分区只能存储在本地磁盘中,分区大小取决于主机上最大的单个磁盘大小(“新”安装用户的磁盘大小约为 4 TB);其次,由于必须复制数据,所以分区的大小不能超过副本节点上最小磁盘空间的大小。

图 3. Kafka 故障和扩容

假设可以将 leader 存储在新节点上,磁盘大小为 4 TB 且只用于分区存储,两个副本节点的存储容量都为 1 TB 。在向 topic 发布 1 TB 数据后,Kafka 将检测到副本节点无法继续接收数据,并且在副本节点释放空间之前,不能继续向该 topic 发布消息(如图 3)。如果 producer 在中断期间无法缓冲消息,则可能会造成数据丢失。

面对这一问题,有两种解决方案:删除磁盘上的数据,存储现有副本节点,但由于来自其他 topic 的数据可能还没有被消费,可能会导致数据丢失;或为 Kafka 集群添加新节点并“重平衡”分区,将新增节点用作副本节点。但是这需要重新复制整个 1 TB 的分区,耗时、易出错,对网络带宽和磁盘 IO 要求高,且代价高昂。此外,对于具有严格 SLA 的程序而言,离线复制的方案并不可取。

使用 Kafka,不仅在扩展集群时需要重新复制分区数据,其他故障也可能需要重新复制分区数据,如副本故障、磁盘故障、计算机故障等。如果没有在生产环境中出现故障,我们通常会忽视 Kafka 的这一弊端。

图 4. Pulsar 分片

Pulsar 存储:基于分片

在基于分片的存储架构(如 Apache Pulsar 使用的架构)中,分区被进一步分成分片,可以根据预先配置的时间或大小进行滚动。分片均匀分布在存储层的 bookie 中,实现数据多副本和扩容。

当 bookie 磁盘空间用尽,不能继续向其中写入数据时,Kafka 需要重新复制数据,Pulsar 如何应对这种场景呢?由于分区被进一步分成分片,因此无需复制整个 bookie 的内容到新增 bookie 中。在添加新 bookie 前,Pulsar 可以继续接收新数据分片,并写入存储容量未满的 bookie 中。添加新 bookie 时,新节点和新分区上的流量立即自动增加,无需重新复制旧数据。

图 5. Pulsar 故障和扩容

如图 5 所示,在第 4 个 bookie 节点不再继续接收新消息分片时,消息分片 4-7 被路由到其他活跃 bookie 上。新增 bookie 后,分片自动被路由到新 bookie 上。整个过程中,Pulsar 始终在运行,并且可以为 producer 和 consumer 提供服务。在这种情况下,Pulsar 的存储系统更加灵活,高可扩展。

这篇关于Pulsar 和 Kafka 架构对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/953709

相关文章

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口