因项目需要,结合目前参与的项目,以及个人技术能力范围,组合研发一套web可视化数据同步系统,正式名称:DataXP。

项目背景:接触过阿里云这类大数据平台,对于中大型项目以及需要与外部系统对接数据的情况下,几乎都需要数据共享/分析处理/ETL同步等功能。

避免重复造轮子,首页了解了一番目前成熟的kettle这类,存在一些问题,要不是商业,要不就是主流容器化支持不太好,没有Web管理控制台等等,总之开源上想使用一款体验好,技术主流,部署简单,功能稳定来说比较困难,通常都无法直接拿过来用,多多少少有很多不足之处需要二次开发,而且设计成型跨开发语言难以二开,而且程序组件都是分散的,这里装一个那里装一个,因此决定组合一套成熟技术,开发一个通用性的数据同步系统,引入了一些开源优秀框架,其中核心组件1.XXLJob分布式调度,用于分布式调度执行节点;2.DataX阿里云DataWorks商业版本的开源版本,因为使用过DataWorks对DataX的插件设计思路很感兴趣,支持各种异构数据源同步,专业的,详情百度了解,最后打包成docker镜像,只要你有一个docker环境和mysql数据库就可以跑起来,运行非常简单。

整体架构设计思路:

1.支持容器化Docker一键部署,快速交付;

2.嘿嘿,必须是java开发语言,熟悉的SpringBoot搭建的管理后台;

3.开发两个服务1个是admin,一个是node执行器,admin负责调度,node负责执行任务;

4.admin和node分别通过源码的方式集成XxlJob的admin和client,有少许的源码改造工作,尽量保留xxljob的原汁原味,方便后期升级;node单独集成DataX3.0一起打包,admin和node会独立打包的docker镜像。

5.非必要技术一概不要,目前快速交付需要的环境:1.docker环境;2.admin镜像;3.node镜像;4.mysql数据库。

先上图:

1.登录

2.任务调度

3.数据集成

4.配置调度

5.数据开发 - 绑定了公共库的数据源变为公共表,用于中间数据处理

6.数据作业 - 将离线同步和数据开发串联作业

7.调度日志查看(进行中的任务可以暂停刷新-终止任务等非常方便)

8.Docker容器化部署,rancher平台托管,node节点可以分布式扩展,部署架构参考XXLJOB,节点之间是独立的,统一由admin发送调度任务

以下对功能需求介绍如下:

1.执行调度(这个不多介绍了,熟悉XXLJob的同学一看就知道,还是熟悉的味道,熟悉的配方,完美复刻(好吧有改造的成分))

2.数据集成(重点,用过阿里云DataWorks的同学能够感受到熟悉的感觉,没错参考核心的几个DataWorks操作)

2.1 离线同步 - 基础功能

  主要负责异构数据源的数据同步,目前UI上只支持关系型数据库,设计上支持扩展,底层逻辑是,设计出DataX所需要的JSON,给到调度,调度发送给Node节点,Node节点丢给DataX去执行就好了,执行日志全部通过XxlJob的方式输出,UI上面为了体验友好做了改造,启动执行立刻弹出日志窗口,增加暂停/继续刷新和弹出窗终止任务等实用功能,体验上单点聚合不用切换到别的地方去。

2.2 数据开发 - 基础功能

  这里重点借助公共库表的设计,参考DataWorks思路,通常离线同步只是两个跨数据源的库表同步,如果需要一个中间过渡的公共库做临时表的数据处理,那么数据开发就是做这个事情的,可以做一些update/delete等数据清洗,集成了一个SQL编辑器,后台提供接口支持,开发好的sql脚本给到调度,调度发送给Node,Node节点直接执行发送给公共数据库,因为是更新SQL,没有借助DataX,直接发送到源库执行,也可以全程借助DataX,不多说,公共库只支持Mysql。

2.3 作业 - 高级功能

  思路就是离线同步和数据开发看作是一个个单一任务,那么一个作业就是为了把一个个单一的串起来,因为有时候一个完整的数据同步可以涉及多个同步开发步骤,作业属于一个高级功能项.

3.数据源

3.1 数据源管理

  这个好理解,就是全局数据源,有的没的加上去就能同步了。目前已支持Mysql/Oracle/Postgresql/sqlserver/达梦/hive/oceanbase/mongodb/hbase

3.2 公共表

  就是公共库表给数据开发的,只支持Mysql,需要从数据源里边选择一个绑定为公共库,全局只能有一个。

4.资源分组

  

5.系统管理

通用的数据权限管理功能,已支持全局的数据权限过滤。

DataX Web可视化分布式调度数据同步系统的更多相关文章

  1. Cesium数据可视化-仓储调度系统可视化部分(附github源码)

    Cesium数据可视化-仓储调度系统可视化部分 目的 仓储调度系统需要一个可视化展示物资运输实况的界面,需要配合GPS设备发送的位置信息,实时绘制物资运输情况和仓储仓库.因此,使用Cesium可视化该 ...

  2. spring boot / cloud (十五) 分布式调度中心进阶

    spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring ...

  3. 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例【转】

    Kylin 麒麟官网:http://kylin.apache.org/cn/download/ 关键字:olap.Kylin Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的 ...

  4. [转帖]单集群10万节点 走进腾讯云分布式调度系统VStation

    单集群10万节点 走进腾讯云分布式调度系统VStation https://www.sohu.com/a/227223696_355140 2018-04-04 08:18 云计算并非无中生有的概念, ...

  5. 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程

    这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试repl ...

  6. 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第14门课程:Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发

    掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime ...

  7. 深入理解分布式调度框架TBSchedule及源码分析

    简介 由于最近工作比较忙,前前后后花了两个月的时间把TBSchedule的源码翻了个底朝天.关于TBSchedule的使用,网上也有很多参考资料,这里不做过多的阐述.本文着重介绍TBSchedule的 ...

  8. Elastic-Job-一个分布式调度解决方案

    注:Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成.Elastic-Job-Lite定位为轻量级无中心化 ...

  9. Elastic-Job 分布式调度平台

    概述 referred:http://elasticjob.io/docs/elastic-job-lite/00-overview Elastic-Job是一个分布式调度解决方案,由两个相互独立的子 ...

  10. Spring整合Quartz分布式调度

    前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...

随机推荐

  1. PR-不同分辨率视频如何合并

    1.文件-新建-序列,可以使用预设,也可以自行设置基础分辨率. 2.将分辨率不同的视频,在"效果控件"-"缩放"当中,设置合适的缩放比例即可.

  2. SHR之员工合同解除

    员工合同解除HRContractInfoFacadeControllerBean 这块的意思的源码可以自行翻阅该源码. 调用员工的实现这个合同自动解除 String sql="select ...

  3. PHP 阿里云短信验证码的实现

    Test.php是测试你的环境是否部署完成 demo里的sendSms.php里修改 // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息$ ...

  4. MongoDB和sql语句的对照

    左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...

  5. windows 安装配置mysql 8,以及远程连接访问

    官网下载mysql8,https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 1.解压zip包到安装目录 比如我的安 ...

  6. SpringBoot怎么管理封装java包的关系

    首先SpringBoot直接写注解加依赖就可以了,基本上不用写xml,非常方便,在这里我只写了两个核心包 为什么选择jar类型? SpringBoot基本上是个应用程序了,只要用java命令程序去运行 ...

  7. 记录一次 网关负载 流量不均匀 cpu使用率不均衡问题

    网关负载  流量不均匀  cpu使用率不均衡问题??? 1.压力机访问源  有多少ip 有10个? 还是20个? 就是样本源不多的话,负载上hash的话  就你可能不是真实的访问需求 ,你客户端就那么 ...

  8. 【peewee】Python使用peewee时where中不同类型比较的问题

    问题 以学生表为例,TableStudents表中age字段是TextField类型,想要筛选出18岁以上的学生 TableStudents.select().where(TableStudents. ...

  9. Hadoop编程——Java编写MapReduce:WordCount案例

    一.MapReduce简介 MapReduce是一种面向大数据平台的分布式并行计算框架,它允许使用人员在不会分布式并行编程的情况下,将程序运行在分布式系统上.它提供的并行计算框架,能自动完成计算任务的 ...

  10. software Engineering homework 4

    博客信息 沈阳航空航天大学计算机学院2020软件工程作业 作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/1068 ...