如何解决数据版本问题

384782946 · · 875 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

想基于golang设计一个微服务系统,数据存储使用mongodb,而由于mongodb没有MVCC功能,不知道该如何控制数据版本.场景如下: 两个客户端A和B同时登录了用户U,登录后他们拿到了用户的数据,然后分别对用户数据进行了更改,表示为Ua和Ub,然后A和B向服务端提交修改后的Ua和Ub,而Ub先被服务端接收并处理,那么Ua应该怎么处理. 我知道的两种方案: 1.在A和B想要修改用户数据前就使用分布式锁去竞争修改权,获得修改权的用户才能修改和提交数据. 2.使用乐观锁,处理数据版本问题,后一个被处理的数据由于版本落后而失败. 第一个方案是不是用户体验不太好,平时没注意有使用这种做法的产品.第二个方案会导致后一个修改数据被丢弃,体验也不要,而且由于mongodb没有MVCC的支持,实现起来要给所有可能冲突的数据加上版本控制,增加了逻辑复杂性. 那此类问题的通常解决方案是什么?大家都是怎么解决的呢?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

875 次点击  
加入收藏 微博
1 回复  |  直到 2018-09-27 22:28:42
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传