我试图了解两者试图实现的目标之间是否存在根本区别。我有一个将我的 postgres 数据登陆到数据湖的用例,这些是我拥有的 2 条铺平道路的方法。
选项 1. 在我的数据库中创建一个发件箱表,在与我的主表相同的事务中提交该表,然后工具 Ceres 获取此更改(CDC)并发布到 Kafka
选项 2. 将我的 postgres 连接到 debezium 连接器,Debezium 会自动读取我的 WAL 并继续将我的数据库中的更改发布到数据湖。
乍一看,选项 2 似乎是一种更简洁的方法,没有提交发件箱表的开销。我的推论正确吗?发件箱模式看起来是遗留模式,现在可能是多余的,因为我们可以使用 Debezium 以更简单、更整洁的方式完成相同的工作?
发件箱模式是解决两阶段提交问题的一种方式。实现它的一种方法是使用 Debezium 连接器(另一种方法是轮询发件箱表)。
尽管您不需要发件箱模式来使用 Debezium(例如,您可以直接使用 Debezium 连接器监控您的实体表)。
如果你想启用 Debezium 连接器,你需要启用 CDC。 CDC 简单地意味着更改数据捕获 -> 一种捕获数据库中数据更改的方法。
Debezium 本身有一篇关于使用其连接器实现发件箱模式的好文章:https://debezium.io/blog/2019/02/19/reliable-microservices-data-exchange-with-the-outbox-pattern/