我开始探索如何使用变更数据捕获将数据库变更从遗留和商业应用程序(我无法修改)转换为其他系统可以使用的事件。简化我的真实案例,假设涉及两个表, order
订单标题详细信息和 order_line
每种产品的详细信息。
我目前的理解是,这两个表中的事件将发布到两个不同的kafka主题中,我应该使用kafka流或ksql来聚合它们。我看到有不同的选项来定义用于选择所有相关事件的窗口,但是我不清楚如何确保来自同一数据库事务的所有事件都已在主题中,因此我不会错过任何一个。
debezium是否能够确保这一点(来自同一事务的所有事件都被发布),或者可能发生这样的情况,例如,debezium在发布事件时崩溃,并且同一事务生成的事件中只有一部分在kafka中?
如果是这样,建议采用什么方法来处理?
谢谢
1条答案
按热度按时间9q78igpj1#
debezium存储事务日志的位置,它在kafka中完全读取这些位置,并使用这些位置在任何崩溃或其他类似情况下恢复工作,也在其他可能有时发生的情况下,在这种情况下debezium丢失它的位置,它将通过再次读取数据库快照来恢复它!