[沉淀之华] 自研基于SpringBoot Mybaits 构建低代码数据治理脚手架分享:涵盖数据同步、数据比对、数据归档、数据恢复为一体

文章目录

    • 成果演示
    • 背景
    • 整体能力
    • 功能描述
    • 相关细节
    • 安装使用

成果演示

Github地址:数据治理脚手架
wiki:kg-ctl-core使用文档

在这里插入图片描述

背景

  1. 为什么要做这个?

一个老生常谈且不得不谈问题:随着业务日益发展,如果不做数据迁移,MySQL在每天几百万数据产生的背景下,到千万级时,由于B+树的成长导致查询性能下降越来越明显,即便是以大名鼎鼎NoSQL:ES、MongoDB、TIDB 都不会去单独承载一个公司的全量数据,势必会在一个标志性时间内以冷热区分,用热数据来极大发挥关系数据库的读写性能,用冷数据发挥NoSQL存储和查询性能【事实上ES、TIDB在TB级数据下写入速度也会打折扣】。
因此当业务体量到达一个层面,就需要去通过数据迁移手段来维护冷热数据
注:分表终究是缓兵之计,

  1. 为啥不用canal?

首先canal确实有一定便捷性,特别是解耦了业务;但是不知道有多少人用过,我们最初也用过,但是有几次未知的事故下来总结几点不适合:

  1. canal本身也是服务需要单独部署,交给运维管控,同时因为其内部黑盒导致排查问题困难,而且如果出现网络异常造成消息丢失,无人知晓,本质缺少细粒度error日志和监控
  2. canal 作为mysql的slave,会无脑接受binlog,然后解析成消息通过各种中间件如kafka、rocketmq发送给真正接受数据源:这时候有两个选择
    2.1 另起一个服务,消费消息同步【我们采用这种方式,在写多、数据库抖动情况下容易出现消息积压, 】
    2.2 直接通过canal已支持目的数据源配置方式同步,目前NoSQL这块仅仅支持ES、HBase,并且新能力几乎不在研发
  3. 公司处于疫情之后的降本增效阶段,各组都在缩容服务器资源,难以提供新机器来维持
  4. canal 只管数据同步,却不考虑如何校验数据一致性,即便同步完成可不可用还两说

总上所述几个痛点,结合背景,我们采用内置SDK方式,将通用同步能力、通用数据比对能力、数据归档数据恢复能力构成完整的迁移体系于一身自研低代码脚手架,以提高数据治理的效率,同时降低机器成本,后续运维成本【小公司非常建议】


整体能力

在这里插入图片描述

功能描述

1. 面向通用数据治理,减少90%的重复冗余的数据同步工作开发
2. 精细化控制任务频次、量级甚至可以联动高低峰时段
3. 支持多维度数据同步数据恢复,支持业务唯一id、时间段,包括分表
4. 无需额外部署服务器资源,可直接内置在现有业务中
5. 提供自动check同步数据源之间表结构差异,及时感知业务变更对目的数据源的影响【进行中】
6. 基于Prometheus提供可视化监控告警
7. 钉钉进度同步

相关细节

1、仅仅通过不到20行代码和配合即可实现
在这里插入图片描述
2、日志输出
在这里插入图片描述
3、钉钉实时进度推送&告警
在这里插入图片描述
4、Granfana 监控收集
在这里插入图片描述


安装使用

看个人需要,既可以以jar方式依赖注入到已有项目中,或者单独部署成服务进行通用化数据治理
无论哪一种都需要下载依赖,然后只需要如下几步:

  1. 在你的项目中,配置目标数据源 【推荐抽一个公共服务来统一做】
  2. 实现目标接口,按示例照做即可
  3. 配置xxl-job请求参数
  4. 配置apollo任务控制参数
  5. 启动job

有关具体实操可以前往Github下载源码查看quick-start操作实例;
或者直接参考wiki:kg-ctl-core使用文档

另外本文主要聚焦低代码如何去实现整个数据迁移过程,有关更多迁移细节可以参考我的这篇体系讲解:从梳理到落地-DB单表千万级归档详细流程讲解


http://www.niftyadmin.cn/n/5433325.html

相关文章

【运维】StarRocks数据迁移到新集群(针对于集群互通、不互通的情况)

文章目录 一. 迁移整体思路1. 对于新旧集群互通的情况2. 对于新旧集群不互通的情况 二、迁移过程(两个集群互通的情况)1. 备份过程1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minio建立联系1.3. 备份数据到minio 2. 迁移过程2.1. 通过mysql…

SwiftUI动画之几何匹配

SwiftUI动画之几何匹配 记录一下 日常开发中经常使用到的滑块功能 如何同工几何匹配快速制作点击动画 import SwiftUIstruct MatchedGeometryEffestExamle: View {let categories ["Home", "Popular", "Saved"]State var selecedTitle "…

这是二叉搜索树吗?

一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”&#xf…

Mr-Robot1靶场练习靶场推荐小白入门练习靶场渗透靶场bp爆破wordpress

下载链接: Mr-Robot: 1 ~ VulnHub 安装: 打开vxbox,菜单栏----管理----导入虚拟电脑 选择下载完的ova文件,并修改想要保存的位置(也可以保持默认位置) 导入完成后可以根据自己的情况去配置网络链接方式 完成…

贝叶斯定理,先验信念,似然,后验概率

贝叶斯定理形式如下: P ( H ∣ D ) P ( H ) ⋅ P ( D ∣ H ) P ( D ) P(H|D) \frac{P(H) \cdot P(D|H)}{P(D)} P(H∣D)P(D)P(H)⋅P(D∣H)​ 回顾一下,这个公式包含 3 个有特殊名称的要素: P ( H ∣ D ) P(H|D) P(H∣D) 是后验概率&#xf…

2025武忠祥考研数学,视频百度网盘+基础全程课程PDF

“得数学者的天下”,25考研首先要开始的就是数学复习,而数学复习首先要开始的必然是高数! 很多同学选择了跟着武忠祥老师学习高数,但是具体要怎么学?用什么书?怎么刷题?快来看看以 下的武忠祥…

React 实现下拉刷新效果

简介 本文基于react实现下拉刷新效果,在下拉的时候会进入loading状态。 实现效果 效果如上图所示,在下拉到底部时候,会出现loading条,在处理完成后loading条消失。 具体代码 布局 & 逻辑 import {useRef, useState} from …

最细节操作 Linux LVM 逻辑卷管理

Linux LVM(逻辑卷管理) 周末愉快,今天带大家实战一下LVM! 一、LVM理论 LVM,即Logical Volume Manager,逻辑卷管理器,是一种硬盘的虚拟化技术,可以允许用户的硬盘资源进行灵活的调整和动态管理…