我希望我的问题适合这个网站并且不是太宽泛,但是我在设计以下架构时遇到了麻烦:
我有两个网站。站点 1 负责在用户之间转移信用。站点 2 负责为这些用户提供服务/产品,这些服务/产品可以使用他们在站点 1 中拥有的积分来支付。
假设我在站点 1 上有 1000 个积分。我有一个在站点 2 上花费 50 个积分的服务/产品,并且用户想用他在站点 1 中拥有的积分购买它。
两个站点都与 REST 通信。因此,例如,当用户想要购买服务/产品时,站点 2 准备其请求并将其发送到站点 1,站点 1 进行交易并向站点 2 确认交易成功(例如,用户对服务/产品有足够的积分并且这些学分已成功转移到目的地)
现在这是棘手的部分。在站点 1 中,我有以下逻辑:
Begin transaction
update user set credits -= 50 where id = 1
update user set credits += 50 where id = 2
REST CALL (Site 2) Success
Site 2 response - OK, commit transaction
Commit
由于 REST 是对不同站点的调用,因此事务可能需要一些时间才能完成。同时,是否为任何事务锁定了整个表,或者用户 1 和用户 2 的行是否被锁定?这是实现我的逻辑的正确方法吗?我错过了什么吗?
先感谢您。