我们在我们的一个项目中使用消息来实现悲观的并发。这意味着,如果消息下降(通道下降),并发性就会下降。
我更想把乐观和悲观的并发结合起来。如果悲观的并发性下降,仍然有一个备份的乐观并发.
利文·卡多恩
发布于 2009-03-22 16:12:48
和往常一样,我认为答案取决于您正在构建的业务应用程序的性质。您的应用程序的SLA是什么?任务有多重要?
如果您的消息传递基础设施出现故障,应用程序是否继续在锁服务之外工作?如果是这样,那么您可能有义务确保您的并发控制机制不是单一的故障点。
此外,实现真正分布式的、容错的悲观锁定机制需要解决协商一致问题问题。大多数悲观锁定算法依赖于一个单一的序列化权限,它可以响应对锁的请求(例如,有一个“锁”表,或者可能有一个单例锁服务器)。
这样的设计有一个单一的失败点写在上面。为了回答您的第一个问题--是的,我看到业务应用程序使用消息传递来提供悲观的锁定。但是,对于我遇到的大多数业务应用程序来说,完全解决容错问题似乎太过分了。
乐观并发控制在本质上没有这个问题,这就是为什么它在分布式、容错应用程序中被普遍青睐的原因。然而,我意识到业务需求常常战胜了实现的易用性.
如果你对这个话题感兴趣的话,谷歌已经在他们的胖乎乎的船闸服务上发表了一篇利用Paxos共识协议的文章。
https://stackoverflow.com/questions/671081
复制相似问题