标签:stateA 同步 状态值 操作 思路 推送 数据 节点
背景
有数据源 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。