我想执行一个锁定表/行的函数,检查记录(具有特定条件)是否存在,如果不存在,则创建该记录。
我想在我的微服务架构中使用它来处理试图修改相同数据的并发请求。
我如何才能做到这一点?
编辑1:详细解释我的目标:-
步骤1:微服务实例1锁定表,执行过程/事务
步骤2:在过程/事务中,检查记录是否存在,如果存在则返回true并释放锁,如果不存在则创建记录并释放锁。
步骤3:在执行步骤2的同时,另一个微服务实例B试图访问表(即并发请求),但由于它被锁定,实例B将等待实例A释放锁。
步骤4:实例A释放锁后,实例B继续执行步骤2。
可能有5-7个并发请求。
发布于 2021-11-12 23:01:58
如果我错过了您想要实现的目标,我很抱歉,但与其尝试执行这种分布式锁定机制,也许另一种解决方案将是使用某种类型的消息代理,不同的微服务将向其发布消息,由单个使用者处理这些消息,并考虑到可能的重复。确实,有一定的限制,但像Kafka或RabbitMQ这样的服务将保证消息排序。
如果你的微服务需要反馈,你可以让这个第一个写队列的发布者成为另一个队列的消费者,在这个消费者中,前面提到的单个消费者将发布对后端执行的操作的结果。
我认为这种设置将高度分离您的不同服务,而不会有使用建议的锁的风险。
https://stackoverflow.com/questions/65602426
复制相似问题