跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何确保业务数据的同步、一致?
未分類
2 5 月 2020

如何确保业务数据的同步、一致?

如何确保业务数据的同步、一致?

資深大佬 : 947211232 57

  • 需求就是使用第三方平台的余额、积分、等级
  • 事务操作本地数据,若中间步骤同步出错该如何处理
//开启事务  //更新本地余额  //更新本地积分  //更新本地等级  //同步到第三方余额 if(异常){  //事务回滚 }  //同步到第三方积分 [若中间步骤同步失败,本地数据可以回滚,但第三方之前的已同步数据该如何处理]  if(异常){  //事务回滚 }  //同步到第三方等级 if(异常){  //事务回滚 }  //提交事务 

大佬有話說 (15)

  • 主 資深大佬 : 947211232

    @全体成员

  • 資深大佬 : ChoateYao

    让第三方提供一个可以回滚的接口给你,如果回滚还是失败则记录日志,手动修复。

  • 資深大佬 : tingfang

    事物成功提交以后再调用第三方接口。

  • 資深大佬 : tingfang

    记一个”待调用第三方”的记录,定时任务扫表调用第三方。ps:调用第三方接口一般不应该放在事物内吧。。

  • 資深大佬 : fcten

    本地完成就提交事务,但是标记成同步中。第三方请求添加到请求队列里,重试直至成功。第三方接口要保证幂等。
    如果第三方不在你的控制内,就别考虑回滚了。

  • 資深大佬 : valeamoris

    如果是扣余额,你就本地先扣除余额,提交事务,然后调用第三方。如果是加余额,你可以先调用第三方,确定第三方调用成功,你这边再提交事务。

  • 主 資深大佬 : 947211232

    @ChoateYao 第三方叫微信 T T

  • 資深大佬 : magicnobob

    保证最终一致性,一个出异常全部回滚,提供回滚的接口

  • 資深大佬 : zunceng

    同步做成 oplog 保证业务上同步到 oplog 不会出错

    由另一个流程单向同步 oplog 到第三方系统 这个流程失败的时候因为可以对单条记录回放 大不了手工处理

  • 資深大佬 : zunceng

    用 CAP 来解释就是 保证最终一致行 和 可用性 牺牲分区容错性

  • 資深大佬 : mreasonyang

    @zunceng 分区容错问题客观存在怎么牺牲,而最终一致性实际上是已经牺牲了一致性的

  • 資深大佬 : CoderGeek

    你是想要做到强一致 不容易、如果是最终一致 有不少方法可以实现

  • 資深大佬 : xuanbg

    1、正常情况下,100%由系统提供一致性机制
    2、异常情况下,在复杂度可控的基础上尽可能由系统提供一致性机制
    3、无法由系统提供一致性机制的情况下,业务可中断、可回退的时候中断 /回退业务。
    4、业务不可中断 /回退的情况下,人工介入处理。

  • 資深大佬 : ybonfire

    看这个业务应该是用户间独立的。能否把业务流程做成这样?

    1.事务完成前禁止读,防止读取到脏数据
    2.首先完成本地数据的修改
    3.调用第三方接口,如果接口是幂等的,调用失败则进行重试,如果超过最大重试次数则调用第三方接口进行反向操作,例如之前的操作是积分+15,反向操作则是积分-15 ;
    4.除非调用全部完成,或回滚全部完成,否则一直禁止读,这样做到强一致。如果是最终一直则不用这么麻烦,通过 RocketMQ 应该可以做到。

  • 資深大佬 : ducklyl

    要么全做,做错回滚。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具