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 连接器是不是保证跨更改跟踪表的排序?
有没有办法在 Netsuite 高级 PDF 装箱单 (freemarker) 上显示延期交货的商品?