我是靠谱客的博主 清新棒棒糖,这篇文章主要介绍mysql余额高并发_高并发下作余额扣减的一些经验,现在分享给大家,希望可以做个参考。

前一段时间参加了优化一个老的计费系统,学习了一些高并发下做余额扣减的常用手段,也做了一些尝试,因此在这里总结记录一下。

问题描述

对于一个计费系统来说,并发问题事实上分为两类,一类是应用并发高,也就是纯粹的用户量大,访问量多,这类问题和一般的高并发问题没有区别,用分布式等手段就可以解决;另外一类问题则是一般分布式手段无法解决的用户高并发问题,也是本文要着重说的。

这类问题源自对某些高频账号,大量的并发访问,会导致瓶颈首先出现在某些数据库记录上,大量操作由于无法竞争到数据库的行锁而导致等待,这些等待中的操作又会占用其他资源,最终导致系统不可用。

针对这类问题,下边介绍一些常用的处理办法。

不设置余额字段

由于对于一个稳定的计费来说,一定是会记录计费流水明细的,所以完全可以不设置余额字段,而采用根据流水明细计算的方式来获取余额。

不过这种方法不是万能的,比如拿广告业务的计费系统来说,频率非常高,而每次的金额很小,这时候想通过计算求和去算余额,显然是不现实的。

合并与拆分

这是两种方式,因为有一些相似之处,都是要降低对单条数据库记录的访问压力,所以也就放到一起说了。

合并,就是对单个账号的数次请求作合并处理,再往数据库写,这样就等于降低了数倍的压力。

拆分,则是把一个主账号拆分成数个子账号,然后把请求分配到各个子账号上,这样单个账号的压力就小了。然后再用其他手段把子账号的数据合并成主账号数据,返回给用户。

减少

最后

以上就是清新棒棒糖最近收集整理的关于mysql余额高并发_高并发下作余额扣减的一些经验的全部内容,更多相关mysql余额高并发_高并发下作余额扣减内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(158)

评论列表共有 0 条评论

立即
投稿
返回
顶部