架构-数据同步方案

jasmine 于 2024-12-19 发布

方案一、定时任务同步

定时任务同步就是在某个时间点进行数据的批量同步,以定时任务方式进行触发,定时任务技术有:SpringTask,Quartz,XXLJOB,实时性不高

不足:不实时

方案二、通过MQ实现同步

在数据库中执行完增加、修改、删除操作后,向MQ中发送一条消息,此时,同步程序作为MQ中的消费者,从消息队列中获取消息,然后执行同步的逻辑。

优点:能够做到准实时

不足:代码耦合

方案三、通过CDC实现实时同步

通过CDC来解析数据库的日志信息,来检测数据库中表结构和数据的变化,从而实时同步。

优点:准实时、解耦

组件:cannal、Mysql-Streamer 、Debezium、datax

1)DataX datax 是阿里开源的etl 工具,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能,采用java+python进行开发,核心是java语言实现。

github地址:https://github.com/alibaba/DataX

2)OGG OGG 一般主要用于Oracle数据库。即Oracle GoldenGate是Oracle的同步工具 ,可以实现两个Oracle数据库之间的数据的同步,也可以实现Oracle数据同步到Kafka,相关的配置操作可以参考如下:

https://blog.csdn.net/dkl12/article/details/80447154 https://www.jianshu.com/p/446ed2f267fa http://blog.itpub.net/15412087/viewspace-2154644/

3)databus Databus是一个实时的、可靠的、支持事务的、保持一致性的数据变更抓取系统。2011年在LinkedIn正式进入生产系统,2013年开源。

Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更。

Databus的传输层端到端延迟是微秒级的,每台服务器每秒可以处理数千次数据吞吐变更事件,同时还支持无限回溯能力和丰富的变更订阅功能。

github:https://github.com/linkedin/databus

4)gobblin Gobblin是用来整合各种数据源的通用型ETL框架,在某种意义上,各种数据都可以在这里“一站式”的解决ETL整个过程,专为大数据采集而生,易于操作和监控,提供流式抽取支持。主要用于Kafka的数据同步到HDFS。

总结:

相关参考: https://zhuanlan.zhihu.com/p/374548575 https://blog.csdn.net/a934079371/article/details/106184493 https://zhuanlan.zhihu.com/p/586451027