如何处理同一个内容被同时编辑

文章讨论了在用户同时使用不同浏览器修改同一订单时产生的问题,提出了两种解决方案:一是利用编辑锁进行并发控制,二是使用数据版本号记录修改历史。编辑锁存在限制,而数据版本号无法拦截同一时间的修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景:

用户用不同浏览器打开了同一个订单,后一次修改覆盖了前一次修改的内容,导致下单错误。
拓展场景:改变订单信息的任务被创建且未写入前,其他用户修改了订单信息,该任务完成后覆盖了这次修改的内容。

已知实现方案和优劣:

1.(暂定)编辑锁

  • 锁查询接口,前端传入业务 code 和当前业务唯一 id 来创建和查询锁
    • 业务 code 由后端订,保证跨服务唯一性
  • 当有锁存在时返回正在编辑的用户信息
  • 有返回的话,在进入页面和保存页面时出现提示,但非强制拦截(解锁接口可能未成功发起)
    • 进入页面时提示是为了避免用户录入大量信息后无法保存
    • 保存时提示是为了避免用户在页面长期停留后遗忘了进入时提示
  • 在页面组件销毁、浏览器或标签关闭时调用解锁接口

2.数据版本号

  • 缺点:
    • 不能拦截同一时间发起的数据修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值