当前位置:   article > 正文

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

基于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 创建官网用户数据同步任务,代码如下:
  1. CREATE TABLE gw_user(
  2. id bigInt,
  3. user_login STRING,
  4. password STRING,
  5. email STRING,
  6. PRIMARY KEY (id) NOT ENFORCED
  7. ) comment '官网用户信息'
  8. WITH (
  9. 'connector'='mysql-cdc',
  10. hostname'='xxx.xx.xxx.xx',
  11. 'port'='xx',
  12. 'username'='xx',
  13. 'password'='xxx',
  14. 'scan.startup.mode'='initial',
  15. 'database-name'='gw',
  16. 'table-name'='user'
  17. );
  18. CREATE TABLE user_center_user (
  19. user_login STRING,
  20. email STRING,
  21. password STRING,
  22. row_key STRING,
  23. PRIMARY KEY (row_key) NOT ENFORCED
  24. ) comment 'sink app user'
  25. WITH (
  26. 'connector' = 'jdbc',
  27. 'url' = 'jdbc:mysql://xx.xx.xx.xx:xxx/user_center?useUnicode=true&characterEncoding=UTF-8',
  28. 'driver' = 'com.mysql.cj.jdbc.Driver',
  29. 'username' = 'xxx',
  30. 'password' = 'xxx',
  31. 'table-name' = 'user'
  32. );
  33. insert into
  34. user_center_user
  35. select
  36. user_login,
  37. email,
  38. password,
  39. md5(user_login | email | source)
  40. from gw_user;
3.2 创建APP用户数据同步任务,代码如下:
  1. CREATE TABLE app_user(
  2. id bigInt,
  3. email STRING,
  4. password STRING,
  5. .....
  6. PRIMARY KEY (id) NOT ENFORCED
  7. ) comment 'APP用户信息'
  8. WITH (
  9. 'connector'='mysql-cdc',
  10. hostname'='xxx.xx.xxx.xx',
  11. 'port'='xx',
  12. 'username'='xx',
  13. 'password'='xxx',
  14. 'scan.startup.mode'='initial',
  15. 'database-name'='app',
  16. 'table-name'='user'
  17. );
  18. CREATE TABLE user_center_user (
  19. user_login STRING,
  20. email STRING,
  21. password STRING,
  22. row_key STRING,
  23. PRIMARY KEY (row_key) NOT ENFORCED
  24. ) comment 'sink app user'
  25. WITH (
  26. 'connector' = 'jdbc',
  27. 'url' = 'jdbc:mysql://xx.xx.xx.xx:xxx/user_center?useUnicode=true&characterEncoding=UTF-8',
  28. 'driver' = 'com.mysql.cj.jdbc.Driver',
  29. 'username' = 'xxx',
  30. 'password' = 'xxx',
  31. 'table-name' = 'user'
  32. );
  33. insert into
  34. user_center_user
  35. select
  36. user_login,
  37. email,
  38. password,
  39. md5(user_login | email | source)
  40. from app_user;

 4. 总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/453167
推荐阅读
相关标签
  

闽ICP备14008679号