购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

Pulsar生态

创建 Pulsar 项目并将其开源,为构建完备灵活的消息系统提供了构成要件。自 Pulsar 开源后,开发者们构建了很多与 Pulsar 底层技术对接的强大工具。除了本节提到的三个项目外,Pulsar社区在Slack频道和论坛中还有数千个活跃用户。

Pulsar Functions

Pulsar 的核心是高性能的消息收发和消息存储。在本章中我们已经了解了 Pulsar 在数据存储及可扩展性设计上的灵活性,Pulsar Functions 还解答了如何处理Pulsar 存储数据的问题。Pulsar Functions 作为一个轻量级计算框架,对从Pulsar 主题中读取的数据做一些计算处理,然后将结果发送到另一个Pulsar主题。

Pulsar Functions 受到了服务实现这类函数的启发,如 Google Cloud Functions 和 AWS Lambda。具体来说,Pulsar Functions 有灵活的部署方式,可以与 Pulsar Broker 节点共享运行所需资源,也可以作为一个独立的进程运行。Pulsar Functions 从Pulsar 主题中获取数据,并将结果输出到Pulsar主题(如图3-9所示)。

图3-9 该Pulsar函数从一个主题中获取输入,进行一些处理后把结果发送到另一个主题

Pulsar Functions 与 Pulsar 模块化的设计理念非常契合。虽然 Pulsar 的核心组件用 Java编写,但是用户可以用Java、Python或者Go语言编写Pulsar Functions。将Pulsar运行时与 Pulsar Functions 运行时分离的设计,缩短了程序员学习 Pulsar 的学习曲线。Pulsar Functions是处理Pulsar消息的一种可选方式,如果用户想继续使用他们现有的流处理框架也没有问题。Pulsar Functions 也提供了高质量的流处理实现,想要学习它并不需要多少成本。如果你了解 Java、Python 或 Go语言,那么在不学习新框架的情况下,你也可以编写语法正确的流处理程序。

Pulsar IO

Pulsar IO是Pulsar的一个连接器框架,它可以让Pulsar主题成为其他程序的输入或输出。通过以下这个端到端的示例,你可以更全面地理解 Pulsar IO。假设你需要创建一个管道,该管道从 MySQL 数据库中逐行读取数据后将其存储到 Elasticsearch 中,并建立索引(Elasticsearch 是一种开源搜索引擎技术。索引是 Elasticsearch 中的命名实体,也是组织文件的依据,你可以把它们视为关系数据库领域的数据库)。仅需简单配置,Pulsar IO就可以简化整个应用程序(如图3-10所示)。

图3-10 一个 Pulsar IO进程从MySQL中拉取数据,另一个Pulsar IO进程将数据从Pulsar主题移动到Elasticsearch

与 Pulsar Functions 相同,Pulsar IO 提供了一种隔离的、可扩展的计算框架,以促进数据以事件驱动的方式通过 Pulsar 主题移动到目的地。在 Pulsar Functions 中,数据的目的地是 Pulsar 主题;在Pulsar IO中,目的地则可以是 Pulsar 主题或外部系统。Pulsar IO 与 Kafka Connect 有着相似的设计理念和实现方式,如 Kafka Connect 一样,Pulsar IO 旨在让 Pulsar 的日常使用更加便利。我将在第7章更深入地介绍 Pulsar IO,并展示使用Pulsar IO构建应用程序的部分示例。

Pulsar SQL

计算和存储分离的架构让 Pulsar可以存储更多的数据,存储的时间也更久。有了存储在Pulsar 中的数据,下一步自然就是对这些数据进行查询。Pulsar SQL 提供了可扩展的计算运行时,支持对Pulsar主题中的数据执行SQL查询。Pulsar SQL利用Apache Presto(一个SQL-on-Anything引擎)来提供Pulsar主题查询的计算能力。

Pulsar SQL 与 Kafka 的 KSQL在逻辑上有一些相似性,两个项目都是为了能以 SQL 语法查询主题中的数据而设计。Pulsar SQL 是一个只读的系统,用于查询主题中的数据,而不一定会创建持久化的数据视图。KSQL 则是一个交互式的系统,让用户能根据 SQL查询的结果创建新的主题。我们会在第10章深入介绍Pulsar SQL的实现和应用场景。 KzAKinNsa2QALVLxbk2xNK4NZOxspUgxxnTCor9LnERMoL6smF3TYa4HDMw+FflU

点击中间区域
呼出菜单
上一章
目录
下一章
×