上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务。但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑、分页、批量多次处理,改造为耗时较小的适合使用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、数据库服务器和数据表元数据的开发管理。

熟悉了DataX的工作原理后,我们可以按需添加数据同步任务,轻松实现从某个库到某个库的“搬迁”。
配合加载好的元数据,动动鼠标,就能完成任务管理配置,咩哈哈。
定时配置:

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

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

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

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

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

虽然统计功能不是重要功能,可是统计数据的生成还是有技巧的,波动较大的时候,点击上去的提示能让用户一目了然发现问题。
数据同步平台还开发了其他常用功能,包括如下:
1、日志管理
2、重试任务管理
3、定时清理DataX文本日志
4、异常预警和自动恢复

利用好数据同步平台,可以大大减轻运维人员和DBA对数据库的管理压力,同时对依赖数据库的业务开发的工作效率有极大的提升。
有了定时任务调度平台和数据同步平台,依赖数据库Job的各种定时作业,定时结转业务数据或报表等苦活累活,基础数据的分发(而不用苦哈哈写API接口,虽然我推荐还是最好写接口,但是架不住有人就是爱SQL Join)等等都可以平滑迁移到这两个平台里,让数据库专注于“存储和查询”两个核心功能,定时作业处理只要点点按钮解决问题,真正的解放开发、运维和DBA。
参考:
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
通常,数组被实现为内存块,集合被实现为HashMap,有序集合被实现为跳跃列表。在Ruby中也是如此吗?我正在尝试从性能和内存占用方面评估Ruby中不同容器的使用情况 最佳答案 数组是Ruby核心库的一部分。每个Ruby实现都有自己的数组实现。Ruby语言规范只规定了Ruby数组的行为,并没有规定任何特定的实现策略。它甚至没有指定任何会强制或至少建议特定实现策略的性能约束。然而,大多数Rubyist对数组的性能特征有一些期望,这会迫使不符合它们的实现变得默默无闻,因为实际上没有人会使用它:插入、前置或追加以及删除元素的最坏情况步骤复
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定
我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails