基于flink cdc技术,在不停机情况下完成新老系统数据迁移解决方案

1.业务场景及痛点描述

      当前随着业务发展,由于公司是做海外业务,公司前几年搭建了官网商城,并积累了一定的用户量,然后去年,由于公司发展智能机器人业务,开发了手机APP,供用户控制机器人,也积累了一定的用户,现在公司想要APP端接入商城业务,完成官网商城和APP端用户体系体系打通,建立统一用户中心,并且业务系统接入用户中心的过程中业务系统不能停机,业务不中断。

2. 统一用户中心数据设计

   2.1 官网用户表结构(关键字段展示)
序号字段名字段类型字段含义
1id
2email用户邮箱,可用户登录,可以为空
4user_login用户账号,可用户登录
5....
6....
  2.2  APP端用户表结构(关键字段展示)
序号字段名字段类型字段含义
1id
2email
3app_version
4os
5last_login_time
6......
    2.3 统一用户中心表接口设计(关键字段展示)
序号字段名字段类型字段含义
1id
2gw_user_id
3app_user_id
4user_login
5email
6app_version
7os
8last_login_time
9row_key标识当前行的唯一字段
10......

3. 使用flInk cdc技术,进行数据持续迁移,让业务系统改造完美融合

3.1 创建官网用户数据同步任务,代码如下:
CREATE TABLE gw_user(id bigInt, user_login STRING, password STRING, email STRING, PRIMARY KEY (id) NOT ENFORCED
) comment '官网用户信息'WITH (  'connector'='mysql-cdc',hostname'='xxx.xx.xxx.xx','port'='xx','username'='xx','password'='xxx','scan.startup.mode'='initial','database-name'='gw','table-name'='user'
);CREATE TABLE user_center_user (user_login STRING, email STRING, password STRING, row_key STRING,PRIMARY KEY (row_key) NOT ENFORCED 
) comment 'sink app user'WITH ( 
'connector' = 'jdbc',
'url' = 'jdbc:mysql://xx.xx.xx.xx:xxx/user_center?useUnicode=true&characterEncoding=UTF-8',
'driver' = 'com.mysql.cj.jdbc.Driver',
'username' = 'xxx',
'password' = 'xxx',
'table-name' = 'user' 
);insert into user_center_user
select user_login,email,password,md5(user_login | email | source)
from gw_user;
3.2 创建APP用户数据同步任务,代码如下:
CREATE TABLE app_user(id bigInt, email STRING, password STRING, .....PRIMARY KEY (id) NOT ENFORCED
) comment 'APP用户信息'WITH (  'connector'='mysql-cdc',hostname'='xxx.xx.xxx.xx','port'='xx','username'='xx','password'='xxx','scan.startup.mode'='initial','database-name'='app','table-name'='user'
);CREATE TABLE user_center_user (user_login STRING, email STRING, password STRING, row_key STRING,PRIMARY KEY (row_key) NOT ENFORCED 
) comment 'sink app user'WITH ( 
'connector' = 'jdbc',
'url' = 'jdbc:mysql://xx.xx.xx.xx:xxx/user_center?useUnicode=true&characterEncoding=UTF-8',
'driver' = 'com.mysql.cj.jdbc.Driver',
'username' = 'xxx',
'password' = 'xxx',
'table-name' = 'user' 
);insert into user_center_user
select user_login,email,password,md5(user_login | email | source)
from app_user;

 4. 总结

    当前这里只描述了数据同步相关的设计,更多业务处理还是需要各个自己修改适配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(工厂方法-Factory Method)结构|原理|优缺点|场景|示例

目录 设计模式(分类) 设计模式(六大原则) 创建型 工厂方法 抽象工厂模式 单例模式 建造者模式 设计模式中的工厂方法(Factory Method)是一种创建型模式&#xff…

我与C++的爱恋:日期计算器

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好啊,在我们学习了默认成员函数后,我们通过上述内容,来实现一个简易的日期计算器。 ​ ​ 头文件的声明 #pragma once #incl…

面试经典-Redis数据库的数据倾斜

一、定义 对于集群系统,一般缓存是分布式的,即不同节点负责一定范围的缓存数据。我们把缓存数据分散度不够,导致大量的缓存数据集中到了一台或者几台服务节点上,称为数据倾斜。一般来说数据倾斜是由于负载均衡实施的效果不好引起…

K8S调度下的ingress-controller集群的实现以及nginx配置

# 22、K8S调度下的ingress-controller集群的实现以及nginx配置 目标: 1. 实现ingress-controller的集群部署 实现方法: 1. 为ingress-controller 规划两个节点 2.将这两个节点 打上自定义的 label 3.修改yaml文件,并重新创建 ingress-co…

签约棒球自由球员算法设计

签约棒球自由球员算法设计 1. 问题描述2. 算法设计2.1 动态规划2.2 状态转移方程2.3 初始化2.4 最终结果 3. 算法实现3.1 伪代码3.2 C代码示例 1. 问题描述 假设你是一支棒球大联盟球队的总经理。在赛季休季期间,你需要签入一些自由球员。球队老板给你的预算为 X美…

攻防世界fileclude题解

攻防世界fileclude题解 ​​ 题目要求file1和file2参数不能为空 且file2这个文件内容值为hello ctf,用php://input 然后POST体内输入hello ctf即可满足这个if条件 满足这个条件后就会包含file1变量所指定的那个文件。用php伪协议来跨目录包含一下flag.php文件就可以…

人工智能培训老师叶梓:如何通过Prompt优化提升GPT-4性能

在人工智能领域,尤其是自然语言处理(NLP)中,Prompt工程是一种通过精心设计的提示(prompt)来引导模型生成期望输出的技术。最近,微软的研究团队通过Prompt优化策略,在医疗领域取得了显…

Redis系列1:深刻理解高性能Redis的本质

1 背景 分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。 当然,除了在内存内运行还远远不够…

K3S 证书有效期和续签问题

本文使用k3s版本:k3s version v1.24.17k3s1 (026bb0ec) 默认安装情况下,ca证书有效期是10年,普通证书有效期是1年。 普通证书 k3s官网描述:K3s 客户端和服务器证书自颁发日起 365 天内有效。每次启动 K3s 时,已过期或…

linux 云计算平台基本环境(知识准备篇)

为了更多的了解云计算平台,结合云计算和linux的知识写了一篇云计算的介绍和汇总。 文章目录 前言1. centos的软件管理1.1 yum软件包管理1.1.1 yum命令语法:1.1.2 安装软件包的步骤1.1.3 yum源 2. 主机名管理与域名解析3. centos的防火墙管理4. openstack…

java锁介绍

乐观锁 乐观地认为并发访问不会造成数据冲突,只在更新时检查是否有冲突。乐观锁和CAS的关系可以用“乐观锁是一种思想,CAS是一种具体的实现”来理解。 当使用CAS操作修改数据时,如果版本号不匹配或者其他线程已经修改了要操作的数据&#x…

面试题集中营—分布式共识算法

分布式共识算法目标 分布式主要就是为了解决单点故障。一开始只有一个服务节点提供服务,如下图所示。那么如果服务节点挂了,对不起等着吧。 为了服务的高可用性,我们一般都会多引入几个副节点当备份,当服务节点挂了,就…

记一次Mac(M1)交叉编译Windows系统的过程

做了一个导出文件项目来实践学习GO的成果,开发完成后,在本地调试环境一切正常,打包到Windows测试出现了报错Error: Binary was compiled with CGO_ENABLED0, go-sqlite3 requires cgo to work. This is a stub。后研究得知,gorm的…

如何逃过极域的管控

本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。 因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。 违者必究,谢谢配合。 个人主页:blog.csdn.net/jzw…

【Java框架】Spring框架(四)——Spring中的Bean的创建与生命周期

目录 SpringBean的创建步骤后置处理器(PostProcessor)BeanFactoryPostProcessorBeanPostProcessorInstantiationAwareBeanPostProcessorpostProcessBeforeInstantiationpostProcessAfterInstantiationpostProcessProperties SmartInstantiationAwareBeanPostProcessordetermine…

医疗大模型产品设计

医疗领域的大型模型可以涵盖许多功能点,以提供全面的医疗支持和解决方案。以下是一些可能的功能点设计: 1. **疾病诊断与预测**:利用机器学习算法和医疗数据对患者的症状进行诊断和预测,帮助医生提供更准确的诊断和治疗建议。 2…

如何采集opc服务器数据上传云端

为了进一步提高生产效率,生产制造的不断朝着智能化发展和升级,传统的自动化生产系统已经不能满足需求。传统的SCADA系统一般是用于现场的数据采集与控制,但是本地控制已经无法满足整个工厂系统智能化数字化的需求,智能化数字化是需…

呼叫系统的技术实现原理和运作流程,ai智能系统,呼叫中心外呼软交换部署

呼叫系统的技术实现原理和运作流程可以涉及多个组成部分,包括硬件设备、软件系统和通信协议。以下是一般情况下呼叫系统的技术实现原理和运作流程的概述: 硬件设备: 服务器:用于承载呼叫系统的核心软件和数据库。电话交换机&#…

《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)

1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar、log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的日志文件,一种是控制台输出的日志,还有一种是HTML格…

Docker 镜像仓库常见命令

Docker Registry (镜像仓库) 常用命令 docker login 功能:登录到一个 Docker 镜像仓库,如果没有指定镜像仓库的地址,默认就是官方的 Docker Hub 仓库。 语法: docker login [options] [server]选项: -u:登…