Debezium 是不是提供交货和订购保证?

Posted

技术标签:

【中文标题】Debezium 是不是提供交货和订购保证?【英文标题】:Does Debezium provide delivery and ordering guarantees?Debezium 是否提供交货和订购保证? 【发布时间】:2020-05-25 04:49:47 【问题描述】:

我计划使用debezium 为Kafka 制作活动,我需要强有力的交付和订购保证。通过在生产者配置中使用enable.idempotence=true 参数,我可以获得这些保证。

我的问题是:

    如何使用 debezium 实现这一目标? 这些保证是否默认提供? 是否可配置?怎么样?

注意:我打算使用Debezium Connector for PostgreSQL

【问题讨论】:

【参考方案1】:

传递语义

debezium 保证至少一次交付:

当所有系统都在正常运行或部分或全部系统正常关闭时,消费应用程序可能会只看到一次。但是,当出现问题时,消费应用程序总是有可能看到至少一次的事件。

来源:Why must consuming applications expect duplicate events?


订购保证

debezium 具有强大的订购保证:

大多数连接器会将单个数据库表的所有事件记录到单个主题。此外,主题内的所有事件都是完全排序的,这意味着所有这些事件的顺序都将保持不变。 (即使失败时事件重复,应用所有事件后的最终结果将保持不变。)

来源:How are events for a database organized?

【讨论】:

也许,一个主题内的所有事件在单个分区内都是完全有序的,因此同一主题的不同分区之间没有总顺序,因此如果一个消费者组同时从不同的分区读取,则可能无法维护与数据库日志关联的消费顺序?我是否正确/遗漏了什么?

以上是关于Debezium 是不是提供交货和订购保证?的主要内容,如果未能解决你的问题,请参考以下文章

多表 Debezium 连接器是不是保证跨更改跟踪表的排序?

akka 流是不是提供有保证的交付

有没有办法在 Netsuite 高级 PDF 装箱单 (freemarker) 上显示延期交货的商品?

Debezium-Flink-Hudi:实时流式CDC

Data liberation pattern using the Debezium engine

Data liberation pattern using the Debezium engine