可能没有 CDC 的 Kafka 流式传输?

Possible Kafka streaming without CDC?

我正在处理一个项目。我很好奇是否可以在没有 CDC 的情况下在数据库上实现 Kafka。 (CDC 并没有一直打开它) 在网上找不到任何讨论其他选项的资源。是否可以将数据直接输入kafka?例如写C#代码读取数据库然后插入作为连接器的Kafka?

看看这个,它解释了一切:-)

https://www.confluent.io/kafka-summit-ny19/no-more-silos-integrating-db-into-apache-kafka

tl;dr:你可以写一些代码,但问题是你应该写一些代码:)几乎肯定不会.您可以使用 "proper" CDC 从事务日志中获取事件,或者您可以将 'query-based CDC' 与 JDBC 源连接器一起使用以仅轮询新记录。上面的谈话中讨论了每种方法的优缺点。

可以,但不应该。将 CDC 视为另一个软件,当然,您可以编写类似的软件。您需要处理许多棘手的事情:

  • 你应该从数据库日志中读取数据(binlog in MySQL,oplog in MongoDB ...)所以你必须了解你要导出的每个数据库供应商的日志格式。
  • 维护持久数据。假设您在一个事务中向 Kafka 写入了一个数据列表。当你写到中间步骤出现错误时会发生什么?您必须重试。否则,您系统的另一部分从 Kafka 读取数据将看到部分数据。 ...

这背后有很多原因,这是唯一的理论上的解决方案。这是一个 great blog 来自一个在分布式数据库方面非常有经验的人的讨论,他讨论了将自定义 CDC 写入 Postgres 或一般的任何数据库供应商。