高频热点账户如何解决高并发余额计数问题?
2015-08-07 16:25
1521 查看
支付宝需要有个账户记账,现在很多业务已经出现了很多热点账户。比如互联网大商家,打车业务,快的,滴滴。
账号有余额,主要用于不能扣成负数。 大并发交易下余额快速变化,导致数据库竞争等待。
1 如何取消余额消除竞争呢?
模仿 担保交易,设置两个账户 1. 结账户 2.普通账户
冻结账户上的资金只能用于退款,如果解冻了就无法退款。
1.1 那怎么保证扣款不会被扣款负数呢?
每笔流水会有一个统计值,解冻额。 会并发控制,并且加减,幂等控制流水号。
1.2 如何解冻?
某个流水到时间后,进行解冻,计算出剩余未解冻的金额进行解冻到提现账户上,可以被提现和消费,并且标识已解冻。 该解冻要捆绑计算用到的流水。
这样就避免了热点账户的余额计算。
账号有余额,主要用于不能扣成负数。 大并发交易下余额快速变化,导致数据库竞争等待。
1 如何取消余额消除竞争呢?
模仿 担保交易,设置两个账户 1. 结账户 2.普通账户
冻结账户上的资金只能用于退款,如果解冻了就无法退款。
1.1 那怎么保证扣款不会被扣款负数呢?
每笔流水会有一个统计值,解冻额。 会并发控制,并且加减,幂等控制流水号。
1.2 如何解冻?
某个流水到时间后,进行解冻,计算出剩余未解冻的金额进行解冻到提现账户上,可以被提现和消费,并且标识已解冻。 该解冻要捆绑计算用到的流水。
这样就避免了热点账户的余额计算。
相关文章推荐
- [转]hadoop2.x常用端口
- JS 变量或参数是否有值的判断
- POJ1423————Big Number
- android学习中
- windows下memcached的安装与使用
- mysql存储对象
- VC从文件全路径中获取文件名和扩展名方法
- android 线程池的应用
- 高精度运算
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法
- UVa 10330 Power Transmission (最大流+多源多汇点+结点容量(拆点))
- Spring学习笔记(一)----理解IOC
- (七) Library Projects(库项目)
- 如何抓微信的请求
- 一种Cache Line向量处理机概念
- java泛型介绍及实例
- bzoj3052: [wc2013]糖果公园
- 支付SDK的安全问题——隐式意图可导致钓鱼攻击
- : Exception sending context initialized event to listener instance of class org.springframework.web.
- Java中Zip进行多文件保存