datax3数据同步
(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数据同步相关推荐
- datax 定时执行多个job_数据同步神器Datax源码重构
每日一句永远不要认为我们可以逃避, 我们的每一步都决定着最后的结局, 我们的脚步正在走向我们自己选定的终点.Do not ever think about that we can escape , o ...
- DataX数据同步工具使用
1.DataX 简介 DataX 是阿里云 DataWorks 数据集成 的开源版本,主要就是用于实现数据间的离线同步. DataX 致力于实现包括关系型数据库(MySQL.Oracle 等).HDF ...
- 基于dataX的数据同步平台搭建
前言 基于Java和DataX工具实现数据同步的后台管理,包括数据同步任务的生成,任务的管理,查看任务的执行日志,解析任务的执行结果等功能. 内含一些技术实现方案.心得体会和填坑经验等干货. 阅读本文 ...
- 这款 MySQL、Oracle、HDFS 数据同步工具,有点牛逼!
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...
- 离线数据同步平台datax+报表可视化平台metabase
datax DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...
- 大数据任务调度和数据同步组件初探
本文个人博客地址 本文公众号地址 背景 数据从最原始的状态,可能是一个 excel,一个文本,或者是来自业务数据库的数据,格式各种各样,落地到数据仓库.数据湖中,数据的同步过程 是必不可少的 图片来源 ...
- 使用 DataX 实现数据同步(高效的同步工具)
DataX 使用介绍 前言 一.DataX 简介 1.DataX3.0 框架设计 2.DataX3.0 核心架构 二.使用 DataX 实现数据同步 1.Linux 上安装 DataX 软件 2.Da ...
- 两台SQL Server数据同步解决方案
复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可 ...
- Java多线程编程实战:模拟大量数据同步
背景 最近对于 Java 多线程做了一段时间的学习,笔者一直认为,学习东西就是要应用到实际的业务需求中的.否则要么无法深入理解,要么硬生生地套用技术只是达到炫技的效果. 不过笔者仍旧认为自己对于多线程 ...
最新文章
- android studio 图片的命名规则
- java报错MalformedURLException: unknown protocol: c
- .net 中,使用c# 语言 ,执行exe程序。
- 解决long类型传到前端损失精度问题
- 作业 20181016-10 每周例行报告
- 一个命名管道可以被多个客户端访问吗_Redis 的事务机制和管道技术Pipelining
- MySQL avg()函数
- css3怎么排除第一个,css怎么排除第一个子元素
- 设计模式之代理模式,学习笔记
- case when 效率高不高_扬州效率高的拍摄抖音短视频平台
- 今晚开讲 | 打卡公开课、冲击排行榜,还有福利领取
- Gson之TypeAdapterFactory
- 【转】ASP.NET Web应用程序写EventLog出错的解决方案
- 计算机中用于描述音乐乐曲并,计算机中用于描述音乐乐曲并由声卡合成出音乐来的语言(规范)为。...
- property_自己编写一个读取Property文件的Util类
- 光模块有什么用?什么是SFP光模块?
- 【NLP】文本情感分析
- 利用Python实现词云舞蹈视频
- 时代潮流-云原生数据库的崛起
- 我的谷歌变成了金色传说!
热门文章
- puzzle(1522)纪念碑谷:被遗忘的海岸
- vue组件之间数据传递和通信方式总结
- Mysql-1366 - Incorrect string value: ‘\xE5\xBC\xA0\xE4\xB8\x89‘ for column ‘userName‘ at row 1
- LR手写代码常用的函数
- 「题解」CF1468M Similar Sets
- mapreduceyarn的工作机制----吸星大法
- jquery 绘图工具 flot 学习笔记
- MinIO is already stopped的解决方案
- 勒索蠕虫病毒爆发,致远互联撑起360安全铁闸的中枢
- 学计算机学文学理,文科和理科有什么区别 如何选择学文学理