我正在评估使用Kafka来同步我们公司项目的内部和云数据库,并得到了一个奇怪的效果,新数据在真正创建/修改后仅2小时就被提取到jdbc数据源的主题中。发生以下情况:
现有软件在本地Oracle DB中写入数据条目。列LAST_CHANGED_AT设置为客户的真实时间(例如,17.10.23 15:52:48,352053)。列类型为TIMESTAMP。我无法影响此过程或数据。
JdbcSourceConnector监视字段并每秒轮询一次,它运行在企业Kafka示例中。它的本地时间偏移了两个小时。因此,在创建条目时,服务器的本地时间是13:52:48。直到15:52:49才获取数据,因此显然JdbcSourceConnector忽略了未来的时间戳。
由于我们需要数据同步到云与最大. 1-2秒的延迟,这样的延迟是不可接受的。作为一个新手在Kafka,我还没有能够找到一个解决方案。所以,有人可以帮助如何解决这种情况?
2条答案
按热度按时间lokaqttq1#
我通过以下方式修复了这个问题:Kafka服务器是UTC,数据库正在写入CET条目。所以,为了解决这个问题,我使用了db.timezone:“Europe/Copenhagen”。现在延迟平均为0.5秒,这绝对是好的,并且与1秒的轮询间隔相关。
ztmd8pv52#
使用Change-Data-Capture(Debezium或Oracle XStream/GoldenGate)捕获所有数据库事件,而不是基于任意时间戳的JDBC轮询