我是靠谱客的博主 飞快猎豹,最近开发中收集的这篇文章主要介绍记录一次flink消费kafka数据进行oracle数据同步问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

oracle数据同步项目。在同步过程中偶发插入或者更新数据后数据立即会进行删除。导致同步失败;

基本技术架构

oracle触发器

进行数据的增删改查时将数据变更情况写入一张日志表

flume

采集日志表。使用sql插件

kafka

信息中间件

flink

进行流处理,使用侧输出流

问题

数据同步的逻辑是:

1.在kafka中获取到数据后使用测输出流进行分发
2.使用duutils进行数据连接管理 但是不是使用连接池来进行管理 只是使用queryrunneer进行数据库的增上改查 因为数据库连接池是由连接池进行管理连接的 自动管理过程中可能造成事务上的错误 所以自建连接来进行数据的增删改
3.每个事件中如果标识为delete的话会进行delete from …
而update以及insert 先用merge into 语句进行分流 再查询是否有相同数据 将相同数据进行排序 将除了第一条外的所有数据进行更改(改变同步标识。字段为1的话oracle触发器就会排除此条数据到日志表中,防止同步数据的无限循环)再删除上面更新的数据

问题描述

数据更新后可能会发生一个事件执行一条sql后插入了两条数据。那么这样的话就会造成删除操作
这种问题可能是网络或者其他问题 会造成这种哦仍然发生 具体原理不知

解决问题以及一些知识点

解决

在触发器中判断delete之前的标识 从源头停止删除后的继续同步
之前delete未进行标识判断

一些知识点

flink的并行度与kafka分区数量的对应关系:
查看源码可知 kafka的分区数会除以flink的并行度进行决定某个分区被哪个进程(消费者)消费。将并行度调整为和kafka分区数量一致 保持最好的性能
而生产者多个线程共享一个缓冲区进行发送数据

最后

以上就是飞快猎豹为你收集整理的记录一次flink消费kafka数据进行oracle数据同步问题的全部内容,希望文章能够帮你解决记录一次flink消费kafka数据进行oracle数据同步问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部