【发布时间】:2022-01-02 22:29:15
【问题描述】:
我想直接将实时数据从 SQL server 添加到 Kafka,我发现https://debezium.io/docs/connectors/sqlserver/提供了一个 SQL server 连接器
在文档中,它说它将为每个表创建一个主题。我试图了解架构,因为我有 500 个客户端,这意味着我有 500 个数据库,每个数据库都有 500 个表。这是否意味着它将创建 250000 个主题,或者我是否需要为每个客户端单独的 Kafka 集群,并且每个集群/节点将根据数据库中的表数有 500 个主题?
这是将 SQL 数据发送到 Kafka 的最佳方式,还是应该在表上有插入/更新/删除时通过代码向 Kafka 队列发送事件?
【问题讨论】:
-
我非常怀疑所有表实际上都需要放入 Kafka 中吗?如果您维护 100 台数据库服务器,您是否准备好维护 100 个 Kafka 集群(至少多 300 台服务器)?而且我从未使用过 Debezium 连接器,但我相当确定它可以从一个连接器读取数据库中的多个表(是的,架构更改通常是 CDC 日志的一部分)
-
@OneCricketeer 你是说我们需要 100 个 Kafka 集群,每个数据库一个?或者我们可以在集群中有多个节点。我们可以有 2 个集群,每个集群里面有 10 个节点你有什么将实时 sql 数据移动到 kafka 的建议吗?怎么做?
-
Debezium 是常见的推荐。我个人并不需要它,因为我们将数据写入 Kafka,然后写入 SQL,而不是相反......我对您的架构没有建议,但您显然需要隔离您的“客户” " 以某种方式使一个 Kafka 集群中断不会影响另一个客户端
-
@OneCricketeer 我曾考虑将数据写入 Kafka,但这提出了一个问题,如果向 Kafka 发送事件的人将不正确的数据或数据添加到 sql 并且现在无法发送事件,该怎么办。你必须围绕它构建整个过程。你知道一个sql连接器能不能连接多个数据库吗?
-
好吧,如果事件是强类型的(例如 Avro 或 Protobuf),那么虽然不太可能,但可能会有格式错误的数据。关于这个问题,你有没有看到名为
database.names- debezium.io/documentation/reference/1.7/connectors/…的属性
标签: apache-kafka apache-kafka-connect debezium