-
Notifications
You must be signed in to change notification settings - Fork 2
低代码数据治理 ‐‐ 使用文档
li kaiguang edited this page Mar 12, 2024
·
5 revisions
这是一款可以内嵌在应用程序、也可以单独部署的低代码数据治理脚手架or数据治理平台, 融合了数据同步、数据比对、数据归档、数据归档为一体的核心能力
以数据源A 同步到 数据源B为例:
-
配置好A,B数据源【依托自身多数据源配置即可】,如果你还不知道什么是多数据源可以参考:【kg-ctl-quickstart示例】
-
确定A,B数据源的共同唯一索引,创建时间、更新时间索引,缺失的及时补充
-
开始coding
3.1 在A、B的数据源目的表【假设是分表order_0..127】的mapper文件,继承SyncMapper<各自POJO/domain>
3.2 在B的POJO/domain 唯一索引上声明@TableId(type=IdType.Input)
3.3 对数据源B添加service文件仿照mybatisplus写法, 只需要继承SysncService<B已经继承SyncMapper的mapper,B的POJO>,并纳入IOC容器
3.4 新建一个job类,完成最后的代码编写,根据需要继承,假设是基于时间同步,那么继承DataSyncCommonProcessor<A的POJO, B的POJO>- 实现唯一索引方法
- 实现convertToTarget方法,【如果没有特殊定制,可以直接使用spring BeanUtils完成转换】
- 新起一个方法,里面直接调用super.runTask(),加上@XXlJob注解
3.5 开发完毕
-
配置xxl-job参数, 如下是参数解释说明:
{
"targetTime": "update_time", // 必选 ,基于那个时间索引扫表
"startTime": "2023-01-01 00:00:00", // 扫描开始时间,mode>0时才有效且必选
"endTime": "2024-01-01 23:59:59", // 扫描结束时间,mode>0时才有效
"tablePreFix": "order_", // 带下划线的表名
"tableRange": "0->127", // 可选,分表起始位置,可以灵活制定,但是不能超过物理分表最大值,
"mode": "inc_sync", // 任务模式 默认增量同步,full_sync 全量同步 inc_check 数据比对[支持增量、全量] inc_archive 增量数据归档 full_archive 全量数据归档
"syncInterval": "PT1H", // 必选,同步数据的间隔【需要根据业务体量决定,1H 能产生数据的极值,需要根据实际情况动态调整为分钟甚至秒】
"syncPeriod": "T-1", // 同步周期,mode =0才有效,支持T+N、T-N,根据数据分布和需要自
"insertMode": "insert_ignore" // 默认同步操作是覆盖写: cover_write, insert_ignore为有则跳过,无则插入
}
- 配置开关控制参数: key:kg.job-config ,建议使用Apollo或者Nacos配置中心可以动态调控
{
"url": "https://oapi.dingtalk.com/robot/sendxxxxxx",
"secret": "xxx", // Dingding机器人
"bizPeekDuration": ["6->10", "14-17"], // 高峰时间段 全局默认
"maxBatchSize": 200, // 基于业务id同步的高峰最大限制条数,全局默认
"batchSize": 300, // 基于业务id同步平峰最大限制条数 全局默认
"sleepTime": 200, // 执行1次同步的休眠时间,单位ms 全局默认
"submitThreadCount": 8,// 批处理线程数,可以动态控制,生效时间在本批次完成之后 全局默认
"custom": {
"OrderSyncJob": {
"run": true, // 控制开关启停
"submitThreadCount": 4, // 定制化线程数,优先使用
"sleepTime": 200
},
"OrderCheckJob": {
"run": true,
"submitThreadCount": 8
},
"testSyncJOb": {
"run": true
}
}
}
- 使用xxl-job调度,也可本地测试直接启动
和数据同步流程一样,如果前面基础配置已经完成,只需要修改3.4步骤
3.4 新建一个job类,完成最后的代码编写,根据需要继承,假设是基于时间同步,那么继承CheckCommonProcessor<A的POJO, B的POJO>
3.5 开发完成,如果需要可以实现ignoredFields 方法,【代表比对需要忽略的字段】