首页 > 解决方案 > Golang 微服务中 API 调用的竞争条件

问题描述

我有一个在 Heroku 上运行的微服务架构。我在处理比赛条件时遇到了一些问题。

问题是,该服务A

我注意到,如果服务A快速连续收到两个请求(重复请求),那么这两个操作将竞相调用C. 因此,用户最终可能会出现两次取款,以及可能的非法负余额。

更复杂的是,在这个生产环境中,微服务通常会在多个 Heroku dyno 上运行。所以我认为这使得使用 Golang 的sync.Mutex. 潜在地,我可以考虑调整此服务以使用单个测功机以允许使用互斥锁。

有关如何处理此问题的任何建议?

标签: postgresqlgoherokumicroservicesrace-condition

解决方案


推荐阅读