【发布时间】:2018-12-13 05:09:12
【问题描述】:
我想知道 Apache Kafka 是否可以用于具有关系数据库的容错环境,一个源和多个,通过 kafka 实例复制。
我是 Kafka 新手,互联网上的很多消息来源都说这可以通过 Kafka Connect 轻松完成,但是我从未找到任何解释这个问题的几个方面:
我们如何保证在复制过程中不会违反外键? 我已经看到连接器将数据更改发送到数据库中每个表的单独 kafka 主题,但是我们如何以创建它们的相同顺序读取它们,以便在复制期间不违反 FK?即使我们将所有更改放在一个主题中,这个主题也可能会被分区,那么我们将如何以相同的顺序读取它们?这是否意味着我们只能使用单个分区的单个主题?或者也许我们应该删除目标数据库中的所有 FK 约束并且从不关心它们的完整性?
我确实认为将关系数据库用于只读目的是不合适的,但是有很多旧客户端,我们无法一次全部重写。
【问题讨论】:
-
我猜你可以将 Kafka 用作数据库复制器,但它并不是真的要以这种方式使用。而是让应用程序(独立于 Connect)直接使用来自 Kafka 的 CDC 事件
标签: apache-kafka rdbms kafka-consumer-api kafka-producer-api