数据同步思路
背景
有数据源 DataSourceA 同步至 数据源 DataSourceB。不是简单数据复制,中间伴随这数据拼装,重组,清洗等一系列操作。
方案
确定三个状态:初始状态 stateA、中间状态 stateB、最终状态 stateC
处理应用有 n 个节点。
-
中心话获取状态为 stateA 的数据,并将其状态修改为 stateB 。(通过 Redissson 锁或者中心应用数据推送之类的方案)
-
所有节点同时并行处理手上的状态值为 stateB 的数据,将其处理后修改状态值为 stateC 。
redisson 伪代码实现
所有书同步节点上都有此代码
// 1.1. 通过 redisson 获取操作锁(只会有一个节点获取到) // 1.2. 查询状态值为 stateA 的数据 // 1.3. 修改状态值为 stateB // 1.4. 释放锁 // 以下代码各个节点会是并行运行 // 2.1. 数据操作 // 2.2. 修改状态值为 stateC // 接着走 1.1
中心数据推送实现
和 redisson 大致思路一样,中心应用获取数据,然后推送给操作节点操作数据。
以下步骤,1、2 是中心串行,各个操作节点执行 3 是并行的。
-
中心应用获取数据,并将数据状态值修改为 stateA
-
中心应用推送这批数据到一个数据操作节点上(此处需要推送給当前空闲的操作节点)
-
操作节点接收到数据,进行数据操作。修改数据状态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律