惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
祭天的支付故障:大促高峰运营后台操作拖死在线交易
隐墨星辰 · 2024-12-18 · via 人人都是产品经理

在支付系统的复杂世界里,一次不经意的后台操作可能引发灾难性的后果。本文回顾了一起发生在大促高峰期间的支付故障案例,揭示了一个小小的查询操作如何导致整个在线交易系统瘫痪。作者隐墨星辰,凭借十余年的支付架构设计经验,深入分析了故障的原因,并提出了有效的解决方案。这篇文章不仅是对历史的回顾,也是对未来系统设计的警示。

大家好,我是隐墨星辰,专注境内/跨境支付架构设计十余年。

今天我们继续聊聊那些“可以拖出去祭天”的线上故障案例。这次不是领导人好,保住我小命一条,而是我不够资格,大老板把我领导的领导给祭天了。

这也是很多年的故事,当时的微服务框架还没有现在这么成熟,限流与服务隔离也没有现在这么先进。

起因只是一次小小的后台查询操作,却在大促高峰期引发了连锁反应,让整个系统陷入瘫痪。

一次大促开始不久,一位运营小姐姐在后台发起了一个后台查询操作,很不幸,触发了慢查询。本来所有在线交易系统都使用缓存以顶住一些读压力,但仍然有小部分请求在缓存中找不到数据,穿透到了数据库,却遇上这条正在阻塞资源的慢查询。结果越来越多请求堆积,数据库CPU瞬间飙升至100%。

DBA尝试kill连接却无济于事,不得已只能重启数据库。可重启后,因为在线交易的请求仍在,缓存依旧被打穿,数据库一恢复服务就再度陷入满载状态,陷入恶性循环。

只能人工先限流,再次重启,慢慢恢复流量。等服务完全恢复,大促高峰已经过去大半。

事后复盘发现:当时在线交易对那部分数据其实并非强依赖,即使拿不到那些数据,也能继续走主流程。但由于缺少弱依赖分析和对应的降级策略,这块数据竟成了全局堵点。

虽然是一次有点久远的故障,背后的思路对现在的系统设计仍然有一些借鉴意义。

先看看问题。

首先是后台操作与线上数据库耦合。大促期间的后台查询没有隔离环境,直接在生产DB上执行引发慢SQL,将数据库资源长时间占用,影响在线交易。

其次缺乏弱依赖降级策略。这部分数据其实是“弱依赖”,在线交易不拿到也能继续推进。但系统实现成了强依赖,导致前端请求死等结果,让线程和资源耗尽。

同时还缺少自动化限流手段,当慢SQL导致数据库处理能力下降,大量请求同时穿透到后端加剧问题。如果有自动化限流策略,可在异常时快速对请求进行削峰填谷,避免资源被透支。

当然最重要是缓存防击穿策略欠缺。在高并发场景下,若缓存未命中数据且没有防击穿策略,一旦后端阻塞,所有请求将同时穿透数据库,极易造成资源枯竭。应有预热缓存、单线程代理查询、请求队列等措施来防止缓存失效时大量请求直击后端。

看到问题,对应的措施就比较简单了。

首先是后台与线上隔离。在大促期间禁止非所有必要的后台操作,即使需要也要单独环境或读副本、读缓存,不要直接跑在核心库上。可以在大促时切换后台操作权限,菜单折叠、权限下线,减少意外。

其次是弱依赖识别与降级。对主链路中的数据需求进行强弱依赖分析。对于弱依赖数据,一旦获取超时或异常,即刻跳过,不阻塞整个主流程。有损服务好过无服务可用。

然后是限流和熔断。引入自动化限流工具,对下游资源的请求数量进行控制。当下游变慢或挂掉时,限流可阻止请求洪流加剧问题。

最后是老生常谈的缓存防击穿策略。在高并发下,缓存穿透会将数千上万请求砸向数据库。应提前预热数据,让缓存中长期保留重要信息;对请求加锁或队列,让同一时间只有一个线程去真正请求后端数据,其余等待结果,从而避免瞬间集中冲击。

在这个事故之前,我是没有想到一个简单的后台操作也会搞死在线交易。从另外一个侧面看,当请求量足够大时,很多隐藏的问题就会暴露,也就是所谓的量变引起质变。

一将功成万骨枯,一个个线上故障成就了一个个经验丰富的工程师。

这是《支付通识》专栏系列文章中的第(11)篇。

深耕境内/跨境支付架构设计十余年,欢迎关注并星标公众号“隐墨星辰”,和我一起深入解码支付系统的方方面面。

本文由人人都是产品经理作者【隐墨星辰】,微信公众号:【隐墨星辰】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。