作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您在使用 If-Match
在 Web 服务上实现乐观锁定方案方面有何经验?
为了简化事情,假设我们正在构建一个简单的 CMS,仅由“页面”组成,每个页面只有一个主体。如果两个用户同时开始编辑同一页面,则只有最后保存的用户所做的更改会被提交(或者更确切地说,他们会覆盖另一个用户所做的更改。)
为了防止这种情况,我计划使用条件 PUT
,即获取 ETag
响应 header 的值,并将其作为 的值提供
header 。如果此值与基于页面当前状态的值不匹配,服务器将拒绝 PUT
请求中的 If-MatchPUT
并返回 412。
我知道一个明显的陷阱,在先决条件检查和实际数据库更新之间可能会出现竞争条件,但这些可以通过事务和排序来补救。
你在实践中尝试过这个吗?这是个坏主意吗?
最佳答案
嗯,这是 If-Match 的设计目的之一,是的,它按设计工作。
关于web-services - 乐观锁定和 HTTP If-Match header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409173/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
这个问题在这里已经有了答案: Pessimistic versus Optimistic Concurrency (Locking versus Feedback) (3 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!