Concurrency 业务应用程序-使用消息传递的悲观并发

Concurrency 业务应用程序-使用消息传递的悲观并发,concurrency,messaging,optimistic,pessimistic,Concurrency,Messaging,Optimistic,Pessimistic,我们正在我们的一个项目中使用消息传递来实现悲观并发。这意味着,如果消息传递停止(通道停止),并发性将停止 这在其他业务应用程序中是否完成 如果消息传递中断,是否关闭应用程序(注销用户) 我更倾向于将乐观和悲观的并发性结合起来。然后,如果悲观并发性下降,仍然存在备份乐观并发性 像往常一样,我认为答案取决于您正在构建的业务应用程序的性质。您的应用程序的SLA是什么?它有多关键 如果您的消息传递基础结构出现故障,应用程序是否会在锁定服务之外继续运行?如果是这样,那么您可能有义务确保并发控制机制不是

我们正在我们的一个项目中使用消息传递来实现悲观并发。这意味着,如果消息传递停止(通道停止),并发性将停止

  • 这在其他业务应用程序中是否完成
  • 如果消息传递中断,是否关闭应用程序(注销用户)
我更倾向于将乐观和悲观的并发性结合起来。然后,如果悲观并发性下降,仍然存在备份乐观并发性


像往常一样,我认为答案取决于您正在构建的业务应用程序的性质。您的应用程序的SLA是什么?它有多关键

如果您的消息传递基础结构出现故障,应用程序是否会在锁定服务之外继续运行?如果是这样,那么您可能有义务确保并发控制机制不是单一故障点

此外,实现真正分布式、容错的悲观锁定机制需要解决以下问题。大多数悲观的锁定算法依赖于有一个单一的、序列化的权限来响应锁请求(即,有一个“锁”表,或者可能有一个单例锁服务器)

这样的设计到处都是单点故障。回答您的第一个问题——是的,我看到业务应用程序使用消息传递来提供悲观锁定。然而,对于我所遇到的大多数业务应用程序来说,完全解决容错问题似乎是过火了

乐观并发控制本质上没有这个问题,这就是为什么它通常在分布式、容错应用程序中被首选的原因。然而,我意识到业务需求常常胜过实现的简单性

如果你对这个话题感兴趣,谷歌已经发表了一篇关于他们的文章,文章利用了