可以做任务的创意设计网站,wordpress插件去掉广告,专业建网站的学校,中油共享平台app摘要#xff1a; cdp同步基本原理 数据集成#xff08;Data Integration#xff09;是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点#xff0c;可为 20 多种数据源提供不同网络环境下的离线#xff08;全量/增…摘要 cdp同步基本原理 数据集成Data Integration是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点可为 20 多种数据源提供不同网络环境下的离线全量/增量数据进出通道。
一、cdp同步基本原理数据集成Data Integration是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点可为 20 多种数据源提供不同网络环境下的离线全量/增量数据进出通道。数据源类型的详情请参见 支持数据源类型。数据集成的原理数据集成在阿里云上提供一套分布式离线数据同步平台同时提供一套抽象化的数据抽取插件称之为Reader、数据写入插件称之为Writer并基于此框架设计一套简化版的中间数据传输格式从而达到任意结构化、半结构化数据源之间数据传输之目的。从用户角度来看一个数据集成同步任务运行Job示意图如下所示上述中红色虚箭头是代表通过collector状态收集器监控数据返回到脏数据管理服务器进行数据分析灰色方向箭头代表数据流向。DI Service主要是包含资源管理器、Job管理器、脏数据管理器、分布式服务、鉴权服务等。Job Container主要是将数据集成运行任务分成若干个task然后通过scheduler调度管理。TaskGroup Container主要是数据抽取通过数据通道channel将数据写入。• 使用数据集成Job启动API向数据集成服务端发起调用提交一个离线数据同步Job。• 数据集成收到Job API请求后将负责做必要的安全和权限校验待校验通过后数据集成会下发相应的Job到执行集群节点启动离线数据同步任务。• Job启动后根据您提供的源端Reader、目的端Writer的配置信息加载并初始化相关插件连接两端数据源开始数据同步工作。• Job运行过程中将随心跳向数据集成汇报当前进度、速度、数据量等关键运行指标可根据Job的状态API实时获取该Job运行状态直至Job运行结束成功或者失败。流程概述步骤1数据源端新建表。步骤2新增数据源。步骤3向导模式或脚本模式配置同步任务。步骤4运行同步任务检查目标端的数据质量。因为DRDS不支持存储过程造一张实际生产的表有些复杂所以采用通过RDS创建表数据再导入到DRDS的方式二、测试表准备通过RDS新建一张实际生产的表数据量为一亿行左右主键为自增通过存储结构插入数据业务只需要天数是随机的delimiterdropprocedurehuayu2;CREATEPROCEDUREhuayu2()begindeclarevarint;setvar0;whilevar100000000doinsertintotpcsbillrecievehuayutestselectnull,1234567,210025002110010114117029000016,0,null,0,null,null,null,0,0,null,null,0,null,null,null,21100101,null,null,null,null,null,null,null,21002500,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,CONCAT(2018,′−′,′03′,′−′,LPAD(FLOOR(1(RAND()∗31)),2,0),′′,′14:54:04′),null,null,′2017−11−1014:54:04′,null,null,null,2,4,null,null,null,null,null,0,null,null,null,null,null;setvarvar1;endwhile;enddropprocedurehuayu2;CREATEPROCEDUREhuayu2()begindeclarevarint;setvar0;whilevar100000000doinsertintotpcsbillrecievehuayutestselectnull,1234567,210025002110010114117029000016,0,null,0,null,null,null,0,0,null,null,0,null,null,null,21100101,null,null,null,null,null,null,null,21002500,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,CONCAT(2018,′−′,′03′,′−′,LPAD(FLOOR(1(RAND()∗31)),2,0),″,′14:54:04′),null,null,′2017−11−1014:54:04′,null,null,null,2,4,null,null,null,null,null,0,null,null,null,null,null;setvarvar1;endwhile;enddelimiter三、测试要求通过mysqldump在DRDS新建导入的表以天为分表键分表键的值是随机分布在3月1日-3月31日的。将源表按分表键做拆分1天拆成1个任务并发向目标表里进行同步同时目标表按天做分区找到最佳并发量。注意分库键的选择为自增主键不能是固定否则hash的时候只落在一个库里面,分表键也是随机的日期这样数据就能均衡的分布在各个库里面四、具体实施步骤1、将RDS的表导入到测试环境DRDSmysqldump –urds_xncs_qps8 –p –P3306 –h 10.1.1.1 database test1 –t /home/hy.sql这里加上了-t参数目的是不备份表的结构这样做的好处是导入到DRDS的时候在DRDS端建一个相同名字的数据库并且可以自定义分库分表键这样就省略了再次去修改备份的.sql文件而达到分库分表的目的。当然如果只是需要一个单表那就复制表结构跟数据就好了
2、 将复制的表数据导入到DRDS2.1、 通过mysql -udrds_uat_pcs –P3306 –h10.3.3.3 drds_uat_pcs -p /home/hy.slq2.2、 进入到目标表所在的数据库执行source /home/hy.sql这两种方式大同小异第一种稍微快些第二种会有过程在屏幕上展示。习惯用第二种在刚开始导入的时候会一些报错但是对实际的导入不会影响3、具体测试数据量mysql select count(*) from t_pcs_bill_recieve_huayutest ;count(*)783220751、 一个工作流分十个同步任务执行每个同步任务where条件对应3天每一个同步任务对应一个分区共10个分区最大速率上线10M/s结构图各个任务耗时1、任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:57:28 任务总计耗时 : 612s 任务平均流量 : 1.69MB/s 记录写入速度 : 20753rec/s 读出记录总数 : 12638734 读写失败总数 : 02、任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 543s 任务平均流量 : 1.14MB/s 记录写入速度 : 14038rec/s 读出记录总数 : 7580943 读写失败总数 : 03、任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:23 任务总计耗时 : 545s 任务平均流量 : 1.14MB/s 记录写入速度 : 14004rec/s 读出记录总数 : 7576202 读写失败总数 : 04、任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:26 任务总计耗时 : 548s 任务平均流量 : 1.13MB/s 记录写入速度 : 13933rec/s 读出记录总数 : 7579645 读写失败总数 : 05、任务启动时刻 : 2018-03-28 11:47:10 任务结束时刻 : 2018-03-28 11:56:17 任务总计耗时 : 546s 任务平均流量 : 1.14MB/s 记录写入速度 : 13979rec/s 读出记录总数 : 7576799 读写失败总数 : 06、任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:28 任务总计耗时 : 553s 任务平均流量 : 1.12MB/s 记录写入速度 : 13774rec/s 读出记录总数 : 7575981 读写失败总数 : 07、任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 541s 任务平均流量 : 1.15MB/s 记录写入速度 : 14115rec/s 读出记录总数 : 7579924 读写失败总数 : 08、任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:56:18 任务总计耗时 : 541s 任务平均流量 : 1.15MB/s 记录写入速度 : 14115rec/s 读出记录总数 : 7579924 读写失败总数 : 09、任务启动时刻 : 2018-03-28 11:47:15 任务结束时刻 : 2018-03-28 11:56:27 任务总计耗时 : 551s 任务平均流量 : 1.13MB/s 记录写入速度 : 13856rec/s 读出记录总数 : 7579604 读写失败总数 : 010、任务启动时刻 : 2018-03-28 11:47:17 任务结束时刻 : 2018-03-28 11:55:20 任务总计耗时 : 482s 任务平均流量 : 877.38KB/s 记录写入速度 : 10522rec/s 读出记录总数 : 5050713 读写失败总数 : 0整体耗时630秒 
2、 一个工作流分五个同步任务执行每个同步任务where条件对应6天每一个同步任务对应一个分区共5个分区最大速率上线10M/s结构图任务同步耗时1、任务启动时刻 : 2018-03-28 14:27:49 任务结束时刻 : 2018-03-28 14:37:42 任务总计耗时 : 593s 任务平均流量 : 2.09MB/s 记录写入速度 : 25605rec/s 读出记录总数 : 15158472 读写失败总数 : 02、任务启动时刻 : 2018-03-28 14:27:53 任务结束时刻 : 2018-03-28 14:37:36 任务总计耗时 : 583s 任务平均流量 : 2.12MB/s 记录写入速度 : 26093rec/s 读出记录总数 : 15160230 读写失败总数 : 03、任务启动时刻 : 2018-03-28 14:27:43 任务结束时刻 : 2018-03-28 14:37:33 任务总计耗时 : 589s 任务平均流量 : 2.10MB/s 记录写入速度 : 25775rec/s 读出记录总数 : 15156082 读写失败总数 : 04、任务启动时刻 : 2018-03-28 14:27:45 任务结束时刻 : 2018-03-28 14:37:36 任务总计耗时 : 591s 任务平均流量 : 2.10MB/s 记录写入速度 : 25729rec/s 读出记录总数 : 15154873 读写失败总数 : 05、任务启动时刻 : 2018-03-28 14:27:43 任务结束时刻 : 2018-03-28 14:38:01 任务总计耗时 : 617s 任务平均流量 : 2.34MB/s 记录写入速度 : 28768rec/s 读出记录总数 : 17692418 读写失败总数 : 0整体耗时629秒3、 一个工作流分十五个同步任务执行每个同步任务where条件对应2天每一个同步任务对应一个分区共15个分区最大速率上线10M/s结构图 
总体耗时623秒4、 一个工作流分一个同步任务执行最大速率上线10M/s结构图同步任务耗时任务启动时刻 : 2018-03-28 15:42:05 任务结束时刻 : 2018-03-28 15:57:16 任务总计耗时 : 910s 任务平均流量 : 7.02MB/s 记录写入速度 : 86257rec/s 读出记录总数 : 78322075 读写失败总数 : 0总耗时928秒5、 一个工作流分三个同步任务执行最大速率上线10M/s结构图总耗时699秒6、 一个工作流分四个同步任务执行最大速率上线10M/s结构图总耗时672秒测试结果
并发数 10 5 15 1 3 4
总耗时 630秒 629秒 623秒 928秒 699秒 672秒 并发数 1 3 4 5 10 15
总耗时 928秒 699秒 672秒 629秒 630秒 623秒
初步结论在并发为5、10、15的情况下同步数据的速率基本没有变化630秒左右在并发为1、2、3、4的情况下速率由930秒提升到630秒左右从而可以得出结论在并发为5的情况下同步速率已经达到最大再增加并发对于速率的增加效果不明显。原文链接干货好文请关注扫描以下二维码