(1)地址:GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。

(2)介绍的文章就比较多了,在这里想分析一下 具体是如何设计的以及使用到哪些巧妙的设计

1、自定义json的结构,然后映射到Configuration中,通过Configuration中的方法可以方便的获取对应JOB的配置参数,插件的自定义参数,任务的配置参数,

2、插件+框架的组合 实现基本的扩展,为了防止不同组件之间类的隔离,使用自定义类加载器,在jobContainer启动的时候,加载组件使用自定义类加载器URLClassLoader,真正在运行到那些插件的时候,就会使用自定义类加载,这个点设计的很巧妙。目前加载某个插件,不会加载所有的插件,而是懒加载,就是使用某个job使用哪个的时候,发现为空,才会去加载对应的插件到内存中。

3、一个任务就是一个JVM的进程,一个任务的执行就是一个模版设计模式,init,perpare,split,schedule,post  最终java的多态会走到 自定义的reader和writer的插件中。

4、schedule是任务的分割与执行,每一个TaskGroupContainer 都会运行在一个线程中,一个TaskGroupConatiner中有多个Task处理。因此Task内部为了加速task的快速执行因此也需要使用多线程并发的方式进行执行,TaskExecutor 抽象为一个任务的执行封装体。这个类主要为一个任务的执行,目前看一个任务的执行,会再次创建2个线程一个Reader线程,一个Writer线程,二个线程之间通过ArrayBlockingQueue进行数据的通信,也就是生产者和消费者的设计方式,必须用到ReetrantLock Condiition 进行控制并分。设计的也是很合理。如果有10个Task,5个线程,5个运行中,其它的5个只能等待,cpu自旋等待

5、任务基本的流程就是:

读取插件:将源数据库中的东西转换为Record放到MemoryChannel中,也就是需要将开源的数据字段类型转换为 datax的内部数据类型

写入插件:将Channle中的数据获取到,然后写入到开源的数据库中,需要将record字段类型转换为开源类型。

这也就是需要定义内部的Datax数据类型,然后支持各种数据类型进行转换

java基础用到了哪些东西:commons-cli包的命令行的解析,配置文件到类的映射,反射,类加载器隔离,多线程,线程池,生产者与消费者,多线程并发控制,线程之间的协调,AQS的原理基本理解,多态

目前看只有单机版本的执行,怎么设置周期任务,数据源之间的依赖,然后在数据同步。

最后还需要做一个web系统 配置各种数据源,然后设置周期调度的时间,进行定时的数据全量或者增量的数据同步,分钟,小时的数据同步。

个人觉得 分布式调度系统获取所有的同步任务,分发到不同的机器中,然后多个机器分别执行task任务,这样就分布式进行执行了

国内github:

Gitee 极速下载/alibaba datax

datax编译打包:

DataX源码打包编译采坑记_点点的博客-CSDN博客_datax 编译

datax的docker打包:

通过Dockerfile来部署datax容器 - 百里登峰 - 博客园

datax可视化:

DataX Web首页、文档和下载 - 分布式数据同步工具 - OSCHINA - 中文开源技术交流社区

datax-web: DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。

datax3数据同步相关推荐

  1. datax 定时执行多个job_数据同步神器Datax源码重构

    每日一句永远不要认为我们可以逃避, 我们的每一步都决定着最后的结局, 我们的脚步正在走向我们自己选定的终点.Do not ever think about that we can escape , o ...

  2. DataX数据同步工具使用

    1.DataX 简介 DataX 是阿里云 DataWorks 数据集成 的开源版本,主要就是用于实现数据间的离线同步. DataX 致力于实现包括关系型数据库(MySQL.Oracle 等).HDF ...

  3. 基于dataX的数据同步平台搭建

    前言 基于Java和DataX工具实现数据同步的后台管理,包括数据同步任务的生成,任务的管理,查看任务的执行日志,解析任务的执行结果等功能. 内含一些技术实现方案.心得体会和填坑经验等干货. 阅读本文 ...

  4. 这款 MySQL、Oracle、HDFS 数据同步工具,有点牛逼!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  5. 离线数据同步平台datax+报表可视化平台metabase

    datax DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...

  6. 大数据任务调度和数据同步组件初探

    本文个人博客地址 本文公众号地址 背景 数据从最原始的状态,可能是一个 excel,一个文本,或者是来自业务数据库的数据,格式各种各样,落地到数据仓库.数据湖中,数据的同步过程 是必不可少的 图片来源 ...

  7. 使用 DataX 实现数据同步(高效的同步工具)

    DataX 使用介绍 前言 一.DataX 简介 1.DataX3.0 框架设计 2.DataX3.0 核心架构 二.使用 DataX 实现数据同步 1.Linux 上安装 DataX 软件 2.Da ...

  8. 两台SQL Server数据同步解决方案

    复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可 ...

  9. Java多线程编程实战:模拟大量数据同步

    背景 最近对于 Java 多线程做了一段时间的学习,笔者一直认为,学习东西就是要应用到实际的业务需求中的.否则要么无法深入理解,要么硬生生地套用技术只是达到炫技的效果. 不过笔者仍旧认为自己对于多线程 ...

最新文章

  1. android studio 图片的命名规则
  2. java报错MalformedURLException: unknown protocol: c
  3. .net 中,使用c# 语言 ,执行exe程序。
  4. 解决long类型传到前端损失精度问题
  5. 作业 20181016-10 每周例行报告
  6. 一个命名管道可以被多个客户端访问吗_Redis 的事务机制和管道技术Pipelining
  7. MySQL avg()函数
  8. css3怎么排除第一个,css怎么排除第一个子元素
  9. 设计模式之代理模式,学习笔记
  10. case when 效率高不高_扬州效率高的拍摄抖音短视频平台
  11. 今晚开讲 | 打卡公开课、冲击排行榜,还有福利领取
  12. Gson之TypeAdapterFactory
  13. 【转】ASP.NET Web应用程序写EventLog出错的解决方案
  14. 计算机中用于描述音乐乐曲并,计算机中用于描述音乐乐曲并由声卡合成出音乐来的语言(规范)为。...
  15. property_自己编写一个读取Property文件的Util类
  16. 光模块有什么用?什么是SFP光模块?
  17. 【NLP】文本情感分析
  18. 利用Python实现词云舞蹈视频
  19. 时代潮流-云原生数据库的崛起
  20. 我的谷歌变成了金色传说!

热门文章

  1. puzzle(1522)纪念碑谷:被遗忘的海岸
  2. vue组件之间数据传递和通信方式总结
  3. Mysql-1366 - Incorrect string value: ‘\xE5\xBC\xA0\xE4\xB8\x89‘ for column ‘userName‘ at row 1
  4. LR手写代码常用的函数
  5. 「题解」CF1468M Similar Sets
  6. mapreduceyarn的工作机制----吸星大法
  7. jquery 绘图工具 flot 学习笔记
  8. MinIO is already stopped的解决方案
  9. 勒索蠕虫病毒爆发,致远互联撑起360安全铁闸的中枢
  10. 学计算机学文学理,文科和理科有什么区别 如何选择学文学理