千家信息网

Pulsar该如何使用

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这期内容当中小编将会给大家带来有关Pulsar该如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。>>> 简介 <<<作为 Apache Spark 和 Apa
千家信息网最后更新 2024年11月23日Pulsar该如何使用

这期内容当中小编将会给大家带来有关Pulsar该如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

>>> 简介 <<<

作为 Apache Spark 和 Apache Kafka 的忠实用户,我认为自己对流处理非常了解。这种认为自己足够了解某一技术的想法对于开发人员而言是很危险的,因为它会阻碍你成长,阻碍你真正掌控知识并激发自身潜力。

当我有这种感觉时,我发现多与别人沟通、阅读博客文章、夯实并扩展我的个人技能非常重要。我决定研究一种不同的流技术,可以在其中进行简单快速的开发。因此,我选择了 Apache Pulsar。

>>> 高级技术讨论 <<<

Apache Pulsar 是基于发布-订阅模式构建的,与其他流式服务(例如,Kafka、Storm)非常相似。但是,与大数据生态系统中现有的一些流技术相比,Apache Pulsar 具有某些独特的优势,其中之一是它的服务层和存储层是分离的。下文我将简要介绍 Apache Pulsar。

图来自 Apache Pulsar Documentation

为什么存储层和服务层分离很重要呢?因为在这种情况下,我们可以按需扩展。如果需要使用 CDC(Change Data Capture)抓取数据库的历史变更数据,而需要更多存储空间怎么办?可以试试缩减用于为流处理提供服务的计算,并添加更多的存储。

需要更多的处理和更少的存储该怎么办?不妨试试将更多的节点用于处理速度较高的流数据,而使用较少的节点来存储数据。

以上列出的消息系统一般会将处理和存储放在同一个集群中,但 Apache Pulsar 并非如此。因为服务层和持久层是分离的,所以 Apache Pulsar 可以在保证服务的同时扩展存储。这提供了一个高性价比的容量规划模型。这一设计可以总结为:

在需要支持更多的 consumer 或 producer 时,只需添加更多的 broker。

Pulsar 的另一个优点是零平衡时间(Zero Rebalancing Time)特性。由于 Pulsars 本身独特的分层架构和 broker 是无状态的,因此如果集群中有一个节点可用,它就能立即用于读写操作。

提供给节点的新数据将自动开始写入新的 bookies。Bookie 只允许将数据持久化到磁盘上的日志文件中。即使所有服务器都关闭了,并且存在多个磁盘故障,消息也不会丢失。相反,对于 Kafka 而言,如果消息在集群中所有节点上的 RAM 中,则当前消息可能会丢失。

如需更深入且详细地了解 Pulsar 的架构,参阅:
????https://streamnative.io/blog/tech/2019-12-10-design-for-streaming/

>>> 代码 <<<

我们该怎样使用 Pulsar 呢?首先,需要在docker 中启动一个实例。代码如下图所示。

docker.sh

开始之前先来考虑一下我 consume 什么数据呢?Twitter 的 API 看起来不错,那就使用 docker build 来 consume 这些数据吧。这些数据几乎是实时数据,我相信这很适合用于示例。

consumer.py

现在,我将通过 API 读取 Twitter 数据,并持久化到 Pulsar 中。当我尝试消费实时数据(实时数据由最大的数据生成器产生)时,我发现情况更加复杂了。如果需要,我可以从其流中过滤出我想看到的有趣的推文。这一步,我决定过滤有关 Hashmap、Snowflake、Data Engineering 的一些信息。

producer.py

上述就是小编为大家分享的Pulsar该如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0