繁体   English   中英

寻找有关分布式系统内记录锁定的建议

[英]Looking for a recommendation on record-locking within a distributed system

在记录锁定方面,我们正在尝试为我们的团队提出一种推荐的设计模式。 典型的思路如下:1.用户从列表中选择一条记录2.用用户ID锁定该记录3.加载锁定的记录记录(不锁定,然后有人对其打败)。

我是否缺少某些东西,或者这似乎是唯一的方法? ((在我们的案例中,乐观锁定会给最终用户带来麻烦和混乱。通常,修改量非常大。)

可能使您的解决方案管理更加繁琐的细节是在崩溃或连接失败后摆脱锁定。 这就是乐观锁定和悲观锁定之间真正权衡的地方。 当乐观锁定失败时,手动合并或重做编辑是一件痛苦的事情,但是悲观和持久锁定模型崩溃后出现的麻烦会让人感到头痛(因为任何在90年代支持Pervasive支持的会计系统用户的人都会在很长的时间内告诉您机会)

一种答案是使用RDBMS的机制来管理事务和并发:使用SELECT FOR UPDATE或任何适合您的环境和隔离级别的语法来获取记录。 如果您的一个客户端崩溃或断开连接,事务将回滚并释放锁。

在像网络这样的无连接环境中或连接经常丢失和恢复的环境中,具有会话超时的基于会话的模型也可以工作:

  • 如果会话已过期,请尝试清除记录上的现有锁
  • 尝试将记录锁定为sessionid(如果上一步失败,则失败)
  • 选择锁定的记录(如果上一步失败,则不返回记录)

因此,当会话过期时,锁将被释放。 崩溃后无需手动删除锁,并且可以容忍客户端/连接性问题。 但是,编码确实需要更多的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM