数据同步思路

背景

有数据源 DataSourceA 同步至 数据源 DataSourceB。不是简单数据复制,中间伴随这数据拼装,重组,清洗等一系列操作。

方案

确定三个状态:初始状态 stateA、中间状态 stateB、最终状态 stateC
处理应用有 n 个节点。

  1. 中心话获取状态为 stateA 的数据,并将其状态修改为 stateB 。(通过 Redissson 锁或者中心应用数据推送之类的方案)

  2. 所有节点同时并行处理手上的状态值为 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 是并行的。

  1. 中心应用获取数据,并将数据状态值修改为 stateA

  2. 中心应用推送这批数据到一个数据操作节点上(此处需要推送給当前空闲的操作节点)

  3. 操作节点接收到数据,进行数据操作。修改数据状态

posted @ 2022-06-06 19:41  临渊不羡渔  阅读(61)  评论(0编辑  收藏  举报