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