近日,Apache Pulsar 开源商业化团队 StreamNative 宣布开源适用于 Apache Pulsar 的 Google Cloud Pub/Sub Connector,实现了 Google Cloud Pub/Sub 和 Apache Pulsar 之间的无缝集成,提高了 Apache Pulsar 生态系统的多样性。
Google Cloud Pub/Sub Connector 是一个 Pulsar IO Connector,可在 Google Cloud Pub/Sub 和 Apache Pulsar 之间实现数据复制。Google Cloud Pub/Sub Connector 提供两种方式在系统之间导入和导出数据:Source 和 Sink。
The Google Cloud Pub/Sub source 从 Google Cloud Pub/Sub 获取数据并将数据写入 Apache Pulsar 主题。
Google Cloud Pub/Sub Sink 从 Apache Pulsar 主题中提取数据并将数据持久化到 Google Cloud Pub/Sub。
Apache Pulsar 和 Google Cloud Pub/Sub 是云环境中最受欢迎和广泛使用的两个消息平台。Apache Pulsar 作为统一的消息流平台,同时支持流和队列这两种语义,用户可以基于同一底层系统打通各种数据和应用程序、数据查询、数据分析以及流系统等。Google Cloud Pub/Sub 则具有高可靠性和可扩缩性,以及强大的流分析周边生态,能按顺序大规模传递消息。
然而,目前缺少简单可靠的方式让用户在一个 Pub/Sub 云系统中使用功能齐全的消息流平台。因此,StreamNative 投入大量开发工作来弥补这一差距。
该 StreamNative Connector 允许 Google Cloud Pub/Sub 用户将消息流连接到 Pulsar 并可以使用 Google Cloud Pub/Sub 不可用的功能,同时避免了当系统或隐私要求存在内在差异1时可能出现的连接问题。Connector 通过与 Pulsar 系统的其余部分(包括无服务器函数、单条消息处理和事件流处理功能)完全集成来解决连接问题。它提供了一种低代码解决方案,开箱即用,例如多租户连接、跨地域复制、直连到终端用户移动客户端或 IoT 客户端的协议等。这些功能对于双向事件流的传递至关重要。
Google Cloud Pub/Sub 和 Apache Pulsar 的集成有 3 大优势:
启动运行 Connector 只需要 3 个简单的步骤:
首先,你必须运行 Apache Pulsar 集群和 Google Cloud Pub/Sub 服务。
$PULSAR_HOME/bin/pulsar standalone
快速运行 Pulsar 集群。详细信息请参阅 Pulsar 入门文档;你也可以使用 StreamNative Cloud 在公有云中提供易于使用且完全托管的 Pulsar 服务。GOOGLE_APPLICATION_CREDENTIALS
环境变量访问 Google Cloud。$PULSAR_HOME/connectors
。Apache Pulsar 提供 Pulsar IO 特性来运行 Connector。请按照以下步骤快速启动并运行 Connector。
创建一个名为 google-pubsub-source-config.json
的配置文件,将 pulsar-io-google-pubsub/test-google-pubsub-source
主题消息从 Google Cloud Pub/Sub 发送到 Apache Pulsar 的 public/default/test-google-pubsub-source
主题:
{
"tenant": "public",
"namespace": "default",
"name": "google-pubsub-source",
"topicName": "test-google-pubsub-source",
"archive": "connectors/pulsar-io-google-pubsub-$VERSION.nar",
"parallelism": 1,
"configs":
{
"pubsubProjectId": "pulsar-io-google-pubsub",
"pubsubTopicId": "test-google-pubsub-source"
}
}
运行 Source Connector:
$PULSAR_HOME/bin/pulsar-admin sources localrun --source-config-file /path/to/google-pubsub-source-config.json
创建一个名为 google-pubsub-sink-config.json
的配置文件,将 public/default/test-google-pubsub-sink
主题消息从 Apache Pulsar 发送到 Google Cloud Pub/Sub 的 pulsar-io-google-pubsub/test-google-pubsub-sink
主题:
{
"tenant": "public",
"namespace": "default",
"name": "google-pubsub-sink",
"inputs": [
"test-google-pubsub-sink"
],
"archive": "connectors/pulsar-io-google-pubsub-$VERSION.nar",
"parallelism": 1,
"configs": {
"pubsubProjectId": "pulsar-io-google-pubsub",
"pubsubTopicId": "test-google-pubsub-sink"
}
}
运行 Sink Connector:
$PULSAR_HOME/bin/pulsar-admin sinks localrun --sink-config-file /path/to/google-pubsub-sink-config.json
当你向 Apache Pulsar 的 public/default/test-google-pubsub-sink
主题发送消息时,该消息将持久保存到 Google Cloud Pub/Sub 的 pulsar-io-google-pubsub/test-google-pubsub-sink
主题。有关详细信息,可参考此演示视频。
Google Cloud Pub/Sub Connector 是将其他消息系统集成到 Pulsar 周边生态中的重要一步。你可以通过以下任一方式参与该项目:
1无 Schema 概念的平台与具有复杂 Schema 功能的平台之间存在内在差异,因为没有简单的方法在它们之间进行转换。从传统的消息系统(如 Amazon SQS)到写入数据湖的多级分层 Avro 架构,这些平台都存在差异。依赖于不同数据形式的平台之间也存在差异,例如 Pandas DataFrames 和简单的消息。