应用程序在多台机器上部署,且数据源只有一个,在高并发的情况下,如何保证数据的准确性?

程序伪代码:

// 读取账户信息,并且余额加100
Account account = findAccount();
account.setBalance(account.getBalance() + 100);
updateAccount(account);

这个应用程序在多台机器上部署,如果保证数据的准确性。

阅读 5.4k
3 个回答

事务,然后加悲观锁或者乐观锁

对这种情况,可以直接改下逻辑,不要先set再update, 直接传要修改的值 update XXX set balance = blance + change,更复杂的只能用事务了,甚至分布式事务。。。

参考:
有个东西叫幂等 https://www.zhihu.com/questio...

单写库,可以利用数据库的事务的隔离性来解决啊。 而且计算不要在应用层,要在DB中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进