数据同步思路
作者:互联网
背景
有数据源 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
-
中心应用推送这批数据到一个数据操作节点上(此处需要推送給当前空闲的操作节点)
-
操作节点接收到数据,进行数据操作。修改数据状态
标签:stateA,同步,状态值,操作,思路,推送,数据,节点 来源: https://www.cnblogs.com/listjiang/p/16349485.html