锁定SQL表并等待释放锁定-Java



我想执行一个锁定表/行的函数,检查记录(具有特定条件(是否存在,如果不存在则创建该记录。

我想在我的微服务架构中使用它来处理试图修改相同数据的并发请求。

我怎样才能做到这一点?

第1版:详细解释我的目标:-

步骤1:微服务实例1锁定表,执行过程/事务

步骤2:在过程/事务内部,检查记录是否存在,如果是,则返回true并释放锁,如果不是,则创建记录并释放锁。

步骤3:在执行步骤2时,另一个微服务实例B试图访问该表(即并发请求(,但由于该表被锁定,实例B将等待,直到实例A释放锁定。

步骤4:在实例A释放锁之后,实例B继续其步骤2。

可能有5-7个并发请求。

如果我错过了您想要实现的目标,很抱歉,但与其尝试执行这种分布式锁定机制,也许另一种解决方案是使用某种类型的消息代理,不同的微服务将向其发布消息,由一个消费者来处理消息,同时考虑到可能的重复。的确,有了某些限制,但像Kafka或RabbitMQ这样的服务将保证消息排序。

如果您的微服务需要此反馈,您可以让第一个写入队列的发布者成为另一个队列的消费者,在该队列中,上述单个消费者将发布针对后端执行的操作的结果。

我认为这种设置将高度解耦您的不同服务,而不会有使用建议的锁的风险。

最新更新