Debezium日常分享系列之:Debezium 信号发送和通知 - 第 1 部分
- 一、背景
- 二、Debezium 中的信号发送
- 三、Debezium 中的通知
- 四、结论
一、背景
本系列文章将介绍 Debezium 提供的信号和通知功能,并讨论与平台交互的可用渠道。在本系列的后续部分中,我们将更深入地研究自定义信令通道并探索其他主题,例如 JMX 信令和通知。
在当今互连的软件应用程序和系统中,与其他产品无缝集成对于构建强大而高效的解决方案至关重要。构建集成软件生态系统的关键挑战之一是在不同组件和服务之间建立有效的通信渠道。
Debezium 引入了全面的信号和通知系统,可与任何第三方解决方案无缝集成。结合信号和通知系统,您现在可以编排复杂而高效的管道,以随时了解 Debezium 管理的状态的状态和进度。
新的信号系统经过重新设计,具有可扩展性,提供了一种简化的方法,可以在各种可用的实现之上添加新的自定义信号通道。让我们探索不同的信号和通知渠道,涵盖它们的功能并描述它们的好处。
二、Debezium 中的信号发送
Debezium 中的信号发送是指用户可以触发产品内特定操作的机制。它允许用户与 Debezium 交互并控制某些行为。信令的一个值得注意的用例是执行增量快照,它允许启动数据库的临时快照。
Debezium 提供了不同的信号通道,用户可以通过这些通道向平台发送信号。让我们探索一下可用的信号通道:
通过数据库表发出信号:
- 在 Debezium 的早期版本中,信号发送需要一个专用的数据库表,您可以在其中插入特定记录以触发 Debezium 执行任务。例如,插入的行可以启动增量快照,提示连接器根据给定的信号标准运行快照操作。
通过 Kafka 主题发送信号:
- 在 Debezium 的早期版本中,您可以通过配置的 Kafka 主题发送信号;然而,这仅适用于使用只读访问和全局事务标识符(GTID)行为的 MySQL。在 Debezium 2.3 中,Kafka 信号通道可供所有连接器使用。
- 此增强功能为所有支持的 Debezium 数据库中的信号提供了简化的集成方法和统一一致的方法。您可以向特定的 Kafka 主题发送信号,Debezium 将使用和处理该信号,就像它源自信号表本身一样。
- 使用 Kafka 主题作为信号有几个优点。首先,它与事件驱动设计保持一致,使其与变更数据捕获和 Debezium 自然契合。此外,它还提供了一种向 Debezium 发送信号的安全方式,而无需为用户提供对底层数据库的直接访问。
即使使用 Kafka 信号方法,增量快照功能仍然需要存在并使用信令表来管理增量快照过程所需的一些簿记。仅当以只读方式使用 MySQL 并启用全局事务标识符 (GTID) 时,才能省略信号表。
通过文件发信号:
- 您可以从文件系统触发信号。当不依赖 Kafka 等消息传递基础设施与 Debezium Server 或嵌入式引擎相结合时,或者当您无法使用数据库作为信号时,这种方法是一个很好的替代方案。
通过 Java 管理扩展 (JMX) 发出信号:
- 使用此通道,您可以发送信号,调用通过专用 MBean 公开的信号操作。您可以通过使用您的首选客户端连接到 MBeanServer 来完成此操作。
通过自定义通道发送信号:
- 我们还重新设计了可扩展的信号机制。您可以提供您的实现并通过配置使用它。随后将有一篇关于此功能的专门文章。
三、Debezium 中的通知
通知侧重于检索有关 Debezium 及其内部流程的状态和进度信息。它提供了对任务执行和完成情况的洞察,例如初始快照或增量快照。 Debezium 会生成通知,让用户了解这些任务的进度,从而促进基于实时信息的监控和决策。通过利用通知功能,用户可以跟踪 Debezium 的状态并根据收到的通知采取适当的操作。
Debezium 提供了多种获取通知的方式。让我们探索一下现成的渠道:
通过Sink通道通知:
- 此实现通过 Connect API 将通知发送到配置的主题。用户可以启用该频道并指定主题名称。
- 通过向指定主题发布通知,Debezium 允许用户以适合自己需求的方式使用和处理通知。
- 由于 Sink 是不可知的(即不一定是 Kafka),因此它与 Debezium Server 无缝集成,以将通知传递到其任何接收器适配器。
通过日志通知:
- 此通道将通知直接附加到连接器日志的末尾。这种方法为监视、调试和分析通知详细信息提供了方便的访问。
通过 Java 管理扩展 (JMX) 发出通知:
- 此通知通道公开一个专用 Debezium MBean,该 MBean 具有多个包含生成的通知列表的属性。该通道结合了常见的行业标准监控技术(例如 JMX)来响应和使用 Debezium 通知。
通过自定义渠道通知:
- Debezium 的通知机制是可扩展的,允许用户实现自定义渠道,以使用最适合其需求的方式传递通知。我们将在专门的帖子中介绍如何提供自定义通知渠道。
四、结论
- 信号和通知现在是 Debezium 的基本功能。信号使用户能够与 Debezium 交互并触发操作,而通知则提供有关 Debezium 状态和进度的宝贵信息。
- 在 Debezium 的早期版本中,只能使用信令表来启动增量快照。用户必须配置特定的表作为信号机制来触发增量快照。然而,对于启用了 GTID 的 MySQL,可以利用 Kafka 来发送信号。
- 随着 Debezium 2.3 版本的发布,我们对信号和通知子系统进行了重大改进。我们统一了连接器之间的多种行为,并使整个系统可扩展,旨在简化自定义和未来贡献的实现。我们希望这能够增强使用 Debezium 的整体体验,并提供一种将 Debezium 与其他第三方应用程序和工具无缝集成的方法。这些新的和改进的功能使您能够以无限的方式最大限度地发挥 Debezium 变更数据捕获平台的功能。