暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

将 CockroachDB CDC 与 Azure 事件中心结合使用

原创 Tom 2022-10-12
643

动机

Azure 事件中心是 Azure 生态系统的重要组成部分。我们正处于采用 Azure 的早期阶段,虽然我们专注于官方集成,但我想同时提供解决方法。

本教程使用企业变更源:您将需要企业许可证、访问 CockroachDB 专用集群或在 CockroachDB 无服务器集群中启用计费以激活企业功能,如 CDC 到 Kafka。

高级步骤

  • 部署 Azure 事件中心
  • 使用企业变更源部署 CockroachDB 集群
  • 核实

分步说明

部署 Azure 事件中心

你将需要一个 Azure 事件中心帐户。您可以注册一个免费帐户。

完成后,请按照本快速入门中概述的步骤创建 Azure 事件中心的实例。

高级步骤:

  • 创建资源组
  • 创建事件中心命名空间
  • 创建事件中心
  • 将 SAS 策略添加到事件中心

完成后,创建部署:

创建命名空间:查看 + 创建

创建事件中心:名称

这些步骤相当于在Kafka中创建主题。例如:

融合的kafka主题创建股票--partitions 6
融合kafka主题创建历史--partitions 6


我最终得到了一个名为的事件中心命名空间和名为and的artemeventhubs事件中心。stockhistory

artemeventhubs 截图

创建后,您需要一个 SAS 策略来访问您的事件中心:

添加 SAS 策略以访问事件中心

捕获 SAS 策略详细信息,因为我们将在下一步中需要它。您需要单击 SAS 策略以打开详细信息对话框。截至目前,似乎每个事件中心都有自己关联的 SAS 策略。如果我想出一种方法来对多个主题使用相同的策略,我会强调它。

SAS 政策:saspolicystock

在 SAS Policy Details 中,捕获“Connection string-primary key”。

Endpoint=sb://artemeventhubs.servicebus.windows.net/;SharedAccessKeyName=saspolicytpcc;SharedAccessKey=<REDACTED>;EntityPath=history


使用 Enterprise Changefeeds 部署 CockroachDB 集群

您可以使用以下说明启动专用集群。我的集群是 AWS 中的 3 节点集群,在us-east-1.

要启用 CDC,我们需要执行以下命令:

设置集群设置 kv.rangefeed.enabled = true;

事件中心支持端口 9093 的 Kafka 协议。我们可以使用 SAS 策略和协议中的连接字符串 URL kafka://kafka://<confluent cloud kafka endpoint url>:9092事件中心中的等价物是kafka://artemeventhubs.servicebus.windows.net:9093sasl_usersasl_password部分是它变得棘手的地方。我非常感谢文章“如何将 Kafka 客户端与 Azure 事件中心一起使用”为相关字段提供了答案。sasl_user将设置为$ConnectionString正如文章所说。sasl_password但是,有点棘手。考虑到 CockroachDB 需要一个 URL 编码的密钥,我试了好几次才弄对。诀窍是对 SAS 策略中的整个连接字符串进行 URL 编码。我一直依赖以下URL 编码器服务来对这些值进行 URL 编码。


使用事件中心信息创建变更源

将表历史记录更改为“kafka://artemeventhubs.servicebus.windows.net:9093?tls_enabled=true&sasl_enabled=true&sasl_user=$ConnectionString&sasl_password=Endpoint%3Dsb%3A%2F%2Fartemeventhubs.servicebus.windows.net%2F%3BSharedAccessKeyName% 3Dsaspolicytpcc%3BSharedAccessKey<REDACTED>EntityPath%3Dhistory&sasl_mechanism=PLAIN" 已更新,格式 = json;
        job_id
----------------------
  801162005835612162
(1 行)

注意:changefeed 将发送到主题历史记录

时间:总共235ms(执行215ms/网络20ms)


唯一剩下的就是产生工作量。我们将使用与 Cockroach 二进制文件捆绑在一起的 TPC-C 工作负载。在新的终端窗口中,运行以下两个命令:

生成样本数据

cockroach 工作负载夹具 import tpcc --warehouses=10 "postgresql://<user>@<Cockroach Cloud Dedicated url>:26257/tpcc?sslmode=verify-full&sslrootcert=/path/certs/cluster-ca.crt"     


执行工作负载

cockroach 工作负载运行 tpcc --warehouses=10 --ramp=3m --duration=1h "postgresql://<user>@<Cockroach Cloud Dedicated url>:26257/tpcc?sslmode=verify-full&sslrootcert=/path/certs/集群 ca.crt"


核实

剩下的唯一事情是确认消息已发送到 Azure 事件中心。在 Azure 控制台中,导航到各个事件中心。您可以看到不断变化的消息计数器:

更改消息计数器

在事件中心查看消息的最简单方法是单击事件中心页面上的“处理数据”选项,然后选择“启用来自事件的实时洞察”选项。

从事件中获得实时洞察

在那里,将打开一个SQL 编辑器窗口并加载消息:

SQL 编辑器窗口将打开并加载消息

这就是您可以通过 Azure 事件中心等非标准服务利用现有 CockroachDB 功能的方式。


原文标题:Using CockroachDB CDC With Azure Event Hubs

原文作者:Artem Ervits

原文链接:https://dzone.com/articles/using-cockroachdb-cdc-with-azure-event-hubs

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论