news 2026/9/14 10:30:17

案例:热点账户扣减架构设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
案例:热点账户扣减架构设计

背景

在大型系统中,热点账户更新是高并发场景下,一个典型场景。如何在高并发的情况下,实现低延迟和数据一致性,是架构师需要面临的挑战。

本文抛弃了外延的流量控制,监控等内容,主要从DB和缓存的角度来讲。

分析

高并发从字面理解,首先是解决并发的问题,并发会导致什么问题呢?

1、流量大,导致响应时间长、甚至压垮系统。

思路:分散流量、平滑流量、限制流量。

解决:流量控制、系统拆分、缓存、异步等,

2、造成数据的不一致。

思路:强一致、弱一致、最终一致。

解决:事务、锁、MQ、对账等。

方案1:数据库乐观锁

在并发量不大,比如100~1000,使用数据库乐观锁是最简单,最方便的方式。

update account set amout=amout-100 where version=10 and amount-100>0

核心:加版本号、判断账户金额不要小于0

方案2:Redis扣减,异步合并

随着并发量变大,比如<5000,单纯使用数据库乐观锁就不行了,会导致数据库宕机。比较简单的方案是,缓存扣减。所有扣减走Redis缓存,再异步到数据库中。

1、扣减日志:写扣减日志【可写文件或DB库-本地表,文件性能会更高】

2、Redis扣减:Redis账户金额扣减。

3、异步汇总:调度30秒~1分钟,同步一次数据库,更新Redis【可乐观锁或分布式锁控制】。

方案3:数据分片,异步合并

随着业务发展,并发量爆发,比如在1万,10万等,此时需要对系统进行深度改造。

1、DB拆分:账户表,拆分为N个账户表,比如1~128张表。【可能涉及分库】

2、缓存扣减:将数据分片到多个redis实例或本地服务器缓存,用于扣减。

3、异步汇总:调度30秒~1分钟,同步一次数据库,更新Redis或本地缓存。【可乐观锁或分布式锁控制】

4、中心调度:有一个调度中心,监控各分片的数据,进行扣减调度,比如表1金额不足,要实时路由到满足扣减要求的表。【需要分布式锁控制】

其它方案:MQ异步+批量扣减

1、扣减请求:Reis扣减,写MQ

2、批量扣减:消息端批量拉取扣减记录,计算金额后,一次性扣减账户记录。

关于读

上面解决了高并发写和数据一致性问题。关于用户读如何实现呢?

1、读缓存,缓存定时与DB对账同步;

2、页面允许少量延迟,提供一个刷新按钮,刷新后显示。

总结

本文介绍了高并发典型场景,热点账户扣减的常见方案,可以根据实际场景进行组合选择。

https://mp.weixin.qq.com/s/9B6j-iwDyoK6gnXs1QR8dQ

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 18:49:47

实现订单自动关闭机制——电商系统中的定时任务设计与实践

【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…

作者头像 李华
网站建设 2026/8/29 7:24:10

更弱智的算法学习 day36

1049. 最后一块石头的重量 II 可以这么理解&#xff0c;有一个target sums // 2&#xff0c;也即有一个目标数组和的一半&#xff0c;把他视为石头一半重量&#xff0c;想要达到的最大价值也即石头一般的重量&#xff0c;每个石头的价值和重量都是他本身。 确定dp数组&#x…

作者头像 李华
网站建设 2026/9/9 5:41:13

渗透测试——Funbox2靶机渗透提权详细过程(FTP匿名登陆与SSH爆破)

今天继续给大家带来vulnhub系列的Funbox2靶机详细的渗透横提权过程&#xff1b; 本次渗透过程&#xff0c;也是学到了新知识&#xff1a; FTP匿名登陆下载文件使用SSH爆破工具登陆用户SUDO提权 文章目录前置准备信息收集访问http页面漏洞一&#xff1a;FTP(匿名登录功能)漏洞二…

作者头像 李华
网站建设 2026/9/12 9:09:41

python基于flask框架的在线音乐推荐排行榜网站

目录基于Flask框架的在线音乐推荐排行榜网站摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Flask框架的在线音乐推荐排行榜网站摘要 该网站采用Python的Flask框架开发&#xff0c;…

作者头像 李华
网站建设 2026/9/11 17:14:19

别再纠结哪个AI做PPT靠谱!“轻竹办公AIPPT”一站式解

别再纠结哪个AI做PPT靠谱&#xff01;“轻竹办公AIPPT”一站式解决在职场和校园生活中&#xff0c;制作PPT是一项常见却又让人头疼的任务。很多人都有过这样的经历&#xff1a;内容已经准备好&#xff0c;却不知道如何快速整理成一份结构清晰、重点突出的PPT。从空白页开始搭建…

作者头像 李华