动机
Azure 事件中心是 Azure 生态系统的重要组成部分。我们正处于采用 Azure 的早期阶段,虽然我们专注于官方集成,但我想同时提供解决方法。
本教程使用企业变更源:您将需要企业许可证、访问 CockroachDB 专用集群或在 CockroachDB 无服务器集群中启用计费以激活企业功能,如 CDC 到 Kafka。
高级步骤
- 部署 Azure 事件中心
- 使用企业变更源部署 CockroachDB 集群
- 核实
分步说明
部署 Azure 事件中心
你将需要一个 Azure 事件中心帐户。您可以注册一个免费帐户。
完成后,请按照本快速入门中概述的步骤创建 Azure 事件中心的实例。
高级步骤:
- 创建资源组
- 创建事件中心命名空间
- 创建事件中心
- 将 SAS 策略添加到事件中心
完成后,创建部署:


这些步骤相当于在Kafka中创建主题。例如:
融合的kafka主题创建股票--partitions 6 融合kafka主题创建历史--partitions 6
我最终得到了一个名为的事件中心命名空间和名为and的artemeventhubs事件中心。stockhistory

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

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

在 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:9093. sasl_user和sasl_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 编辑器窗口并加载消息:

这就是您可以通过 Azure 事件中心等非标准服务利用现有 CockroachDB 功能的方式。
原文标题:Using CockroachDB CDC With Azure Event Hubs
原文作者:Artem Ervits
原文链接:https://dzone.com/articles/using-cockroachdb-cdc-with-azure-event-hubs




