上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务。但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑、分页、批量多次处理,改造为耗时较小的适合使用RESTful接口模式的定时任务。有一类数据同步结转非常耗时的任务,耗时多少完全看数据量,这类数据处理任务的解决方案,就是本文要介绍的基于DataX实现数据同步功能。

DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、PostgreSQL、HDFS、Hive、ADS、HBase等各种异构数据源之间高效的数据同步功能。

环境准备

1、(必须).Net Framework4.5+

2、(必须)关系型数据库MySQL或SqlServer或PostgreSQL或MariaDB四选一

3、(必须)Quartz.Net2.3.2或更高版本

4、(必须)JDK8或更高版本

5、(必须)Python2.7

6、(必须)DataX3.0或更高版本

7、(必须)PowerDotNet配置中心Power.ConfigCenter

8、(必须)PowerDotNet注册中心Power.RegistryCenter

9、(必须)PowerDotNet数据库管理平台,主要使用DBKey和数据库元数据功能

10、(必须)PowerDotNet缓存平台Power.Cache,后续文章详细介绍

11、(必须)PowerDotNet消息平台Power.Message,主要用于发送预警信息和使用消息队列,后续文章会有介绍

12、(必须)PowerDotNet人员管理平台Power.HCRM,后续文章详细介绍

一、元数据管理

我们在DB管理平台中已经介绍过数据库元数据管理。这里按照实际需要,我们将DB管理平台的功能集成进DataX数据同步平台。

DataX数据同步管理,离不开DBKey、数据库服务器和数据表元数据的开发管理。

二、任务管理

1、单个添加任务

熟悉了DataX的工作原理后,我们可以按需添加数据同步任务,轻松实现从某个库到某个库的“搬迁”。

配合加载好的元数据,动动鼠标,就能完成任务管理配置。

定时配置:

读库配置:

系统自动支持按照时间或者数字序号进行数据同步结转,满足了绝大多数同步需求。

写库配置:

数据同步任务中,自动生成模板功能是重中之重,系统提供了好几个实用工具,主要包括实现“有则更新,无则插入”的模板生成逻辑。

2、批量添加任务

单个任务相对比较简单,但是如果同步任务很多,一个一个添加就比较让人生厌了。别忘了我们开发软件的重要目标,就是“动动鼠标解决问题”。幸好平台开发了自动批量生成多个任务的功能,解放大家的双手。

三、任务调度

和定时任务同步平台类似,利用数据库锁特性,支持分片多集群,实现了定时任务高可用和分片弹性部署。

四、任务统计

和定时任务调度平台的任务统计功能类似,其实还可以统计某个数据同步任务成功处理多少条数据,失败多少条数据,不过通常用户也不关注。

1、单一数据同步任务统计

2、所有同步任务统计

虽然统计功能不是重要功能,可是统计数据的生成还是有技巧的,波动较大的时候,点击上去的提示能让用户一目了然发现问题。

五、其他

数据同步平台还开发了其他常用功能,包括如下:

1、日志管理

2、重试任务管理

3、定时清理DataX文本日志

4、异常预警和自动恢复

利用好数据同步平台,可以大大减轻运维人员和DBA对数据库的管理压力,同时对依赖数据库的业务开发的工作效率有极大的提升。

六、总结

有了定时任务调度平台和数据同步平台,依赖数据库Job的各种定时作业,定时结转业务数据或报表等苦活累活,基础数据的分发(而不用苦哈哈写API接口,虽然我推荐还是最好写接口,但是架不住有人就是爱SQL Join)等等都可以平滑迁移到这两个平台里,让数据库专注于“存储和查询”两个核心功能,定时作业处理只要点点按钮解决问题,真正的解放开发、运维和DBA。

参考:

https://github.com/alibaba/datax

最新文章

  1. RabbitMQ 参数们的Power “续”
  2. android.graphic.Path
  3. 安装zabbix报错configure: error: libcurl library not found
  4. myBatis总结,以及Spring
  5. openssl evp 哈希算法(md5,sha1,sha256)
  6. php通过curl调用jpush接口实现消息的推送
  7. UWSGI安装与使用
  8. 【转】Ubuntu 14.04配置安装java环境和android开发环境(包括真机调试环境)
  9. sqlserver的增删改查
  10. SVN修改已提交版本的日志
  11. pnd_4
  12. RH的NFS配置--简单OK
  13. ConstraintLayout知识记录
  14. Ngnix负载均衡安装及配置
  15. Redis 知识整理
  16. RPM包定制
  17. 自然语言处理NLP-云端API汇总
  18. kubectl-常用命令
  19. Hypergeometric distribution
  20. MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术

热门文章

  1. 如何解决 ASP.NET Core 中的依赖问题
  2. 入门JavaScript正则表达式
  3. page_fault_in_nonpaged_area异常解决方案(已解决)
  4. Windows快捷键及cmd打开方式
  5. 既生瑜何生亮 access_token VS refresh_token
  6. Abp Vnext Blazor替换UI组件 集成BootstrapBlazor(详细过程)
  7. Atcoder Grand Contest 024 E - Sequence Growing Hard(dp+思维)
  8. 洛谷 P7516 - [省选联考 2021 A/B 卷] 图函数(Floyd)
  9. 【基因组预测】braker2基因结构注释要点记录
  10. python11文件读写模块