高级 Java · 下单正逆向闭环白皮书
主线只有一条:买成 → 履约 → 退成/修好。优惠分摊、支付 OMS/WMS、售后寄修换新都挂在这条线上。餐饮/跨境是行业旋钮;Docker/K8s/AI/AgentScope 必须服务主线本质。写法像在公司做需求,拒绝技术拼凑。一年维度用 S-Year 坚持;复杂场景强制 四段闭环。收官带走 钉拆标选验 OS。
阅读前先看 #delivery-status:金标只有 3 块,其它多为骨架。
DELIVERY v1.1诚实交付冻结(停止无限加厚)
- 不把「有目录 / 有批处理加厚」说成「全书 HARD GATE PASS」。
- 金标只有下面三块;其它节即使字多,默认最多算「骨架可用」。
- 下一步深化由你按优先级点名(最多 5 项),不再自动扩 scope。
① 金标完成(可以认真学、可以对外讲)
| 锚点 | 为何算金标 | 怎么用 |
|---|---|---|
#s-ddd-agg |
聚合根唯一性多层(业务键/DB/并发/号段)+ 加载慢因与最小图 + 冲突/好坏加载图 + 跨行业案 + 详答 | 面试/进组讲「双单怎么防、加载为何慢」从这里进 |
#ency-fm-rocket |
CommitLog/ConsumeQueue/刷盘/复制/顺序/DLQ/事务存储链齐;金融 vs 电商 vs 物流 | 消息底座金标;T-Found-Rocket 只作入口 |
#ency-fm-polardb
(CN·DN·GMS·CDC) |
共享存储 vs PolarDB-X 控制面/数据面拆清;付后读主/CDC 边界 | 分布式库选型与排障从这里进 |
② 骨架可用(可浏览、可当索引;勿宣称完工)
正逆向主线 B0/B-F/B-R、B-X 五案、S-MS-X / T-K8s-X / T-AI-X / T-Found 其它子章、多数 #ency-fm-*:结构在、能导航、有部分底板与案例,但深度不及上表三金标。节内若见「骨架·待深化」红/黄标,以该标缺项为准。
- 用法:跟主线读 → 卡点再点名深化;不要整本顺序硬背。
- ENCY 里除 Rocket / PolarDB 外,门禁列已降为「骨架可用」,不再假 PASS。
③ 未达标 · 勿背(单独拿出去会误导)
- P1/P2 速查、glossary、cheatsheet:只有跳转价值,不是深度正文。
- 任何仍写「HARD GATE PASS」却不在上表三金标内的说法:以本页为准作废。
- 案例里的「工程目标/示意」量级:禁止当成某厂未公开 KPI。
- Spark/Flink 等大数据条目:明显弱于 MQ 金标,面试主攻实时数仓勿只靠本节。
④ 若继续深化(最多 5 项 · 你来选)
#ency-fm-kafka或#ency-fm-mysql提到接近 Rocket 金标#s-ms-x-orchOutbox/Inbox 生产联调剧本补全#t-k8s-x-release金丝雀 SLO/undo 可执行附件#t-ai-x-rag评测集文件 + 陷阱题包- 某一个 B-X 案(你指定)补真实字段映射与压测表
冻结声明:未点名之前,不启动「整书再去水」循环。审计页 #doc-audit / #ency-audit 已按 v1.1 对齐。
CASE-GATE行业案例硬门槛模板(五段必填 · 禁止草草带过)
company-prd 行业案(Case1/2/3/4、#ency-*-case-*、B-X、S-DDD-agg、AI/K8s 等)必须按本模板五段落盘,缺一段=不合格。
- 完整业务场景:谁(角色/系统)、峰值或约束、验收口径(含资损/对账/时延)。
- 技术落地配置:可落地的配置项/表结构/主题与分区/超时/副本/唯一索引/幂等键等,禁止只写组件名。
- 线上真实故障:症状、影响面;标注「案例归纳」(公开分享常见故障模式,非内部泄密)。
- 分步优化方案:1.2.3. 可执行步骤(含验证点),禁止「加强监控」空话。
- 落地效果数据:公开量级或工程目标/示意区间;明确「示意」,禁止假装某厂未公开 KPI。
完整业务场景:综合零售交易域:C 端用户支付成功后渠道重复回调;峰值大促日支付回调可达平峰数倍~一个数量级。约束:回调超时重试、本地事务必须短、资损零容忍。验收:同一 channelTxnId 重放 N 次订单态不变;已付必有履约 Outbox 或可对账挂账。
技术落地配置:表 pay_callback_idempotent(channel, txn_id) 唯一索引;订单 UPDATE ... SET status='PAID' WHERE status='WAIT_PAY' AND version=?;Hikari 池按核数×2+磁盘因子;外部 HTTP 禁止包在 DB 事务内;RocketMQ/Outbox topic order_paid,生产者超时 3s,消费 maxReconsumeTimes=16。
线上真实故障(案例归纳):症状:客服报「扣款成功仍待支付」与「双履约单」交替出现。影响面:支付成功链路与 OMS 下发。根因模式:先查后插无唯一键 + 长事务包渠道查单。公开分享常见,非某厂内部代号。
分步优化方案:1) 上唯一索引与条件更新,回放压测连点/重放;2) 拆短事务,查单异步;3) Outbox 与对账三针(支付↔订单↔履约);4) 看板:回调重复率、未知态工单、Outbox lag。
落地效果数据:工程目标:连点/重放双单=0;支付命令 P99 回到百毫秒级(示意区间,非未公开 KPI)。公开分享量级:大促回调重复属常态,幂等后资损类工单显著下降(示意)。
S0体系总图与能力模型
挂回:学习闭环起点 → B0 → S-Method
保证客人买成、退成、修好时,钱货券积分权益对得上账。
外包高级验收:换甲方仍用同一正逆向模板;半夜能止血;预算紧能裁剪。
用统一模板消灭「知识点散装」的不确定性。
每节强制业务本质/技术本质/无它坏哪步;技术零件必须挂回主线某一步。
若没有它,业务哪一步会坏:没有主脊柱:目录再厚也只是名词仓库。
能力模型(三可)
| 能力 | 验收 | 落点 |
|---|---|---|
| 可迁移 | 换行业仍用同一正逆向模板 | B0 + S-Method |
| 可讲解 | 能按需求讲清为何用某技术 | essence + 需求溯源表 |
| 可落地 | 有对账/幂等/回滚验收 | B-F / B-R Runbook |
flowchart TB
S0[S0 目标三可]
S1[S1 问题域=正逆向主线]
S2[S2 需求→本质→方案→验收]
B0[B0 主线总图]
BF[B-F 下单正向]
BR[B-R 逆向售后维修]
BI[B-Ind 餐饮/跨境旋钮]
T[T 横向零件]
K8s[T-K8s 发布弹性]
AI[T-AI-Stack Skills/MCP/RAG]
Agents[T-AI / T-AS 多智能体]
MS[S-MS 卡点难点亮点]
V[V1 大厂高配/中厂MVP]
S3[S3 E2E 路考]
S4[S4 复习]
SM[S-Method 五步法]
S0-->S1-->S2-->B0
B0-->BF-->BR-->BI
T-->BF
T-->BR
K8s-->BF
AI-->BR
Agents-->BR
MS-->BF
MS-->BR
V-->BF
BR-->S3-->S4-->SM
SM-.->|周复盘|S2
编号导航
| ID | 职责 |
|---|---|
S0–S4 | 脊柱:目标→问题域→方法→路考→复习 |
B0 / B-F / B-R / B-Ind | 业务主线 |
T-K8s | 发布弹性(服务主线) |
T-AI-Stack / Skills / MCP / RAG / Agents | AI 重头戏(挂订单域) |
S-C4 | 认知闭环四段(本质→实现→原理→实质) |
S-Year | 一年坚持(12月·52周·季度OKR) |
B-X | 生产级复杂场景×5(挂主线) |
S-Method | 钉拆标选验五步法(收官) |
B-L / V1 | 横向借鉴与配置(降级) |
T* | 技术零件,必须标注服务主线哪段 |
S-MS | 拆分卡点,服务主线边界 |
我的反思与思考
S1问题域:围绕下单正逆向(不是摊位市场)
挂回:S0 → 本页 → S2
| 问题域 | 主线位置 | 章节 |
|---|---|---|
| 优惠/拼团/券/积分/分摊 | 正向结算 | B-F F1/F2 |
| 风控·支付·OMS·WMS·物流 | 正向履约 | B-F F3 |
| 仅退款/退货/价保/寄修/换新/翻新 | 逆向 | B-R |
| 餐饮高峰·餐损 | 主线配置 | B-Ind |
| 跨境清关·国际退 | 主线配置 | B-Ind |
| 发布回滚·弹性 | 工程辅路 | T-K8s |
| Skills / MCP / RAG / 多智能体 | 人效辅驾(重头戏) | T-AI-Stack |
| 微服务/K8s/AI 极致 | 工程+副驾加深 | S-MS-X · T-K8s-X · T-AI-X |
| DDD·模式·管理·基础件底板 | 可交付方法论 | S-DDD-X · S-Mgmt-X · T-Found-X |
| 大促三联演练 | 交叉章 | X-大促 |
| 资金热点·大厂治理 | 横向借鉴 | B-L / V1 |
我的反思与思考
我的反思与思考
S2方法论:背景 → 本质 → 方案 → 验收
挂回:S1 → 本页 → B0 → S-Method
每个需求先钉:交换什么、怕什么资损、谁验收。
用评审口吻写 In/Out、主/异常流程、上线观察——像在公司做需求,不是教科书目录。
每个技术点消灭一种不确定性;说不清就删。
一致性、时效、并发冲突、可追溯、爆炸半径——先选主矛盾。
若没有它,业务哪一步会坏:只堆名词:上线后无人知道坏在主线哪一步。
- 背景 / PRD 切片:谁、要什么、约束
- 业务本质 × 技术本质(开篇必填 essence 框)
- 需求拆解:功能 / 非功能 / 资损 / 合规
- 技术溯源:每一项技术对应哪条需求(无需求则删除)
- 方案:模式 + 架构 + 并发,只为验收
- 验收:用例 / 对账 / 监控 / 回滚 / 上线观察
- 练手:需求变更或线上故障形式,不考纯名词
我的反思与思考
我的反思与思考
S2+认知闭环四段:业务本质 → 实现 → 原理 → 业务实质
四段
flowchart LR
C1[业务本质]-->C2[技术实现]-->C3[技术原理]-->C4[业务实质]
反例
flowchart TD
OnlyMQ[只讲中间件]-->Fail
OnlyStory[只讲故事]-->Fail
先说客人/财务怕什么坏:资损、体验、合规。
外包验收:四段写不全,方案不算过审。
实现回答「怎么做」;原理回答「为何稳」;实质把技术拉回验收。
高并发不是独立章节,是贯穿峰值/热点/削峰/降级的约束。
若没有它,业务哪一步会坏:技术炫技跑偏,或业务描述无法落地成可观测交付。
| 段 | 强制问句 | 禁止写法 | 高并发要带什么 |
|---|---|---|---|
| C1 业务本质 | 谁疼?验收句?不可逆点? | 上来就 Redis/Kafka | 峰值量级、热点 SKU、可接受降级 |
| C2 技术实现 | 状态机/表/消息/接口怎么落地? | 只有架构图无表结构 | 削峰队列、预热、限流位 |
| C3 技术原理 | 为何幂等/为何最终一致够用? | 背名词无因果 | 锁粒度、分区、舱壁、背压 |
| C4 业务实质 | 对账差、客诉、资损阈值过了吗? | 「理论上可行」收尾 | 压测数字、降级开关演练结果 |
flowchart LR
C1[C1 业务本质] --> C2[C2 技术实现]
C2 --> C3[C3 技术原理]
C3 --> C4[C4 业务实质]
C4 -->|跑偏则回钉| C1
HC[峰值·热点·削峰·降级] -.贯穿.-> C1
HC -.贯穿.-> C2
HC -.贯穿.-> C3
HC -.贯穿.-> C4
我的反思与思考
我的反思与思考
S-Tone本册加厚写法:人话 → 掀底板 → 落地 → 回扣业务
写法
flowchart LR
人话-->底板-->落地-->回扣
水的特征
flowchart TD
Dir[目录感]-->ShortCase[一行案例]-->NoFloor[无源码路径]
挂回:S-C4 四段 → 本约束 → 各极致章
| 段落 | 必须有 | 禁止 |
|---|---|---|
| 人话引入 | 比喻或真实场景 | 空泛定义段 |
| 掀底板 | 结构/协议 + 关键类/路径 + 线上现象 + 验证指标 | 只写「注意线程安全」 |
| 今天落地 | 配置/SQL/清单/状态机 | 「原则上应该」 |
| 业务实质 | 挂买成/退成验收 | 离开订单谈中间件 |
S-DDD-XDDD · 设计模式 · 架构思维(落到订单/售后)
服务业务闭环:B-F 结算履约 · B-R 售后
挂回:S2 → 本页 → #s-ddd-agg / S-MS-X / B-X
| 子章 | 锚点 |
|---|---|
| 聚合根:唯一性 · 加载 · 一致性 | #s-ddd-agg |
| 聚合 / 限界上下文怎么切 | #s-ddd-x-bc |
| 防腐层 · 领域事件 · 应用服务 | #s-ddd-x-acl |
| 模式对照真实需求 | #s-ddd-x-patterns |
| 架构权衡与模块化 vs 微服务 | #s-ddd-x-arch |
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:规则周更,成交口径要冻结;大促连点不能双单。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:优惠上下文外置规则;订单聚合内折扣快照;orderNo+clientToken 唯一;支付最小图加载。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:售后 UPDATE 历史规则行;详情把轨迹 join 进写模型;先查后插。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 快照只读 2) 唯一索引+幂等 3) CQRS 详情 4) 见 #s-ddd-agg 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:退款可解释;双单=0(示意)。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:账户并发借贷与日终平账。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:账户聚合强一致+version;跨户凭证;账号业务键与技术主键分离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:跨户长事务死锁;缓存余额当账本。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 短事务 2) 凭证异步 3) 日终三方对账 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:日终平;无双花(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:运单状态唯一推进,轨迹高并发乱序。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:运单聚合+轨迹上下文;waybillNo 唯一;轨迹 seq upsert。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:轨迹塞进运单集合每次加载;无唯一键重复运单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆轨迹 2) 强制运单号 3) 读模型 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:展示可校正;状态无脏回退(示意)。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:高峰店维度热点,订单与门店主数据分离。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:门店/订单上下文分离;店维度分区/限流;订单业务键唯一。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央库硬锁门店行;大聚合加载出餐队列。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维拆分 2) 出餐读模型 3) 高峰降级非核心 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:午高峰可扩、取消可解释(示意)。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
订单域上下文地图
flowchart TB
Promo[优惠]-->Snap[快照进订单]
Order[订单]-->Stock[库存预占事件]
Order-->Pay[支付]
Pay-->OMS[履约]
AS[售后]-->Snap
AS-->Refund[退款]
聚合事务边界
flowchart LR
Cmd[命令]-->AR[聚合根校验]
AR-->DB[(本上下文库)]
AR-->OB[Outbox事件]
OB-->Other[其他上下文]
我的反思与思考
S-DDD-AGG聚合根:唯一性 · 加载 · 一致性(生产级)
服务业务闭环:B-F 下单支付 · B-R 售后寄修 · 对账幂等
挂回:S-DDD-X hub → 本页 → #s-ddd-x-bc / B-X
高并发贯穿:峰值双写+热点聚合行是资损与超时双重雷区。
A. 唯一性如何保证(多层)
| 层 | 保证什么 | 订单域例子 | 失败时人话 |
|---|---|---|---|
| 业务唯一键 | 业务语义「同一笔意图只成功一次」 | 订单号 orderNo、售后单号、支付意图号 payIntentNo、客户端 idempotency-key | 技术自增 ID 永远涨,但业务上仍可能开两张「同购物车提交」 |
| 技术主键 | 行定位 / 分片路由 | 雪花/号段 id;与业务键分离 | 别拿自增当业务单号对外暴露(泄漏量级+难迁) |
| DB 约束 | 跨进程最终防线 | UNIQUE(order_no)、UNIQUE(user_id, client_token)、幂等表 UNIQUE(biz_type, biz_key) | 应用「先查后插」在并发下必穿;唯一索引冲突才是权威 |
| 并发控制 | 同聚合更新不丢改/不双改 | 乐观锁 version;热点行悲观 SELECT … FOR UPDATE | 两个退款线程都读到可退→双退 |
| 分布式发号 | 全局或分片内不撞号 | 号段(美团 Leaf 取向)、雪花、DB 步长;分片内唯一+映射表 | 多机 UUID 能唯一但不适合当作有序业务单号/索引友好键 |
底板结构/算法/协议:不变式例:①同一 clientToken 仅一单;②订单实付=行合计−分摊(分内);③状态仅允许迁移表边;④支付成功后不可直接删行。强制点:create(工厂校验+落唯一键)→ load(完整性,行缺失即损坏)→ command(方法内校验+version)→ save(唯一冲突/版本冲突翻译成领域错误)。
源码/实现路径(认知级):示意路径:CreateOrderAppService → OrderAgg.create(cmd) → OrderRepository.save → 捕获 DuplicateKeyException → 查已存在聚合返回「幂等成功」而非 500。RefundAppService → repo.loadForUpdate(id) → agg.applyRefund → UPDATE … SET version=version+1 WHERE version=?。
订单/售后线上怎么露馅:连点下单:两请求同时通过「先查无单」→ 无唯一索引则双单;有唯一索引则一成功一冲突转幂等。售后双点:无 version 则双退款单。
排查时看什么能验证你懂了底板:看:唯一键冲突 QPS(应为幂等命中)、version 冲突率、重复支付/重复退款监控=0、对账「同 client_token 多单」日终=0。
OrderAgg.create / Repository.save(冲突处理伪代码)
// 领域:只认业务键与不变式
public static OrderAgg create(CreateOrderCmd c) {
Objects.requireNonNull(c.clientToken());
if (c.lines().isEmpty()) throw new DomainEx("EMPTY_LINES");
Money pay = Lines.total(c.lines()).minus(c.discountSnapshot());
return new OrderAgg(OrderNo.of(c.orderNo()), c.clientToken(), c.lines(),
pay, Status.CREATED, 0L);
}
// 应用+仓储:DB 唯一约束是跨请求唯一的真理
@Transactional
public OrderId create(CreateOrderCmd c) {
OrderAgg agg = OrderAgg.create(c);
try {
return orderRepo.insert(agg); // INSERT orders + items + discount_snapshot + outbox
} catch (DuplicateKeyException dup) {
OrderAgg existed = orderRepo.mustFindByClientToken(c.userId(), c.clientToken());
return existed.id(); // 幂等:返回原单,不开第二张
}
}
// 命令更新:乐观锁
public void pay(OrderId id, PayCmd cmd) {
OrderAgg agg = orderRepo.load(id); // 最小图:头+支付意图+必要行
agg.markPaid(cmd.tradeNo()); // 内含状态迁移守卫
int n = orderRepo.saveWithVersion(agg); // UPDATE ... WHERE version=?
if (n == 0) throw new ConflictEx("ORDER_VERSION"); // 让上层重试或409
}
并发:同聚合乐观/悲观;跨请求仍唯一
- 同聚合多命令:默认乐观锁 version;冲突率高的热点(秒杀库存行)再悲观或改成分段库存,不把整单 FOR UPDATE 包 HTTP。
- 跨请求唯一:两台机器各建一单——内存锁无效;必须落
UNIQUE或幂等表 insert。 - 防重 token:网关/接口
Idempotency-Key→ 幂等表(处理中/成功/失败+响应摘要)→ 聚合业务键双保险。
分布式发号:全局唯一 vs 分片唯一
| 方案 | 特点 | 坑 | 订单域建议 |
|---|---|---|---|
| 号段(Leaf-segment 取向) | 吞吐高、可含业务前缀 | 号段丢失造成号洞(可接受);中心依赖 | 业务单号常用 |
| 雪花 | 本地发号、趋势递增 | 时钟回拨;workerId 管理 | 技术主键 / 部分单号 |
| 分片内唯一+全局映射 | 片内自增快 | 跨片查询要映射 | 分库后订单号仍建议全局发号器 |
| UUID | 易唯一 | 索引页分裂、难读 | 作关联 token,慎作聚簇主键 |
flowchart TD
A[请求A clientToken=T1] --> CA[OrderAgg.create]
B[请求B clientToken=T1] --> CB[OrderAgg.create]
CA --> IA[INSERT orders]
CB --> IB[INSERT orders]
IA -->|成功| OK[返回订单号]
IB -->|UNIQUE冲突| DUP[DuplicateKey]
DUP --> LOAD[按 token 加载已存在聚合]
LOAD --> IDEM[幂等返回同一订单号]
OK --> OUT[同事务 Outbox]
IDEM --> SKIP[不再发第二条创建事件]
B. 加载为什么慢 · 如何保证性能与正确
| 慢因 | 人话 | 正确做法 |
|---|---|---|
| 大聚合 | 把「用户一生订单」塞进一个根 | 按一致性边界切:一单一根;历史列表走读模型 |
| N+1 | 头一行循环查行/券/轨迹 | 仓储一次 SQL/IN 批量;或明确的两段查询 |
| 行项目过多 | B2B 上千行一次 hydrate | 命令只需改部分行时按行 ID 子集加载;汇总字段冗余在头 |
| 快照过大 | 优惠/报关 XML 塞聚合每次加载 | 大对象外置对象存储,聚合只持引用+哈希 |
| 懒加载陷阱 | JPA 出了事务再碰 collection → 爆炸或 N+1 | DDD 仓储显式 reconstitution;禁 Open Session In View 当设计 |
| 一次加载历史售后 | 订单详情把 3 年售后单 join 进来 | 售后是另一聚合;详情页 CQRS 读模型拼装 |
底板结构/算法/协议:命令要什么就加载什么:loadForPay(orderId)→头+支付意图+状态+version;loadForRefund→头+分摊快照+可退行。禁止 findById 默认 fetch join 全世界。轨迹/评论/客服备注/物流细节点不进写侧聚合。
源码/实现路径(认知级):仓储接口按用例:OrderRepository.loadForCommand(OrderId, LoadGraph);实现用显式 SQL/MyBatis,不靠魔法懒加载。快照 vs 事件溯源:中厂默认状态快照+领域事件出站;事件溯源仅在审计极强且团队熟时用——坑是重放版本漂移、快照滞后、运维复杂。
订单/售后线上怎么露馅:客服开详情:ORM 把 order_items+after_sales+tracks 全拉 → RT 3s+;大促支付标已付却因加载慢超时重试 → 靠幂等救命。
排查时看什么能验证你懂了底板:看:慢 SQL(rows examined)、聚合加载 P99、一次 load 行数直方图、OSIV 开关、是否在事务外触懒加载异常。
缓存聚合?一般不要;缓存读模型
- 写侧聚合:缓存易脏(多实例改 version)、穿透一致性难;默认不缓存,靠主键点查+连接池。
- 读模型:订单列表/详情卡可缓存;失效用订单号维度删除;允许短暂旧读,付后关键态读主。
拆分过大聚合的信号与步骤
- 信号:单聚合表>5 且常一起锁;加载 P99>200ms;无关用例互相阻塞;团队争议「改优惠却要锁订单整图」。
- 步骤:标出不变式集合→切开只需最终一致的部分(轨迹/评论/售后)→引用改 ID→补对账/事件→压测对比加载行数。
- 慢日志:
long_query_time;抓到 SQL 做EXPLAIN(type/rows/Extra)。 - 是否 select * + 大 JSON;是否无 order_id 索引;是否深分页。
- 应用:一次命令加载实体数;N+1 计数(datasource-proxy / p6spy)。
- 是否 OSIV;是否详情接口误走写侧仓储。
- 治理:加读模型接口;缩 LoadGraph;大字段外置;必要时拆聚合。
flowchart TB
subgraph Bad[坏的加载]
B1[详情/支付同一 findById] --> B2[join 行+售后+轨迹+评论]
B2 --> B3[事务长 + P99爆]
end
subgraph Good[好的加载]
G1[PayCmd] --> G2[loadForPay 最小图]
G3[客服详情] --> G4[CQRS 读模型拼装]
G5[售后命令] --> G6[AfterSale 聚合独立加载]
end
C. 跨行业案例(场景·选型·坑·步骤·量级)
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:大促连点下单 + 支付回调并发;客服详情要看轨迹但不该拖垮支付标已付。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:业务键 orderNo+clientToken 唯一索引;支付命令最小图;详情走读模型;version 乐观锁。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先查后插无唯一索引→双单;JPA 默认懒加载把售后集合带进支付事务。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 幂等表+唯一索引 2) LoadGraph 分用例 3) OSIV 关闭 4) 压测连点与回调重放 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:连点双单=0;支付命令 P99 回到百 ms 级(示意,非某厂未公开 KPI)。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:同账户借贷并发;跨户转账不能一个聚合锁两户到超时。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:账户聚合强一致+凭证;跨户用记账凭证/Saga;技术主键与账号分离;日终对账。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:长事务锁两账户→死锁;用缓存账户余额当账本。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 单户命令短事务 2) 跨户异步凭证 3) 余额以分户账为准 4) 日终三方平 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:日终平账;热点户冲突可重试且无双花(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:运单状态唯一推进;轨迹点海量、乱序到达。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:运单聚合只持状态/版本;轨迹独立写入+序号 upsert;运单号全局唯一。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:轨迹当聚合内集合每次加载→RT 崩;无运单号唯一→重复运单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 运单/轨迹拆分 2) waybillNo 唯一 3) 轨迹按 seq 校正 4) 读模型展示 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:轨迹乱序可校正;运单状态无回退脏写(示意)。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:用户连点申请;寄修∥换新并行时库存与状态不能双开冲突单。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:售后单号唯一+(orderId,type,sku)条件唯一;售后聚合独立;换新预占另一事务。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:把历史寄修记录塞进订单聚合;无唯一键双售后单双退。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 售后独立聚合 2) 防重 token 3) 并行策略表 4) 质检回执驱动分支 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:重复申请幂等;并行资损单=0(示意)。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
D. 详答题(唯一性与加载)
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
- 钉 钉:双单=0、双退=0、支付命令 P99、加载行数上限。
- 拆 拆:主=create/pay/refund 最小图;异=冲突重试;逆=售后独立聚合。
- 标 标:先查后插、大聚合、缓存写侧、OSIV。
- 选 选:业务键唯一+version+按命令加载;读走 CQRS。
- 验 验:连点/重放压测、EXPLAIN、差账、慢 SQL 清零。
- 用「先查后插」代替唯一索引
- 支付命令 fetch join 售后/轨迹
- 缓存写侧聚合当真理
- 把用户历史订单做成一个聚合根
我的反思与思考
S-DDD-X聚合 / 限界上下文:订单·优惠·库存·履约·售后
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 业务唯一键落点表可作索引
- 缺更多冲突演练剧本与真实慢 SQL 样例
- 加载最小图细节以 #s-ddd-agg 为准,本节勿单独背完
底板结构/算法/协议:每个上下文一张「写权威表」;订单聚合持单头+行+优惠成交快照+支付意图;库存/售后/轨迹不进订单写事务。跨上下文只传 ID+事件。唯一键落在写权威库,不靠他库 join 判重。
源码/实现路径(认知级):包结构 domain.order / domain.aftersale;仓储接口按聚合;禁止他包 Mapper 写订单表。加载:订单命令不 load 售后集合。
订单/售后线上怎么露馅:售后服务直写 orders.discount → 历史退款口径被改;详情 join 五库 → 慢与脏。
排查时看什么能验证你懂了底板:看:跨库事务数、写权威违规 MR 扫描、订单命令 SQL 表集合。
唯一键落点(按上下文)
flowchart TB
Ord[订单库 UNIQUE order_no/client_token]
Pay[支付库 UNIQUE pay_intent_no]
AS[售后库 UNIQUE after_sale_no]
Inv[库存库 UNIQUE reserve_no]
Ord -.事件.-> Inv
Pay -.回调幂等.-> Ord
AS -.读快照.-> Ord
加载边界
flowchart LR
Cmd[命令]-->Min[最小聚合图]
Query[客服查询]-->RM[读模型]
Min-->DB[(写库点查)]
RM-->RO[(RO/ES/宽表)]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:优惠周更 vs 下单要快照。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:规则上下文试算;成交快照进订单聚合;快照只读。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:售后改 promo_rule 行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 快照落库 2) 退款只读快照 3) 规则热更不影响历史 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:退款可解释;规则发布不改历史单(示意)。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:分户与凭证。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:账户聚合内强一致;跨户凭证异步。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:跨户长事务。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 单户短事务 2) 凭证 3) 日终平 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:日终平(示意)。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:运单 vs 轨迹。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:运单聚合状态;轨迹上下文事件写入。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:轨迹反写打乱状态。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 状态机守卫 2) 轨迹 upsert 3) 读模型展示 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:状态单调可校正(示意)。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:订单与售后拆分。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:售后聚合+订单快照引用。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:售后挂订单集合懒加载。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 独立单号 2) 独立加载 3) 事件回补库存 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:售后洪峰不拖支付(示意)。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
- 本周交付:五上下文写权威表 + 每表业务唯一键清单。
- 订单仓储拆
loadForPay/loadForRefund,禁万能getOrderDetail上写路径。 - 连点与回调重放压测各 1 条用例进 CI。
高并发贯穿:峰值下同步双写最容易资损。
flowchart LR
subgraph OrderCtx[订单上下文]
Ord[Order聚合]
end
subgraph PromoCtx[优惠上下文]
Rule[规则/试算]
end
subgraph InvCtx[库存上下文]
Res[预占/扣减]
end
subgraph FulfillCtx[履约上下文]
OMS[履约单]
end
subgraph ASCtx[售后上下文]
AS[售后单]
end
Rule -->|快照结果| Ord
Ord -->|预占意图事件| Res
Ord -->|支付成功事件| OMS
AS -->|读快照/回补事件| Ord
AS --> Res
| 上下文 | 写权威表(例) | 业务唯一键 | 别的上下文只能 | 今天代码怎么约束 |
|---|---|---|---|---|
| 订单 | orders, order_item, discount_snapshot | order_no / (user_id, client_token) | 读快照 / 发事件 | 包 order 外禁止写 mapper |
| 优惠 | promo_rule, coupon | rule_id+version | RPC 试算返回 DTO | 规则热更不影响历史快照 |
| 库存 | sku_stock, stock_reserve | reserve_no | 收事件确认/释放 | 无订单库账号 |
| 履约 | fulfillment_order | fulfillment_no / order_no | 收支付成功 | Inbox 去重 |
| 售后 | after_sale, refund | after_sale_no / refund_no | 读订单快照 | 回退分摊写售后侧表 |
- 新建包:
domain.order/domain.stock…;跨包只依赖接口或事件 DTO。 - 下单事务:写订单+快照+outbox,不写库存表;clientToken 唯一索引。
- 评审检查:有没有跨服务 join、有没有售后改历史规则、写路径是否万能大 join。
- 必读:#s-ddd-agg 唯一性多层与加载最小图。
我的反思与思考
我的反思与思考
S-DDD-X防腐层 · 领域事件 · 应用服务(今天怎么写)
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 调用链骨架在
- 缺多渠道 ACL 对照表深度
- Outbox 与聚合协作细节分散在他节
ACL翻译
flowchart LR
Carrier[承运商状态码]-->ACL[物流ACL]
ACL-->Enum[内部IN_TRANSIT/SIGNED]
Enum-->AS[售后聚合]
应用服务事务
flowchart TD
App[AppService@Transactional]-->Agg[聚合方法]
Agg-->Repo[save]
Repo-->OB[Outbox同事务]
OB-->MQ
底板结构/算法/协议:外部模型不得渗入领域枚举;Outbox 与业务同事务。
源码/实现路径(认知级):XxxAcl.translate;OutboxRepository.insert。
订单/售后线上怎么露馅:渠道改码全库脏;先发MQ再写库丢事件。
排查时看什么能验证你懂了底板:看上帝类、事务边界、ACL 单测。
跨行业/跨场景落地(案例归纳)
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:状态码杂。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:ACL 枚举。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:直写第三方码。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 翻译表 2) 版本 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:改承运商不炸库。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:报文方言。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:ACL+校验。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:领域吞 XML。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 防腐 2) 金样例 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:解析失败可审计。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:多渠道。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:模板方法+ACL。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:每渠道复制。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 抽公共幂等 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:漏幂等=0。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:门店态。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:ACL 到内部态。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:字符串飘。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 枚举 2) 守卫 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:乱态=0。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
底板结构/算法/协议:Controller→ApplicationService(事务边界)→聚合根方法(不变性)→仓储保存→同一事务写 Outbox。领域事件可进程内先应用到聚合,再落库发出。
源码/实现路径(认知级):典型类:RefundAppService.apply → AfterSale.approve → AfterSaleRepository.save → OutboxRepository.insert。禁在 Controller 直接改三张表。
订单/售后线上怎么露馅:物流回传状态码直接写进售后枚举→承运商一改你全库脏。ACL 译成内部 IN_TRANSIT/SIGNED。
排查时看什么能验证你懂了底板:看:是否存在「上帝 Service」三千行;Outbox 与业务是否同事务(抽查事务日志/代码)。
应用服务骨架(示意)
@Transactional
public void onPaid(PaidCmd cmd) {
Order order = orderRepo.lockById(cmd.orderId());
order.markPaid(cmd.tradeNo()); // 聚合内校验状态
orderRepo.save(order);
outbox.save(OrderPaidEvent.of(order)); // 同事务
}
- 物流/支付渠道包一层
XxxAcl,对外只暴露内部枚举。 - 写路径事件:先表后发(Outbox),别先发 MQ 再写库。
- 应用服务按用例命名:
CreateOrder/ApplyRefund,别OrderManager。
我的反思与思考
S-DDD-X策略 / 责任链 / 状态 / 工厂 / 模板 / 观察者——对照需求
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 模式↔需求对照表可用
- 缺生产代码级策略注册/FSM 全表
- 并行寄修细节挂 B-X,勿当已完工
模式挂变更点
flowchart TB
Change[需求变更点]-->S{类型}
S -->|算法可替换| Strat[策略]
S -->|流水线校验| Chain[责任链]
S -->|态迁移| FSM[状态]
S -->|创建分支| Fact[工厂]
S -->|流程骨架| Tpl[模板]
S -->|副作用通知| Evt[事件]
售后状态守卫
flowchart LR
From[状态]-->Allow{允许表}
Allow -->|否| Reject
Allow -->|是| To[新状态+事件]
底板结构/算法/协议:无变更点勿套娃。
源码/实现路径(认知级):DiscountStrategy;AfterSaleFSM;AbstractPayCallback。
订单/售后线上怎么露馅:巨型 if;跳态退款。
排查时看什么能验证你懂了底板:看迁移表覆盖率、策略单测。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:互斥算法常变。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:策略。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:巨 if。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 接口 2) 配置选择 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:发版只加类。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:并行。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:类型状态机/子单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:布尔旗飞。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆 2) 策略表 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:并行可解释。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:多渠道。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:模板方法。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:复制漏幂等。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 抽公共 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:漏幂等=0。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:顺序可配。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:责任链。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:散落 Controller。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链 2) 短路 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:漏限购=0。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
| 模式 | 真实需求(订单域) | 今天怎么改代码 | 若不用会怎样 |
|---|---|---|---|
| 策略 | 满减/折扣/券互斥算法可替换 | DiscountStrategy 接口+按 type 选实现;试算入口只调接口 | 巨大 if-else,大促改规则易发错版 |
| 责任链 | 下单校验:库存→风控→限购→优惠 | Checker 链,失败短路;可配置顺序 | 校验散落控制器,漏限购 |
| 状态 | 售后:待审→寄回→质检→退款 | 枚举+允许迁移表/AfterSaleFSM;非法迁移抛错 | 任意 UPDATE 状态→跳态资损 |
| 工厂 | 创建售后单(仅退款/退货/寄修)不同类型 | AfterSaleFactory.create(type, cmd) 填初始状态与必填项 | 构造函数爆炸、漏字段 |
| 模板方法 | 支付回调:验签→幂等→改态→发事件 | 抽象 AbstractPayCallback,渠道子类只实现验签/解析 | 每渠道复制粘贴漏幂等 |
| 观察者/事件 | 支付成功通知 OMS、积分、短信 | Outbox 事件;听者各自幂等 | 支付服务同步调五方,雪崩 |
- 本周只落地两件:① 售后状态迁移表 ② 支付回调模板方法抽公共幂等。
- 优惠策略:新活动加类,不改老策略类。
- 代码评审勾选:有没有「模式套娃」无需求?有则删。
状态迁移守卫(示意)
boolean canTransit(Status from, Status to) {
return ALLOWED.getOrDefault(from, Set.of()).contains(to);
}
// APPROVED 只能走向 WAIT_BUYER_SHIP 或 REFUNDING,不能直接 REFUNDED 跳质检
我的反思与思考
我的反思与思考
S-DDD-X架构思维:权衡表 · 模块化单体 vs 微服务
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 权衡维度表可用
- 缺完整 ADR 范文与团队编制算账
- 勿把「先边界后进程」当已落地清单
先边界后进程
flowchart TD
Inv[不变式/写权威]-->Mod[模块化单体]
Mod -->|资损异变| Split[按资损拆服务]
Split --> OB[Outbox/幂等必备]
假微服务
flowchart LR
Dir[按目录拆]-->Shared[(共享库双写)]
Shared-->Fail[事故高]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:8人团队。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:模块化+包边界。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:一周拆20服务。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) ADR 2) 里程碑 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:交付周期不恶化。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:营销/拼团/秒杀(用户、预算账户、库存预占)。业务焦点:秒杀。峰值/约束:开团瞬时;名额临界并发;补贴预算闸门。验收:名额不超发;FAIL 必退;补贴账可对;超卖=0。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:库存独立扩。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:共享库假拆。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:超员成团、双退/漏退、补贴资损。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 真正数据归属 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:峰值可扩。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:合规隔离。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:支付进程隔离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:与营销共库。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 库账号隔离 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:审计过。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:店维热点。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:店维分区模块。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分区 2) 限流 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:高峰稳。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
权衡维度(拍板用)
| 维度 | 问什么 | 订单域例子 |
|---|---|---|
| 一致性 | 能否最终一致?窗口多大? | 支付→OMS 秒级可接受 |
| 延迟 | 用户同步等待哪些? | 试算<100ms;OMS 异步 |
| 吞吐/热点 | 哪张表/哪个 SKU 热点? | 库存独立扩展 |
| 团队 | 几人维护?有无平台组? | 8 人慎细拆 |
| 故障面 | 挂了伤支付还是伤推荐? | 支付链路独立池/进程 |
| 变更频率 | 谁周周发、谁稳定? | 优惠规则 vs 支付 |
| 合规 | 数据能否共库? | 部分渠道密钥隔离 |
进程形态
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 模块化单体+包边界 | 同库事务简单 | 扩展一体 | 低运维 | 中厂默认 |
| 按资损边界拆 4–6 服务 | 最终一致+对账 | 可独立扩 | 中 | 库存/支付异变时 |
| 按目录硬拆+共享库 | 假微服务 | 事故高 | 高 | 禁止 |
- 钉 先边界后进程;拆分写 ADR。
- 拆 主:买成退成闭环;异:峰值;逆:售后。
- 标 服务个数 KPI、共享库双写。
- 选 维度表打分;默认模块化。
- 验 跨服务事务数、故障率、交付周期。
- 无 Outbox/幂等就拆支付与订单
- 为简历上微服务拆分
- 模式堆砌无变更点
DDD/模式落地清单
- 画出 5 上下文写权威表与业务唯一键
- 下单事务不含库存写;clientToken 唯一
- 写路径最小图加载(见 #s-ddd-agg)
- 售后状态允许迁移表代码化
- 支付回调模板方法+幂等
- 物流 ACL 已落地
- 模块化 vs 拆分 ADR 一份
我的反思与思考
我的反思与思考
S-Mgmt-X管理思维:排期 · 瀑布/敏捷 · 联调 UAT · 上线窗口
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 排期/阶段门可用
- 缺完整故事拆卡范文库
- 财务门禁要写进你们 DoD
底板结构/算法/协议:故事含表/消息/开关/监控/回滚;财务口径变更有门禁。
源码/实现路径(认知级):六格拆卡;UAT 对验收句。
订单/售后线上怎么露馅:大促当天改退款口径。
排查时看什么能验证你懂了底板:错退率、演练记录。
可演示切片
flowchart LR
Epic-->Story-->Demo-->UAT
爆炸半径
flowchart TD
Big[不可逆]-->Gate[阶段门]
Small-->Agile
服务业务闭环:优惠/支付/售后需求交付
挂回:S2 需求模板 → 本页 → S-Year 周仪式
高并发贯穿:大促窗口前冻非必要变更。
排期与任务拆分(可交付粒度)
| 层级 | 例子(售后退款优化) | 完成定义 DoD |
|---|---|---|
| 史诗 | 售后重复退防护 | 错退率、监控、回滚方案齐 |
| 用户故事 | 作为客服,重复点退款不会打出第二笔 | UAT 用例通过 |
| 技术任务 | 退款单唯一键+状态机守卫+渠道查单工具 | 代码+单测+预发演练 |
| 穿插任务 | 对账 SQL、看板、Runbook、开关 | 值班能按文操作 |
- 每个故事必须能「预发点一点演示」;纯技术债挂到故事验收句下。
- 拆卡模板:接口/表结构/消息/开关/监控/回滚 六格,缺一不开工。
- 联调日写死在排期,不写「有空再联」。
瀑布 vs 敏捷:什么需求走哪条
| 需求类型 | 更像 | 为何 | 落地节奏 |
|---|---|---|---|
| 交易核心小变更(文案/阈值/兼容修复) | 小步敏捷+强验收 | 反馈快、爆炸半径可控 | 周迭代;金丝雀;验收句对监控 |
| 退款口径/分摊算法变更 | 敏捷但门禁加码 | 资损敏感 | 双周可;强制对账用例+财务点头 |
| 换支付渠道 / 拆库 / 大重构 | 阶段门≈瀑布阶段 | 依赖多、不可逆点多 | 设计冻结→迁移脚本→双轨→切流→清残 |
| 纯展示/运营配置 | 敏捷 | 可回滚 | 短迭代 |
同一「售后备注 AI 草稿」不同排期
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 1 周 MVP:只读查单+侧栏草稿+HITL | 快验证 | 无自动 | 低 | 推荐先做 |
| 3 周:+评测集+审计+知识版本 | 可上岗 | 中 | 中 | 试点客服组 |
| 8 周:+多智能体+自动退 | 看似完整 | 资损/合规风险 | 高 | 拆阶段门,自动退单独立项 |
风险 · 依赖 · 联调 · UAT · 上线窗口
| 项 | 今天怎么做 | 对齐谁 |
|---|---|---|
| 风险 | 列出资损/不可逆/第三方;每条有缓解与负责人 | 业务+研发 |
| 依赖 | 渠道沙箱账号、OMS 环境、开关平台——进排期关键路径 | 对方系统 owner |
| 联调 | 契约(字段/错误码/幂等)先签;联调日打桩备用 | 测试+对方 |
| UAT | 用例=验收句翻译;含异常:重复回调、超时、部分退 | 业务签字 |
| 上线窗口 | 避开日终对账;大促冻结;回滚人在线 | 值班表 |
- 变更列表与风险一条条念。
- 确认开关默认值、金丝雀比例、观察指标。
- 回滚指挥官+财务/业务联络人。
- UAT 签字截图进发布单。
- 上线后 30/120 分钟观察点闹钟。
管理向交付清单
- 故事有演示与 DoD
- 技术卡含监控/回滚/对账
- 瀑布阶段门类需求有书面阶段
- 联调契约已贴群
- UAT 含重复支付/退款用例
- 上线窗口与回滚人已定
- 钉 验收句先钉再排期。
- 拆 主路径/异常/对账/回滚分拆。
- 标 联调依赖、资损、窗口。
- 选 小步敏捷或阶段门按表选。
- 验 UAT+观察项+复盘。
故事拆到可演示
flowchart LR
Epic[史诗]-->Story[用户故事]
Story-->Tech[技术卡:表/消息/开关/监控/回滚]
Tech-->Demo[预发可点]
Demo-->UAT[验收句]
阶段门 vs 小步
flowchart TD
Req{爆炸半径/不可逆?}
Req -->|小| Agile[周迭代+金丝雀]
Req -->|大| Gate[设计冻结→迁移→双轨→切流]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:分摊算法改。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:敏捷+财务门禁+对账用例。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当普通文案周更。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 钉验收与幂等键;2) 落地最小配置与索引;3) 故障演练与回放;4) 监控/对账进值班。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:错退率不升。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:支付通道。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:阶段门+演练。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:敏捷天天切。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 钉验收与幂等键;2) 落地最小配置与索引;3) 故障演练与回放;4) 监控/对账进值班。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:窗口内 RTO 达标。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:多仓路由。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:阶段门+双轨。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:现场改键。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 钉验收与幂等键;2) 落地最小配置与索引;3) 故障演练与回放;4) 监控/对账进值班。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:短拣补偿不回退。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消规则。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:小步+开关。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:大促当天全量。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 钉验收与幂等键;2) 落地最小配置与索引;3) 故障演练与回放;4) 监控/对账进值班。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:餐损可解释。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
- 联调写「有空再联」。
- 故事无可演示切片。
- 监控/回滚不进 DoD。
- 大促窗改退款口径全量。
我的反思与思考
我的反思与思考
我的反思与思考
S2+四维结合设计:模式 × 架构 × 业务 × 并发
挂回:S2 → 本页 → B 域 / S-MS
四维怎么绑在一起(读法)
| 维度 | 你要回答的问题 | 交付物(可带走) |
|---|---|---|
| ① 设计模式 | 变化点在哪?谁替换谁? | 类图/包结构:Strategy / Chain / State / Template / ACL / Gateway |
| ② 架构思想 | 边界怎么切?一致到什么程度? | 分层/六边形、CQRS、EDA、舱壁、韧性矩阵、一致性选型表 |
| ③ 业务深度 | 真实链路、状态、资损、审计 | 状态机、对账点、合规触点、降级开关清单 |
| ④ 并发常问 | 热点、可见性、池、消息并发 | 锁粒度/CAS/幂等键/分区键设计 + 压测数字直觉 |
flowchart TB
Biz[业务链路与资损点] --> Pat[设计模式落地]
Biz --> Arch[架构边界与一致性]
Biz --> Conc[并发热点与韧性]
Pat --> Code[包/类/接口结构]
Arch --> Runtime[部署/队列/缓存/限流]
Conc --> Runtime
Code --> Story[面试口述:一案讲透四维]
Runtime --> Story
模式 ↔ 代码结构 ↔ 业务对象(速记)
| 模式 | 代码结构直觉 | 业务对象例子 |
|---|---|---|
| 策略 Strategy | XxxStrategy 接口 + 多实现 + 工厂/Spring Map 注入 | 计价、渠道路由、优惠互斥规则 |
| 模板 Template Method | 抽象流程 execute(),钩子可覆盖 | 支付回调:验签→幂等→入账→通知 |
| 责任链 Chain | 有序 Handler 列表,可短路 | 下单校验、同步风控、参数/库存/限额 |
| 状态 State / 状态机 | 合法迁移表 + 非法拒绝打点 | 订单/售后/运单/支付单 |
| 领域事件 + Outbox | 聚合内抬事件,同事务落 outbox | OrderPaid、StockReserved |
| 防腐层 ACL | 对外 DTO→对内模型翻译 | 三方物流/银行/清关回执 |
| 网关 Gateway / 门面 | 聚合外部调用与超时舱壁 | PaymentGateway、WmsGateway |
架构思想检查清单(每个案例都要过一遍)
- 分层 / 六边形:领域不依赖框架;端口进、适配器出。
- CQRS(克制):写模型保不变量;复杂查询走宽表/ES,接受短暂延迟。
- 事件驱动:跨限界上下文用事件,别远程双写。
- 舱壁:线程池/连接池/限流按关键路径隔离。
- 幂等即契约:所有「至少一次」入口(回调/MQ/重试)先定幂等键。
- 韧性:超时预算 → 有限重试 → 熔断 → 降级 → 对账补偿。
- 一致性选择:本地事务 > Outbox 最终一致 > TCC;写清权威源与对账 SLO。
我的反思与思考
S2+对照矩阵:业务场景 × 设计模式 × 架构选型 × 并发考点
挂回:S1 问题域 → 本矩阵 → B/V1
| 业务场景 | 设计模式(常用) | 架构选型(公开常见套路) | 并发考点(必问) |
|---|---|---|---|
| 大促 / 秒杀 | 策略(活动规则)、责任链(校验)、门面(下单入口) | 动静分离、多级缓存、队列削峰、统一限流降级、热点隔离 | 热点 Key、库存超卖、Lua/CAS、线程池隔离、缓存击穿 |
| 外卖 / 闪购高峰 | 状态机(订单)、策略(调度/ETA)、舱壁线程池 | 核心链路优先、超时熔断、降级非核心、灰度发布 | 峰值 QPS、慢依赖拖垮、半开熔断、队列堆积 |
| 支付 / 账务 | 模板方法(回调)、状态机、Outbox 事件 | 本地消息表/事务消息、日终对账、幂等契约 | 回调重复、可见性、热点账户、金额精度 |
| 银行账户记账 | 策略(记账规则)、状态(冲正)、命令模式(记账指令) | 分户/分片、借贷平衡、日终批次、审计流水 | 余额热点行锁、乐观锁版本、冲正并发、日切窗口 |
| 风控决策 | 责任链、策略(规则集)、装饰器(名单增强) | 同步短链路 + 异步补判、规则引擎、特征缓存 | 规则耗时、线程池、缓存穿透、降级默认策略 |
| OMS 订单 | 状态机、策略(拆合单)、领域事件 | 聚合根订单、库存预占、与支付/WMS 集成 | 状态乱序、预占超卖、取消竞态、消息重复 |
| 下单 + 物流 | ACL(承运商)、观察者/事件、状态机(运单) | 下单核心同步、履约异步、轨迹最终一致 | 创单并发、运单回调乱序、仓配协同延迟 |
| 优惠券 / 红包 | 策略(核销)、状态、唯一约束作底线 | 预发库存、核销幂等、超发对账 | 超发、重复核销、热点券批次 |
| 跨境电商 | 策略(税费/币种)、ACL(清关)、状态机 | 多仓路由、汇率锁定、清关异步状态 | 多仓库存、汇率并发读、清关回执乱序 |
| 长链路查询 | 装饰器(缓存层)、网关聚合 | Cache-Aside、多级缓存、CQRS 读模型 | 穿透/击穿/雪崩、单飞、大 Key |
| 中厂 MVP 裁剪 | 宁可模板+状态机,少微服务 | 模块化单体、Redis+MQ、网关限流、日终对账 | 连接池、慢 SQL、回调幂等、发布回滚 |
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
S2+拒绝技术拼凑:需求 → 约束 → 方案 → 验收
挂回:S2 模板 → 本宣言 → B-主线填空
| 反模式(禁止) | 正模式(本书) |
|---|---|
| 为了微服务而微服务 | 先模块化跑通正逆向闭环,资损边界清晰再拆 |
| 先上 Kafka 再找场景 | 有「支付成功通知履约」的验收,才上 Outbox/MQ |
| 架构图只有框没有验收 | 每框对应验收用例或对账口径 |
| 优惠/售后写成 CRUD Demo | 状态机 + 分摊回退 + 并发幂等 + 财务口径 |
| 行业章节各自为政 | 餐饮/跨境只是正逆向闭环上的配置差异 |
我的反思与思考
我的反思与思考
我的反思与思考
B0业务主线总图:下单正向 × 逆向售后
买成退成
flowchart LR
Cart-->Pay-->OMS-->Done
Done-->AS-->Refund
挂极致章
flowchart TB
B0-->BX-->DDD[s-ddd-agg]
B0-->Found-->MS
挂回:S0/S1 → 本图 → B-F / B-R
一笔交易要「买成」和「退成/修好」两条账都关得上:钱、货、券、积分、权益始终对齐。
交换的是商品/服务与货款;怕超卖、错价、重复扣/退、权益悬挂;验收方是用户体验+财务对账+仓储实操。
用状态机、分摊、幂等、对账消灭「多系统各说各话」的不确定性。
正向落权威优惠与履约状态;逆向按原分摊回退并收束权益——技术点必须能指回这张图上的某一步。
若没有它,业务哪一步会坏:没有主线闭环先拆微服务:资损边界不清,越拆越对不上账。
flowchart TB
subgraph F[正向 Forward]
Cart[加购/结算] --> Promo[优惠计算与分摊]
Promo --> Risk[风控短链]
Risk --> Pay[支付]
Pay --> OMS[OMS]
OMS --> WMS[WMS仓配]
WMS --> Log[物流签收]
end
subgraph R[逆向 Reverse]
Aft[售后申请] --> Type{{类型}}
Type --> RF[仅退款/退货]
Type --> RP[价保补差]
Type --> RM[寄修/维修/换新]
Type --> RN[翻新再售]
RF --> Money[钱券积分回退]
RF --> Stock[质检回库]
RM --> Right[权益回收/迁移]
end
Log -.->|售后期| Aft
Pay -.->|支付超时/未成团| Money
| 主线段 | 章节 | 核心验收(人话) |
|---|---|---|
| 正向优惠→支付→履约 | B-F | 买成、分摊落单、仓配状态可追 |
| 逆向售后维修 | B-R | 退成、分摊回退、权益不悬空 |
| 行业配置 | B-Ind | 同一闭环,餐饮/跨境旋钮不同 |
| 横向借鉴 | B2 银行 / V1 大厂 | 资金并发与高峰治理「借经验」 |
我的反思与思考
B-F下单正向:优惠 → 风控 → 支付 → OMS → WMS → 物流
服务业务闭环:电商/餐饮/跨境的「买成」
挂回:B0 → 本页 → B-R
把「可卖的价格」变成「已收款且可履约的订单」,并留下退款能跟的分摊痕迹。
怕算错价、重复支付、付了款无履约单、履约中取消打架;财务验收分摊与入账,仓储验收可拣可追。
消灭报价/落单不一致、回调乱序、仓配异步下的状态不确定。
策略与责任链管优惠变化;状态机管订单生命周期;Outbox 管支付成功必达;预占管超卖。
若没有它,业务哪一步会坏:没有分摊落单→售后不知道退多少;没有支付幂等→重复入账;没有 Outbox→已扣款无 OMS 单。
背景:结算到签收全链路要可讲解、可对账;大促与日常同一套模型。
In Scope:拼团/券积分分摊/风控短链/支付/OMS/WMS/签收事件。
Out of Scope:推荐算法、直播中台(非本主线)。
主流程:加购→试算→下单锁券冻积分→支付→OMS→仓配→签收。
异常流程:支付超时释放;风控拒绝;WMS 缺货拆单/取消补偿。
验收:分摊平衡;支付成功必有履约单或可对账挂账;超卖=0。
上线观察:试算 P99、支付成功率、Outbox 堆积、缺货补偿时效。
F1 · 拼团/拼单(生产案例·归纳)
一句话需求:大促期间拼团未成团要自动退款,且券、积分回退不错账;成团后库存与支付超时要协同。
谁:C 端用户 / 营销运营 / 财务 要什么:到期未满员自动解散并原路退款;已领券/已扣积分恢复正确状态
约束:支付回调乱序;成团临界并发;退款渠道限流;大促峰值
验收口径:未成团订单 100% 进入退款成功或可对账挂账;券积分无悬挂;超卖=0
- 状态机 ← 成团生命周期验收
- 库存预占+TTL ← 防超卖与超时释放
- Outbox ← 成团/失败事件必达履约与退款
- 退款幂等键 ← 渠道重复回调
- 限流 ← 大促峰值(非功能)
stateDiagram-v2
[*] --> Open
Open --> Locked: 满员成团
Open --> Failed: 超时未满
Locked --> PaidConfirm: 全员支付确认
Failed --> Refunding: 自动退款
PaidConfirm --> Fulfilling: 下发OMS
Refunding --> Closed
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
F2 · 券 / 积分 / 叠加互斥 / 最优 / 分摊
一句话需求:结算页要在 <200ms 级给出「平台券+店铺券+会员价+积分」的可售组合;落单后每行商品有优惠分摊,供退款与发票。
谁:用户 / 商家 / 财务 要什么:算得快、算得明白、退得回去、账对得上
约束:组合爆炸;互斥规则常变;金额分厘;退款部分退
验收口径:分摊行合计=订单优惠合计;部分退按行回退误差≤1分规则闭合;规则变更可回滚
- 责任链/策略 ← 规则互斥与优先级需求
- 近似贪心或限深搜索 ← RT 约束下的最优(工程取舍写进 ADR)
- 分摊表 order_discount_allocation ← 退款与发票口径
- 券状态机+唯一核销键 ← 防超发重复核销
- 积分冻结/确认/回退 ← 与订单生命周期绑定
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
F3 · 风控 → 支付 → OMS → WMS → 物流
一句话需求:支付成功后必须进入可履约订单;仓配缺货/拆波次要可补偿;签收前状态可追问客服。
谁:交易 / 仓储 / 客服 要什么:钱货状态一致;缺货能取消或拆单补发;轨迹可查
约束:回调重复;WMS 异步;拣货缺货;服务间超时
验收口径:支付成功→OMS 可见延迟 SLO;缺货补偿闭环;禁止支付成功却永久无履约单
- 同步风控超时 ← 不拖垮下单 RT
- 支付回调幂等+状态机 ← 资金需求
- Outbox ← 支付成功必达 OMS
- OMS↔WMS 命令/回执状态机 ← 缺货补偿需求
- 舱壁线程池 ← 拣货回传高峰不拖支付
sequenceDiagram
participant Pay as 支付
participant OMS as OMS
participant WMS as WMS
Pay->>OMS: OrderPaid(幂等)
OMS->>WMS: 下发发货单
WMS-->>OMS: 接单/拣货中
alt 缺货
WMS-->>OMS: 短拣缺货
OMS->>OMS: 拆单或取消补偿
else 出库
WMS-->>OMS: 出库
OMS->>OMS: 待收货/签收
end
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
B-R逆向与售后维修:钱 · 货 · 券 · 积分 · 权益
服务业务闭环:仅退款到翻新再售全谱
挂回:B-F → 本页 → B-Ind / S3
把已成交订单里该吐出的钱货券积分权益,按规则吐干净,且只吐一次。
怕重复退、超退、漏退、延保幽灵、质检与退款顺序乱;验收是财务+售后运营+仓储质检。
消灭重复提交、渠道异步、回执乱序下的「多退/错退」不确定;用原分摊消灭「退多少」的扯皮。
类型策略+共享状态机;退款双幂等;权益监听售后完成事件;换新拆成两段库存故事。
若没有它,业务哪一步会坏:没有正向分摊→部分退拍脑袋;没有唯一进行中售后→双倍退;没有权益联动→主品退了延保仍可赔。
背景:支持仅退款到寄修换新翻新;与支付渠道、WMS 质检协同。
In Scope:售后全谱状态、分摊回退、权益回收、退款幂等、质检分支。
Out of Scope:客服话术系统、供应链采购(非本页)。
主流程:申请→审核→寄回/仅退→质检→退款/维修/换新→关单。
异常流程:驳回、质检不合格重寄、渠道退款成功本地失败对账、重复申请。
验收:同行不超额退;权益无悬挂;差异可工单。
上线观察:退款成功率、重复拦截次数、分摊回退不平衡、在途时长。
R1 · 逆向全谱状态机(生产案例·归纳)
一句话需求:支持仅退款、退货退款、价保补差、寄修/维修/换新、翻新再售;每类路径钱货券积分运费险交叉不错账。
谁:用户 / 售后 / 财务 / 仓储质检 要什么:申请可追踪;审核/寄回/质检/退款/关单可运营;重复申请不重复退
约束:与支付渠道退款异步;WMS 质检结果乱序;部分退;并发重复提交
验收口径:同一订单行退款总额不超额;重复申请幂等;质检不合格有明确分支
- 售后状态机 ← 全谱流转验收
- 策略模式 ← 类型差异(寄修≠仅退款)
- 退款幂等(申请号+渠道号)← 重复退需求
- 引用正向分摊 ← 按行回退
- WMS 质检回执 ACL ← 货状态
stateDiagram-v2
[*] --> Applied
Applied --> Approved: 审核通过
Applied --> Rejected: 驳回
Approved --> WaitReturn: 需退货/寄修
Approved --> Refunding: 仅退款/价保
WaitReturn --> Inspecting: 入仓质检
Inspecting --> Refunding: 合格
Inspecting --> Repairing: 转维修
Repairing --> ShippedBack: 修完寄回
Repairing --> Renew: 换新
Refunding --> Done
Renew --> Done
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
R2 · 增值服务与权益回收
一句话需求:延保/刻字/包装等增值服务:未履约取消全额回退;已履约售后按规则回收或按剩余时效折算。
谁:用户 / 服务商 / 财务 要什么:权益不悬空、不重复售卖、退款口径清
约束:服务商异步确认;与主品退货时点交叉
验收口径:主品退货完成时权益必终态;无「幽灵延保」
主品已退,延保仍可申赔——典型漏订阅售后事件或解绑失败无对账。
我的反思与思考
我的反思与思考
- 冻结相关售后自动退款开关(防扩大)。
- 按售后单/支付号查渠道实退与本地态。
- 查分摊回退流水是否平衡。
- 查券积分权益终态。
- 订正须 before/after 审计;复盘唯一约束缺口。
我的反思与思考
B-Ind行业配置:餐饮 / 跨境(同一正逆向闭环)
挂回:B-F/B-R → 本页配置 → S3 路考
餐饮配置(生产案例·归纳)
一句话需求:高峰拼单下单;出餐后取消涉及餐损;券核销与配送取消要和正逆向状态对齐。
谁:食客 / 门店 / 骑手运营 要什么:高峰稳;出餐前后取消规则清晰;券不重复核销
约束:出餐不可逆成本;配送状态;高峰 QPS
验收口径:出餐后取消按餐损规则结算;高峰核心下单可用;券核销可对账
我的反思与思考
跨境配置(生产案例·归纳)
一句话需求:清关失败要能拦截发货(或拦截出境后流程)并触发退款;国际退货时效与多仓库存回库口径清晰。
谁:跨境运营 / 关务 / 财务 要什么:清关失败不继续错履约;税费与锁汇在退款可解释
约束:清关回执异步乱序;国际退货慢;多仓
验收口径:清关失败单据无「已签收」;退款含税口径预置;多仓回库仓正确
我的反思与思考
我的反思与思考
我的反思与思考
B-X生产级复杂场景加深(正逆向主线)
组合拳才是真火力
怕单点知识。
四段+五步+多解法+压测。
不会讲组合=背名词。
若没有它,业务哪一步会坏:无训练→现场抓瞎。
五案
flowchart TB
BF-->BX1
BF-->BX2
BR-->BX3
BI-->BX4
BI-->BX5
用法
flowchart LR
Read-->Trade-->Drill-->Reflect
| # | 场景 | 主线位置 | 高并发焦点 | 锚点 |
|---|---|---|---|---|
| 1 | 大促拼团+券叠加+分摊后退款并发 | B-F↔B-R | 成团临界·退款洪峰 | #bx-group-coupon |
| 2 | 支付成功 OMS→WMS 缺货补偿 | B-F F3 | 回执洪峰·取消竞态 | #bx-pay-wms-short |
| 3 | 退货与寄修并行、换新锁库存 | B-R | 售后洪峰·预占 | #bx-repair-exchange |
| 4 | 餐饮高峰取消与餐损 | B-Ind | 门店热点·取消尖刺 | #bx-food-peak |
| 5 | 跨境清关失败逆向 | B-Ind | 失败风暴·闸门 | #bx-cross-border |
我的反思与思考
B-X大促拼团 + 券叠加 + 分摊后并发退款
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 组合拳主路径在
- 缺你们券中心字段映射
- 压测数字为示意勿当 KPI
底板结构/算法/协议:写路径走聚合命令+幂等键;读路径读模型;跨上下文事件。
源码/实现路径(认知级):见 B-X 本案四段与 #s-ddd-agg。
订单/售后线上怎么露馅:详情大join拖命令;无唯一键双单。
排查时看什么能验证你懂了底板:压测数字+对账。
主异逆
flowchart TB
Main[主流程]-->OK
Ex[异常]-->Comp[补偿/幂等]
Rev[逆向]-->AS[售后聚合]
验收
flowchart LR
Case[用例]-->Metric[监控]-->Reconcile[对账]
flowchart TD
Join[参团支付] --> Seat[占座]
Seat --> Full{满员?}
Full -->|是| Confirm[成团确认预占]
Full -->|否超时| Fail[解散]
Fail --> Refund[自动退+券积分回退]
Confirm --> Partial[部分退查allocation]
Partial --> Idem[退款幂等键]
flowchart LR
A[用户A抢末席] --> CAS[名额原子DECR]
B[用户B抢末席] --> CAS
CAS -->|一人成功| OK[成团]
CAS -->|失败| Comp[失败补偿]
生产案例(五段硬门槛)
完整业务场景:营销/拼团/秒杀(用户、预算账户、库存预占)。业务焦点:大促拼团未成团自动退,且平台券+积分分摊后部分退并发;临界成团与退款重放交叉。。峰值/约束:开团瞬时;名额临界并发;补贴预算闸门。验收:名额不超发;FAIL 必退;补贴账可对;超卖=0。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:团单状态机;Redis 名额 DECR+TTL;order_discount_allocation 分摊表;退款幂等键 refundId;券回退指令 Outbox。。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:成团瞬间超员;部分退分摊不平衡;失败退款双退。。影响面:超员成团、双退/漏退、补贴资损。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 先占名额后落单;2) 分摊落单只读;3) 退款幂等+渠道重放;4) 名额/支付/券三针对账。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:超员=0;FAIL 必退;分摊平衡(示意)。。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
B-X支付成功 → OMS 下发 → WMS 缺货补偿
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- Saga/补偿思路在
- 缺 WMS 状态机对接表
- 版本令牌需与仓系统对齐
底板结构/算法/协议:写路径走聚合命令+幂等键;读路径读模型;跨上下文事件。
源码/实现路径(认知级):见 B-X 本案四段与 #s-ddd-agg。
订单/售后线上怎么露馅:详情大join拖命令;无唯一键双单。
排查时看什么能验证你懂了底板:压测数字+对账。
主异逆
flowchart TB
Main[主流程]-->OK
Ex[异常]-->Comp[补偿/幂等]
Rev[逆向]-->AS[售后聚合]
验收
flowchart LR
Case[用例]-->Metric[监控]-->Reconcile[对账]
flowchart TD
PayOK --> OB[Outbox] --> OMS --> WMS
WMS -->|短拣| Saga{补偿策略}
Saga --> Refund[整单退]
Saga --> Split[拆单发可得]
Saga --> Wait[调拨等待]
UserCancel --> Ver[OMS版本令牌]
Ver --> Gate{仓态可取消?}
flowchart LR
Cancel[用户取消] --> V1[带版本]
Pick[WMS下架] --> St[仓态>=拣货]
V1 --> Decide{比较}
St --> Decide
Decide -->|已下架| AS[转售后拦截]
Decide -->|未下架| Close[关单释放]
生产案例(五段硬门槛)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:支付已成功 OMS 下发后 WMS 报缺货;需补偿取消/拆单且用户侧口径一致。。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:支付 Outbox→OMS;WMS 回执状态机;补偿单号唯一;库存回补事务与退款编排分离超时矩阵。。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:缺货仍显示发货中;重复补偿双退;版本令牌不一致导致仓侧拒单。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 回执驱动补偿状态机;2) 退款/拆单幂等;3) 用户通知与客服话术版本化;4) 仓侧对账。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:缺货补偿可对账;双退=0(示意)。。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
B-X售后退货与寄修并行、换新锁定库存
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 并行寄修骨架在
- 缺质检回执码表
- 库存 TTL 参数需压测
底板结构/算法/协议:写路径走聚合命令+幂等键;读路径读模型;跨上下文事件。
源码/实现路径(认知级):见 B-X 本案四段与 #s-ddd-agg。
订单/售后线上怎么露馅:详情大join拖命令;无唯一键双单。
排查时看什么能验证你懂了底板:压测数字+对账。
主异逆
flowchart TB
Main[主流程]-->OK
Ex[异常]-->Comp[补偿/幂等]
Rev[逆向]-->AS[售后聚合]
验收
flowchart LR
Case[用例]-->Metric[监控]-->Reconcile[对账]
flowchart TB
AS[售后单] --> RMA[退货寄修]
AS --> Ex[换新预占]
RMA --> QC[质检]
QC -->|可修| Fix[维修再发]
QC -->|换新| Ex
Ex --> Lock[库存预占TTL]
Lock --> Ship[发换新]
flowchart LR
ExReq[换新] --> Res[预占]
Res -->|失败| Queue[排队/驳回]
Res -->|成功| Hold[持有至发货/释放]
生产案例(五段硬门槛)
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:用户同时申请寄修与换新;库存预占与售后单状态不能双开冲突。。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:聚合业务键唯一索引;命令最小加载图;跨上下文 ID+事件;快照只读;ACL 翻译表带版本;禁止先查后插。 结合本案原要点:售后单号+(orderId,type,sku) 条件唯一;换新预占独立事务+TTL;质检回执码驱动分支。。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:历史寄修塞进订单聚合;无唯一键双售后双退;预占泄漏。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 售后独立聚合;2) 并行策略表;3) 预占 TTL 对账;4) 质检回执分支压测。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:并行资损单=0;预占可回收(示意)。。工程目标:双单=0;退款可解释;售后洪峰不拖支付(示意)。 禁止将示意区间写成未公开精确 KPI。
B-X餐饮高峰取消与餐损(不可逆点)
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 餐损规则思路在
- 缺门店态事件契约
- 高峰限流键要本地化
底板结构/算法/协议:写路径走聚合命令+幂等键;读路径读模型;跨上下文事件。
源码/实现路径(认知级):见 B-X 本案四段与 #s-ddd-agg。
订单/售后线上怎么露馅:详情大join拖命令;无唯一键双单。
排查时看什么能验证你懂了底板:压测数字+对账。
主异逆
flowchart TB
Main[主流程]-->OK
Ex[异常]-->Comp[补偿/幂等]
Rev[逆向]-->AS[售后聚合]
验收
flowchart LR
Case[用例]-->Metric[监控]-->Reconcile[对账]
flowchart TD
Order[高峰下单] --> Kitchen[出餐态]
Cancel[取消尖刺] --> Rule{出餐前/后}
Rule -->|前| Free[无损取消]
Rule -->|后| Loss[餐损规则]
Loss --> HITL[门店确认可选]
flowchart LR
HotShop[爆店] --> Shard[店维度分片/限流]
Shard --> Queue[出餐队列]
Queue --> Deg[非核心推送降级]
生产案例(五段硬门槛)
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:午高峰取消尖刺与出餐态交叉;餐损归属门店/平台需可解释。。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:取消规则配置版本;店维限流键 shopId;出餐态事件;制作态枚举;高峰降级非核心推荐。。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径;无限重试打爆门店。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维限流与分区;2) 规则版本冻结 T-7;3) 出餐态守卫;4) 餐损对账抽样。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释;高峰不雪崩(示意)。。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
B-X跨境清关失败后的逆向闭环
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 清关失败闸门在
- 缺海关/税接口细节
- 退税规则按主体重写
底板结构/算法/协议:写路径走聚合命令+幂等键;读路径读模型;跨上下文事件。
源码/实现路径(认知级):见 B-X 本案四段与 #s-ddd-agg。
订单/售后线上怎么露馅:详情大join拖命令;无唯一键双单。
排查时看什么能验证你懂了底板:压测数字+对账。
主异逆
flowchart TB
Main[主流程]-->OK
Ex[异常]-->Comp[补偿/幂等]
Rev[逆向]-->AS[售后聚合]
验收
flowchart LR
Case[用例]-->Metric[监控]-->Reconcile[对账]
flowchart TD
Pay --> Declare[报关] --> Customs{放行?}
Customs -->|否| Fail[清关失败]
Fail --> Gate[逆向闸门]
Gate --> Refund[退款/退税规则]
Gate --> Freight[运费承担]
flowchart LR
Storm[失败风暴] --> Rate[限流工单]
Rate --> Batch[批量对账]
Batch --> Notify[用户通知模板]
生产案例(五段硬门槛)
完整业务场景:跨境零售(清关、税费、逆向退税/退款)。业务焦点:清关失败需阻断履约并启动税费/货款逆向;与正向发货竞态。。峰值/约束:清关失败突发;税改窗口;逆向与正向并发。验收:清关失败可闸门阻断履约;税费/退款口径可审计。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:清关结果 Topic;履约闸门;税费快照;退款/退税编排幂等;汇率支付时锁定。。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:失败仍下发仓;退税硬编码;汇率漂移导致差账。。影响面:海关扣货、错退税费、客诉与合规风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 失败闸门;2) 快照只读逆向;3) 幂等退款退税;4) 海关/财务对账。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:清关失败不误发;税费口径可审计(示意)。。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
B-L横向借鉴:资金并发 · 大厂治理(非第二主线)
挂回:B-F 支付/B-R 退款 → 借经验 → 回到主线验收
| 借鉴点 | 用到主线何处 | 中厂怎么裁 |
|---|---|---|
| 热点账户/队列化 | 热点商品预占、退款渠道限流 | 队列+人工名单 |
| 日终对账 | 支付↔订单↔券↔售后 | 日终 SQL+差异工单 |
| 统一限流降级 | 大促正向入口 | 网关限流+开关 |
| 单元化多活(公开主题) | 通常不进中厂主线 | 同城 HA 即可 |
我的反思与思考
我的反思与思考
T1并发与 JVM 调优实战
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- JVM 排障入口在
- 深度以 ENCY/Found 为准
- 本节勿单独当金标
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:大促线程池、支付回调隔离、微服务舱壁
挂回:S2 并发段 → 本层 → S3 并发库
JMM、可见性与 Happens-Before
Happens-Before(HB)
原理:JMM 规定哪些操作之间存在偏序:解锁→加锁、volatile 写→读、线程 start/join、同一线程内程序顺序等。有 HB,写对读可见且有序;没有,编译器/CPU 重排与缓存就会让你看到「见鬼」的值。
生产例子:配置中心刷新了开关(线程 A 写 flag=true),业务线程 B 一直走旧逻辑——因为 flag 不是 volatile、也没锁,没有 HB。
- 可见性:写缓冲/缓存行;别的核可能看不到最新值。
- 有序性:单线程 as-if-serial;多线程必须靠同步边。
- 原子性:
i++是读改写三步;volatile 保可见不保复合原子。
flowchart LR
W[线程A 写共享变量] --> B1[释放锁 / volatile写]
B1 --> HB[Happens-Before]
HB --> B2[加锁 / volatile读]
B2 --> R[线程B 读到一致视图]
W -.无屏障.-> X[其他线程可能读旧值]
volatile,否则可能看到「半初始化」对象。把 volatile 当锁做 check-then-act,必挂。synchronized / AQS / ReentrantLock
原理要点:synchronized 由 JVM 实现(偏向/轻量/重量会随竞争升级,JDK 版本差异大,面试提一句即可)。ReentrantLock 基于 AQS:CAS 抢 state,失败入 CLH 变体队列 park;unlock 时 unpark 后继。生产里真正要命的是锁粒度、锁顺序、锁内是否 IO。
| 手段 | 适用 | 外包常见误用 |
|---|---|---|
| synchronized | 短临界区、语义简单 | 锁整个 Service,里面打 RPC |
| ReentrantLock | 要超时/中断/公平/多条件 | 忘记 finally unlock |
| 读写锁 / StampedLock | 读多写少 | 当可重入锁乱用;写饿死未评估 |
| 条纹锁(分段) | 热点 key | 分段过多上下文切换爆炸 |
线程池:参数、拒绝、隔离
// 可落地模板(示意)
ThreadPoolExecutor pool = new ThreadPoolExecutor(
core, max, 60, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(capacity), // 有界!
new NamedThreadFactory("pay-callback"),
new ThreadPoolExecutor.CallerRunsPolicy() // 或:打点 + 快速失败 + 告警
);
- CPU 密集:core ≈ CPU 核数(+小缓冲)。
- IO 密集:看等待比,但更关键是隔离与拒绝策略。
- 禁止:
Executors.newFixedThreadPool(无界队列)、滥用 CachedThreadPool。
症状:接口 RT 飙升,CPU 不高,日志里同线程名任务堆积;上游超时重试雪崩。
指标:executor.active、queue.size、rejected、任务耗时 P99。
命令:jstack <pid> 看是否大量 WAITING on queue;Arthas thread -n;业务指标面板。
Before(事故前/错误做法)
- 支付回调与报表导出共用一个池
- 无界队列 + 默默 Discard
- 无拒绝告警
After(止血后/正确做法)
- 回调 / 核心下单 / 导出分池
- 有界队列 + CallerRuns 或快速失败
- 拒绝次数进 Prometheus + 值班告警
GC:G1 / ZGC、抖动与排查
| 收集器 | 擅长 | 代价 / 边界 |
|---|---|---|
| G1 | 通用、可设停顿目标 | 大堆+极致延迟未必最优;要会读 region/ Humongous |
| ZGC | 低停顿、大堆 | JDK/运维成熟度、CPU/内存开销、调优经验 |
- 看症状:延迟尖刺 vs 吞吐塌 vs 内存爬升。
jstat -gcutil <pid> 1000:FGC/YGCT/FGCT 是否异常。- 开/翻 GC 日志(统一用可读日志):是否 Humongous、to-space exhausted、Full GC 原因。
- CPU 高但业务逻辑简单 → 考虑 GC 或锁自旋;用 JFR / async-profiler。
- Old 不回落 →
jmap -dump或jcmd GC.heap_dump,MAT 看支配树(Listener、ThreadLocal、无界缓存)。 - 关联发布窗口:是否新版本引入大对象/缓存。
# 常用
jcmd <pid> Thread.print
jcmd <pid> GC.run_finalization
jstat -gcutil <pid> 1000
# Arthas
dashboard
thread -n 5
profiler start / profiler stop
flowchart TD
A[P99升高 / CPU高 / OOM] --> B{GC日志与指标}
B -->|Young频且停顿高| C[分配速率 / 大对象 / 晋升]
B -->|Full/Old满| D[泄漏? 无界缓存? Metaspace?]
B -->|线程多CPU高| E[锁竞争 / 正则 / 序列化]
C --> F[JFR/MAT 分配热点]
D --> G[heap dump 支配树]
E --> H[jstack / async-profiler]
案例:大促回调线程池打满(生产级)
现象:支付回调 5xx,渠道疯狂重试;容器 CPU 不高,RT 从 50ms → 3s+。
根因:共用线程池被「对账导出」占满,回调队列堆积,超时→重试→更堆积。
止血:回调独立池 + 有界队列 + 拒绝快速失败(靠渠道重试 + 本地幂等);导出限流夜间;加 rejected 告警。
复盘指标:回调成功率、拒绝次数、对账延迟、渠道重复通知率。
落地实践清单
- 所有业务池:命名 + 有界队列 + 活跃/队列/拒绝指标
- 核心接口压测同时看 GC 停顿与火焰图
- 一页「线程/GC 排查 runbook」放进可带走文件夹
- 禁止无 TTL/无上限的本地 Map 当缓存
面试题(详答)
我的反思与思考
我的反思与思考
LockSupport.park 挂起;解锁时 unpark 后继。await/signal 做有界缓冲。tryLock;所有 unlock 进 finally;临界区只留内存操作。我的反思与思考
我的反思与思考
T2Spring Boot / Spring Cloud 核心与生产问题
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:支付回调、OMS 服务、S-MS 治理
挂回:S2 → 本层 → S-MS
Bean 生命周期与循环依赖
Bean 生命周期
原理:实例化 → 属性填充 → Aware → BeanPostProcessor 前后 → init → 就绪;销毁相反。AOP 在后置处理阶段套代理,所以同类 this.x() 不经代理。
生产例子:ServiceA 调自己的 @Transactional 方法不生效;启动报循环依赖——构造器互依。
- 画出依赖环(谁构造注入谁)。
- 优先:提取中间组件 / 事件 / 接口下沉。
- 构造器注入替代字段注入,初始化逻辑移出构造。
allow-circular-references=true只作临时逃生舱,写进技术债。
事务失效清单(背这张表)
| 失效原因 | 人话 | 修法 |
|---|---|---|
| 非 public | 门禁不给进 | public 或改用 AspectJ |
| 同类自调用 | 自己喊自己不刷卡 | 拆 Bean / 自注入 |
| 异常被吞 | 质检没收到故障报告 | 抛出或手动 setRollbackOnly |
| 检查异常未 rollbackFor | 默认只回滚 Runtime | 显式 rollbackFor |
| 传播行为误用 | 新事务/挂起搞错 | 对照 REQUIRED/REQUIRES_NEW |
| 多数据源 | 刷错车间的门禁 | 指定 transactionManager |
Cloud 生产问题地图:超时与重试
flowchart TB
C[Caller] --> G[Gateway]
G --> S[Service A]
S --> F[OpenFeign / WebClient]
F --> B[Service B]
B --> DB[(DB)]
G -.超时/重试.-> S
F -.重试叠加.-> B
subgraph risks [雪崩点]
T1[连接池耗尽]
T2[重试放大]
T3[配置漂移]
T4[线程池共用]
end
| 问题 | 症状 | 止血 |
|---|---|---|
| 超时层层反了 | 网关先断,上游狂重试 | 对齐:下游超时 < 上游 < 网关(按链路设计) |
| 重试 + 非幂等 | 重复下单/扣款 | 只对安全重试开启;写接口幂等键 |
| 连接池打满 | 获取连接等待飙升 | 降超时、熔断、扩池要有上限与依据 |
| Actuator 暴露 | 信息泄露 | 收紧 endpoint、管理端口、鉴权 |
- 拉一张「超时/重试/线程池」矩阵:网关、服务、Feign、DB 池。
- 看依赖 RT P99 与错误率;半开熔断是否误伤。
- 确认写路径是否幂等;重试次数是否指数放大。
- 临时:加大隔离、降非核心、关掉危险重试;根治:对齐超时 + 舱壁。
Before(事故前/错误做法)
- Feign 重试 3 次,网关再重试
- 下单接口无幂等
- 所有服务共用 tomcat 线程池扛回调
After(止血后/正确做法)
- 写请求禁止盲目重试
- 幂等键 + 唯一索引
- 核心链路独立线程池/舱壁
落地实践清单
- 画出当前项目超时/重试/线程池一张表
- 核心写接口确认事务边界与幂等
- Actuator / Swagger 生产暴露审计
- 循环依赖与事务失效对照表进作品集
面试题(详答)
this.xxx() 是直接字节码调用。我的反思与思考
我的反思与思考
我的反思与思考
T3数据一致性:事务、分布式事务、最终一致、Outbox、幂等
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:B2 银行、B4 OMS、支付
挂回:S2 一致性选型 → 本层 → B 域
原则分层
- 本地事务优先:一个 DB 能闭环就别跨库硬刚。
- 慎用 2PC/XA:长事务锁资源,协调者故障难缠,外包运维常扛不住。
- 最终一致 + 可观测:Outbox / 事务消息 / 对账补偿,把一致性做成过程。
- 幂等:同一业务单号多次执行结果等价。
sequenceDiagram
participant API as Order API
participant DB as Order DB
participant OB as Outbox
participant R as Relay/CDC
participant MQ as MQ
participant INV as Inventory
API->>DB: 本地事务写订单
API->>OB: 同事务写 outbox
API-->>API: 提交
R->>OB: 拉取未发送
R->>MQ: 发布
R->>OB: 标记已发送
MQ->>INV: 消费扣库存(幂等键)
Note over INV: 失败→重试/死信/对账
模式对照(架构权衡表)
| 模式 | 一致性 | 复杂度 | 外包建议 |
|---|---|---|---|
| 本地事务 + 同步 RPC | 调用失败难回滚 | 低 | 只读聚合可;写慎用 |
| TCC | 较高 | 高 | 资金类且团队熟才上 |
| 可靠消息 / 事务消息 | 最终 | 中 | 优先评估 |
| Outbox + CDC | 最终 | 中 | 推荐:可审计 |
| Saga | 最终+补偿 | 高 | 长流程才值得 |
| 日终对账 | 最终(延迟) | 中 | 支付/清结算必备 |
幂等设计
- 幂等键:业务单号;唯一索引,不要只靠先查后插。
- 状态机:INIT→SUCCESS/FAIL;非法迁移拒绝并打点。
- 至少一次:消费端必须幂等;精确一次≈去重表+事务。
症状:用户投诉扣两次;账务流水同业务单两条。
根因:消费者成功后未提交位点又重投;或超时重平衡重复投递,业务无幂等。
止血:以业务单号唯一索引挡住;重复请求返回成功;对账扫差异补退。
Before(事故前/错误做法)
- 先写订单再发 MQ,发失败造成丢事件
- 消费无去重
- 靠人工改库订正且无审计
After(止血后/正确做法)
- Outbox 同事务落库
- 消费幂等表/唯一键
- 订正单:原因、前后值、审批、可回放
案例:支付对账 / 库存超卖
对账:渠道成功本地失败(或相反)→ 回调幂等更新 + 日终拉账单对账 + 差异挂账;金额用「分」整数。
库存:UPDATE stock=stock-1 WHERE stock>0 → Redis Lua 预扣 + 异步落库 → 分段库存;权威源必须写清楚。
- 冻结相关写入口或加开关(防边订正边继续错)。
- 抽样确认影响面;备份行/导出 before 快照。
- 订正脚本幂等、可分批、可回滚;先预发/只读库演练。
- 执行后对账;写复盘:根因、为何监测没发现、长期修复。
面试题(详答)
我的反思与思考
我的反思与思考
我的反思与思考
T4MySQL:索引 / 执行计划 / 慢查询 / 分库分表边界
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- MySQL 排障入口在
- 深度以 ENCY/Found 为准
- 本节勿单独当金标
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:B2/B4 写模型、报表读
挂回:S2 → 本层 → V1 裁剪
索引与执行计划
最左前缀与覆盖索引
原理:优化器是否用上索引看 EXPLAIN:type/key/rows/filtered/Extra。
生产例子:商家后台按 status+时间筛订单全表扫——缺 (merchant_id,status,created_at)。
-- 深分页:先拿 id 再回表
SELECT t.* FROM orders t
JOIN (SELECT id FROM orders WHERE user_id=? ORDER BY id DESC LIMIT 20 OFFSET 1000) x
ON t.id=x.id;
- 症状:获取连接超时、活跃连接打满、RT 雪崩。
SHOW PROCESSLIST/ performance_schema 找长事务与烂 SQL。- 慢日志 +
EXPLAIN ANALYZE(版本允许时)。 - 止血:杀恶查询(谨慎)、降级非核心读、扩从库只读、临时加索引要评估锁。
- 根治:索引/改 SQL/拆查询;连接池超时与上限对齐;大查询走异步。
SHOW FULL PROCESSLIST;
SHOW ENGINE INNODB STATUS\G
EXPLAIN SELECT ...;
-- 慢日志:slow_query_log / long_query_time
MVCC、锁升级感与死锁
RR 下:快照读靠 MVCC;SELECT ... FOR UPDATE 等当前读靠临键锁防幻读插入。死锁看 SHOW ENGINE INNODB STATUS。未加索引的大更新会锁很多行,像「锁升级」一样伤人。
分库分表:何时不该拆
flowchart TD
A[慢查询/容量压力] --> B{索引/归档/冷热能解决?}
B -->|是| C[不拆]
B -->|否| D{有稳定分片键且查询跟着走?}
D -->|否| E[改模型/宽表/搜索]
D -->|是| F[评估分片+迁移]
面试题(详答)
我的反思与思考
我的反思与思考
我的反思与思考
T5Redis:缓存模式、击穿/穿透/雪崩、分布式锁
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- Redis 排障入口在
- 深度以 ENCY/Found 为准
- 本节勿单独当金标
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:B1 大促、B3 特征缓存
挂回:S2 → 本层 → B1
单线程与 IO 多路
为何「单线程」还快?
原理:实际还有 IO 线程等优化,但模型直觉仍是:避免阻塞命令/大 key 卡住窗口。
生产例子:KEYS *、巨大 list 一次取出,RT 全线抖。
缓存模式与三大灾难
| 模式 | 要点 | 适用 |
|---|---|---|
| Cache-Aside | 读 miss 装载;写 DB 后删缓存 | 最常见 |
| Read/Write-Through | 缓存层代理 | 有统一缓存组件 |
| Write-Behind | 异步落库 | 可丢一点的计数 |
- 穿透:查不存在 → 布隆/空值短 TTL/参数校验。
- 击穿:热点过期 → 互斥重建/逻辑过期。
- 雪崩:大批一起过期或 Redis 挂 → TTL 抖动、多级缓存、限流、高可用。
flowchart LR
REQ[请求] --> C{命中?}
C -->|是| OK[返回]
C -->|否| L[单飞互斥]
L --> DB[(DB)]
DB --> SET[回填+TTL抖动]
SET --> OK
REQ --> BF[布隆/空值]
BF -->|不存在| 404[快速返回]
症状:某热点 key 过期瞬间 DB QPS 尖刺;或大批 key 同时过期。
止血:互斥重建、临时加长 TTL、对 DB 限流、降级旧数据。
指标:缓存命中率、DB QPS、热点 key 访问、Redis 内存与 evicted。
分布式锁
SET key token NX EX;释放用 Lua 校验 token。RedLock 多数外包过重且非银弹;粒度、续期、业务幂等更重要。
Before(事故前/错误做法)
- DEL 锁不校验持有者
- 锁整个方法含 RPC
- key 无 tenantId 串租户
After(止血后/正确做法)
- Lua 校验 token 再删
- 锁资源粒度 + 看门狗续期
- key 规范 biz:tenant:id
面试题(详答)
我的反思与思考
我的反思与思考
我的反思与思考
T6系统设计与可观测性:限流熔断、链路追踪、SLO
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:B1/B3、S-MS 治理
挂回:S2 验证段 → 本层
限流 / 熔断 / 隔离 / 降级
| 手段 | 解决什么 | 典型落地 |
|---|---|---|
| 限流 | 进来的太多 | 网关令牌桶;租户配额;热点参数限流 |
| 熔断 | 依赖病了还硬打 | 错误率/慢调用 → 开路 → 半开试探 |
| 隔离 | 一个慢拖死全体 | 线程池舱壁;批量与在线分离 |
| 降级 | 保核心弃边缘 | 关推荐、关验证码改异步、读缓存旧值 |
症状:依赖已恢复,但熔断器半开探针不够/阈值过严,流量仍被挡,错误率看板「假病」。
处理:核对窗口与阈值;半开放行量;区分业务错误与系统错误;临时手动关闭熔断并盯依赖 RT。
flowchart TB
U[流量] --> GW[网关限流/鉴权]
GW --> SVC[服务]
SVC --> CB{熔断器}
CB -->|开| DEG[降级]
CB -->|闭| DEP[依赖]
DEP --> M[Metrics/Trace/Log]
M --> A[基于SLO告警]
SLO、容量与告警
| 类型 | 示例 | 告警思路 |
|---|---|---|
| 可用性 | 99.9% | 多窗口 burn rate,避免 CPU>80 就半夜叫人 |
| 延迟 | P99 < 300ms | 按接口分级;核心严、边缘松 |
| 正确性 | 对账差异率 < 0.01% | 差异突增立即叫人 |
容量直觉:并发 ≈ QPS × RT(Little's Law)。压测找饱和点,留故障冗余(N+1)。
Prometheus 最小集:QPS、错误率、P99、线程池活跃/拒绝、GC 停顿、DB/Redis/依赖 RT、队列深度、消费滞后。
- 入口:按活动/用户/IP 限流,快速失败+友好文案。
- 服务:库存预扣;非核心降级开关。
- 数据:热点隔离;连接池与超时预算复查。
- 看板:秒级;演练回滚与扩容命令。
我的反思与思考
我的反思与思考
我的反思与思考
T7架构决策:单体 → 模块化 → 微服务(何时不该拆)
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:V1 中厂、S-MS 亮点
挂回:S-MS → 本层 → V1
- 模块化单体:边界清晰,禁跨模块直连表。
- 模块 + 事件:仍单部署。
- 提取服务:独立扩缩容/发布/数据生命周期时才拆。
flowchart LR
M[单体] --> MM[模块化单体]
MM --> EX[抽出高变/高负载]
EX --> MS[少量服务]
MS -.复杂度爆炸.-> X[微服务大爆炸]
X -->|回退| MM
不该拆的信号
- 团队小且无网关/配置/观测/发布平台
- 强一致、频繁跨实体事务
- 拆完仍一起发版
- 无自动化测试与契约测试
案例:遗留绞杀者重构
新路径走新模块,旧系统防腐层;特征开关切流;先读后写;交付物=迁移计划+回滚+双跑校验。
Before(事故前/错误做法)
- 按 Controller/Service/DAO 层拆成三个「微服务」
- 分布式事务满天飞
- 不能独立发布
After(止血后/正确做法)
- 按业务能力拆候选
- 先模块化与事件边界
- 平台就绪再抽服务
我的反思与思考
我的反思与思考
我的反思与思考
T8AI for Senior Java:生产向提效、审查、测试、RAG、红线
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
服务业务闭环:全域辅助
挂回:S4 作品集
生产向工作流(可复制)
- 接需求:让 Agent 生成「澄清问题清单 + 风险列表」,你确认范围。
- 改代码:给上下文(接口契约、表结构、错误码);要求最小 diff。
- 审查:按下方清单跑一遍;你做最终裁定。
- 测试:先写不变式与边界表,再让 AI 生成用例;你补并发/幂等。
- 发布:AI 可写发布检查单,不可直接连生产库执行变更。
flowchart TB
Dev[开发者意图] --> Agent[Cursor/Agent]
Agent --> Ctx[仓库+规则]
Agent --> RAG[项目知识库]
Agent --> Out[补丁/测试/说明]
Out --> Hum[人工审查门禁]
Hum --> Git[PR]
Hum -->|涉密/生产库| Stop[拒绝]
代码审查清单(给 AI + 给人)
- 空指针/可选值;集合与分页边界
- 事务边界、同类自调用、回滚条件
- 幂等键与唯一约束;重试是否安全
- 资源关闭;线程池是否有界
- 多租户/权限:IDOR、越权
- 日志脱敏;密钥不进仓库
- SQL 注入/拼接;慢查询风险
- 超时/熔断是否保留
生成测试的边界表(示例)
| 场景 | 输入 | 期望 |
|---|---|---|
| 重复回调 | 同一支付流水 2 次 | 只入账 1 次,第二次成功返回 |
| 并发扣库存 | 库存 1,两请求并行 | 仅一成功 |
| 下游超时 | Feign 超时 | 可补偿/可查询,不双写 |
| 非法状态迁移 | 已取消→已发货 | 拒绝并打点 |
红线(必讲)
- 把客户代码/密钥/生产数据贴进未授权模型
- 禁止幻觉改生产库:AI 给的 SQL 必须人工审 + 预发演练 + 备份;Agent 无生产写权限
- 未经验证的「全量删除/更新」脚本
- 引入不明许可证依赖
- 让 AI 独自收尾:资金、权限、加密、数据订正
案例:AI 加速遗留对账模块
Agent 出模块地图假设 → IDE 验证 → 起草状态机测试 → 你补并发幂等 → 复盘进 RAG。熟悉周期 1 周→2 天;上线责任仍在你。
- 当前项目 10 条 Cursor/Agent 规则
- 事故复盘+表结构本地知识库
- AI 红线清单与组员对齐
- 一页模块地图进作品集
我的反思与思考
我的反思与思考
我的反思与思考
T9Kafka / RocketMQ:可靠投递、顺序、ISR/HW
服务业务闭环:B4/B5、支付通知
挂回:T3 → 本层 → B 域
可靠投递
- 生产者:确认、幂等生产者(Kafka PID)、失败落库重试。
- Broker:多副本、acks、刷盘与延迟权衡。
- 消费者:业务成功再提交位点;死信;幂等表。
ISR / HW / Leader Epoch
原理:acks=all 且 min.insync.replicas 合理,才能在丢副本时仍不丢已确认数据。
生产例子:磁盘满/节点 GC 导致副本掉出 ISR,写入被拒或变慢——要监控 ISR 收缩。
flowchart TB
P[Producer] -->|acks| B[Leader + ISR]
B --> HW[高水位 HW]
HW --> C[Consumer]
C --> Biz{业务成功?}
Biz -->|是| Commit[提交位点]
Biz -->|否| Retry[重试/死信]
Retry --> Idem[幂等去重]
重复:位点提交失败、再均衡。处理:业务幂等键。
乱序:分区内才有序;跨分区无序。状态机用版本号;毒丸消息隔离避免堵死分区。
- 看 consumer lag 与消费 RT。
- 是否慢 SQL/下游拖住;是否单分区热点。
- 扩消费者(分区数够吗);批量/并行度;毒丸进死信。
- 重放工具与权限;禁止手动乱改位点无审计。
案例:订单状态乱序
先到「已发货」后到「已支付」。解法:状态机+版本;乱序拒绝或缓冲;权威状态查询校准。
我的反思与思考
我的反思与思考
我的反思与思考
T10网关、鉴权、零信任基本面
服务业务闭环:B1 入口、S-MS
挂回:T6 → 本层
- 网关:路由、鉴权、限流、TLS;不堆业务。
- 鉴权:JWT/会话;服务间 mTLS 或短时 token;RBAC/ABAC。
- 零信任:不信任网络位置;持续验证;密钥轮换。
flowchart LR
U[用户] --> GW[Gateway]
GW --> Auth[认证授权]
Auth --> S1[Service]
S1 -.mTLS/令牌.-> S2[Service]
S2 --> Sec[KMS/审计]
- 清理公网暴露端口
- 管理端二次验证
- 密钥进 KMS/配置中心
我的反思与思考
我的反思与思考
T11DDD 落地:防腐层、聚合边界(克制)
服务业务闭环:S-MS 卡点、B4
挂回:S-MS → 本层
- 通用语言:订单/履约/结算,不用表名字开会。
- 聚合:跨聚合用事件。
- ACL:对接遗留时翻译模型。
- 克制:CRUD 后台不必上完整六边形。
flowchart TB
UI[接口] --> APP[应用服务]
APP --> DOM[聚合根]
APP --> ACL[防腐层]
ACL --> LEG[遗留/外部]
DOM --> REPO[仓储]
我的反思与思考
我的反思与思考
T12云原生速查(完整交易链路版见 T-K8s)
- liveness 轻、readiness 表可接客;别用强依赖当 liveness。
-Xmx对齐 memory limit;Secret 不进镜像。- 交易口径变更用金丝雀;异常立刻 rollback revision。
我的反思与思考
我的反思与思考
T13性能工程:压测、火焰图、容量
服务业务闭环:全域
挂回:T1/T4 → 本层 → S4
- 场景、数据量、预热、阶梯加压;看饱和点。
- 火焰图:CPU/分配;热点序列化、正则、锁。
- 容量:QPS×RT;留冗余。
flowchart TD
G[目标QPS/P99] --> T[压测计划]
T --> R[阶梯]
R --> B{瓶颈}
B -->|CPU| F[火焰图]
B -->|IO| S[慢SQL/池]
B -->|等待| L[锁/依赖]
F --> FIX[优化]
S --> FIX
L --> FIX
FIX --> CAP[容量结论]
我的反思与思考
我的反思与思考
T-K8sDocker / K8s:订单·OMS·售后怎么容器化与发布
服务业务闭环:B-F 支付/OMS、B-R 售后高峰、S-MS 灰度卡点
挂回:B0 主线 → 本层 → S-MS 发布卡点
生意要能「安全换版本」:新优惠规则、新退款口径上线时,不能把正在付钱/正在退的人打挂。
验收方是交易值班+业务:错误率、支付成功率、退款成功率、P99;资损怕的是半发布状态(新旧逻辑各吃一半流量却无法对账)。
用编排消灭「发布与容量的不确定性」:谁接流量、何时回滚、资源打满怎么办。
探针区分活着/能接客;滚动/蓝绿/金丝雀控制爆炸半径;Config/Secret 管配置与密钥;limit 防邻居吵死你。
若没有它,业务哪一步会坏:没有就绪探针→半启动实例吃支付回调失败;没有金丝雀→坏版本全量打爆退款;没有内存对齐→OOMKill 连环重启丢在途消息。
背景:大促前要发 OMS 状态机修复 + 售后分摊回退热修;要求可灰度、可秒级回滚、密钥不进镜像。
In Scope:订单/OMS/售后三服务镜像化;Deployment+Service;滚动与金丝雀策略;ConfigMap/Secret;HPA 与资源配额;发布检查单。
Out of Scope:自研 Operator、服务网格全家桶(中厂可不做);改业务分摊算法本身(见 B-F/B-R)。
主流程:构建镜像→推仓库→金丝雀 5%→看支付/退款核心指标→放量→全量;回滚走 revision。
异常流程:金丝雀错误率超阈→自动/一键回滚;OOMKill→摘流修 limit;配置错误→回滚 Config 版本。
验收:发布窗口核心链路成功率不掉;回滚演练年/季做过;Secret 扫描通过。
上线观察:发布后 30 分钟:支付成功、Outbox 堆积、退款成功率、Pod 重启次数、GC/线程池。
订单 / OMS / 售后如何拆成可发布单元
| 服务 | 容器化关注点 | 若没有会坏哪步 |
|---|---|---|
| 订单/交易 | 回调入口独立、连接池有界、优雅停机排水 | 发布中丢支付回调→「已扣款无单」 |
| OMS | 消费组与下发线程隔离;就绪=能写库+能产 Outbox | 半启动接 WMS 回执→状态乱序 |
| 售后 | 退款出口限流;与渠道超时配置显式化 | 扩容风暴打爆渠道→重复退/挂起 |
滚动 / 蓝绿 / 金丝雀对交易链路的意义
| 策略 | 交易语义(人话) | 适用 |
|---|---|---|
| 滚动 | 慢慢换轮胎,车还在开;要靠就绪探针+排水 | 常规小改、兼容发布 |
| 蓝绿 | 备好一整列车再扳道岔;回滚快,成本高 | 大版本、难兼容 schema |
| 金丝雀 | 先让 5% 真实单子试吃;坏了只伤一片 | 优惠/退款口径变更、资损敏感 |
flowchart LR
V1[旧版本] --> Svc[Service]
V2[金丝雀5%] --> Svc
Svc --> Pay[支付回调]
Svc --> AS[售后退款]
Pay --> M[核心指标]
AS --> M
M -->|超阈| RB[回滚 revision]
M -->|平稳| Full[放量100%]
配置、密钥、资源限流与排障
- ConfigMap:非机密开关(互斥规则版本号、降级开关);变更要可回滚。
- Secret:支付密钥、渠道 token——不进镜像、不进日志;挂载或外置密钥系统。
- 资源:
-Xmx< memory limit(留元空间/直接内存/线程栈);CPU throttle 会导致 P99 毛刺像「假死」。 - 限流:网关+应用双重;售后对渠道的出口限流防止「扩容=打爆下游」。
- 看金丝雀/滚动窗口:支付成功率、退款成功率、5xx、Pod 重启。
- 超阈 → 立刻 rollback Deployment revision;打开特征开关关新逻辑。
- OOMKill:describe pod → 对齐 Xmx/limit → 临时提 limit 或降堆。
- 保留现场:镜像 tag、配置版本、trace 采样、Outbox 堆积截图。
- 复盘:探针是否打到重依赖、停机是否排水、是否缺出口限流。
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-K8s-X云原生极致落地:Docker/K8s 服务正逆向交易
工作负载拆分
flowchart TB
GW-->Ord
GW-->PayCB
PayCB-->DB
Ord-->OB-->MQ-->OMS
发布与弹性
flowchart LR
Canary-->HPA-->Limit
服务业务闭环:订单/OMS/售后发布与弹性
挂回:T-K8s → 本极致章 → 交叉大促 / S-Year M10
换版本与打爆时生意不能停、账不能乱:支付回调要接住,退款不能因发布双飞。
验收:发布窗口成功率、回滚 RTO、OOMKill、密钥不进镜像、节点挂了单子不丢。
用 Deployment 语义、探针、资源对齐、金丝雀门禁、配额与疏散演练消灭不确定性。
容器参数与 JVM 对齐;HPA 不是秒杀银弹;Mesh 是可选层不是信仰。
若没有它,业务哪一步会坏:半就绪吃回调、金丝雀无资损门禁、HPA 打爆渠道、节点故障无 PDB。
背景:大促前 OMS 热修+售后分摊修复;要求可金丝雀、可回滚、可证明节点故障不丢支付回调。
In Scope:JVM 容器参数;探针;HPA 决策;支付/退款发布清单;Config/Secret;配额;节点演练;Mesh 决策;Runbook。
Out of Scope:自研 Operator、多集群联邦、全站 Mesh。
主流程:构建→金丝雀→三针门禁→放量;异常 revision 回滚。
异常流程:OOMKill、探针误杀、渠道被扩容打爆、节点 NotReady。
验收:发布检查单签字;回滚演练;节点故障演练记录;Secret 扫描通过。
上线观察:30 分钟:支付/退款成功率、Pod 重启、Outbox、GC、线程池。
| 子章 | 锚点 | 一句话 |
|---|---|---|
| 工作负载设计 | #t-k8s-x-workload | JVM/探针/HPA 与秒杀 |
| 安全发布清单 | #t-k8s-x-release | 金丝雀/蓝绿对支付退款 |
| 配置密钥多环境 | #t-k8s-x-ops | 配额与节点故障演练 |
| Service Mesh | #t-k8s-x-mesh | 中厂何时上何时不上 |
| 清单·Runbook·题 | #t-k8s-x-drills | 可执行加厚 |
底板结构/算法/协议:kubelet 按 period 探 liveness/readiness;失败达阈值→杀容器或摘 Endpoint。驱逐按 node pressure(内存/磁盘)删 Pod。
源码/实现路径(认知级):认知路径:API Deployment→ReplicaSet→Pod→kubelet syncPod→probe manager;Service Endpoints 摘除未就绪 Pod。看 kubectl describe pod Events、containerStatuses。
订单/售后线上怎么露馅:liveness 打 DB→依赖抖则重启风暴→支付回调 503;内存 limit 小于堆+直接内存→OOMKilled。
排查时看什么能验证你懂了底板:看:RestartCount、OOMKilled、Readiness 翻转、Endpoints 数量与支付成功率同秒相关。
- 支付 Deployment:readiness 只查本进程端口;liveness 别查 DB。
preStop: sleep 10+ 先失败 readiness,再停 Tomcat。- 金丝雀门禁接支付/退款/Outbox 三面板,超阈
kubectl rollout undo。
我的反思与思考
T-K8s-X订单链路工作负载:JVM · 探针 · HPA · 秒杀
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 支付舱壁拆分在
- 缺完整 YAML/HPA 基线全文
- 探针参数需按服务重测
服务业务闭环:订单回调、OMS 消费、售后出口
挂回:T-K8s 拆单元 → 本页
高并发贯穿:秒杀尖刺秒级,HPA 分钟级——时间常数不匹配。
订单链路工作负载拆分
flowchart TB
GW-->Ord[order-api]
GW-->PayCB[pay-callback 独立部署]
Ord-->Redis
Ord-->DB[(MySQL/Polar)]
PayCB-->DB
Ord-->OB[Outbox Worker]
OB-->MQ-->OMS[oms-api]
OMS-->WMS
探针与发布
flowchart LR
Ready[readiness 可接客]-->Svc
Live[liveness 轻]-->Restart
Canary[金丝雀]-->Gate{支付/退款成功率}
Gate -->|跌| Rollback
Gate -->|稳| Promote
底板结构/算法/协议:堆用 MaxRAMPercentage;直接内存/元空间/线程栈另留;禁 Xmx>limit。
源码/实现路径(认知级):容器 cgroup 感知;OOMKill≠堆 OOM。
订单/售后线上怎么露馅:只加 Xmx→被 kube OOMKill;强依赖当 liveness→连环重启。
排查时看什么能验证你懂了底板:NMT、重启原因、探针失败率、支付成功率。
- pay-callback 独立 Deployment+独立池;PDB 防自愿中断抽干。
- readiness:数据源+关键依赖浅检;liveness:本地 /healthz 无 DB。
- 金丝雀观察:支付成功、退款成功、Outbox 年龄、5xx。
- HPA:对 CPU 可;秒杀入口靠限流/预热,不靠现场手搓扩容赌运气。
跨行业/跨场景落地(案例归纳)
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:独立舱壁。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:独立部署+HPA 谨慎。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:与浏览共用池。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 探针参数按服务重测;2) 金丝雀 SLO 门禁;3) 密钥轮换 Runbook;4) 杀节点演练保留回调现场。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:回调成功率稳定。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:变更窗金丝雀。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:小流量+强门禁。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全量星期五。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 探针参数按服务重测;2) 金丝雀 SLO 门禁;3) 密钥轮换 Runbook;4) 杀节点演练保留回调现场。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RTO 达标演练。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:节点故障。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:PDB+多 AZ。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单副本有状态误放。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 探针参数按服务重测;2) 金丝雀 SLO 门禁;3) 密钥轮换 Runbook;4) 杀节点演练保留回调现场。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:杀节点演练通过。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:门店热点。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:副本预热+出口限流。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:HPA 反应慢。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:T-1 预热 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:午高峰不雪崩。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
- 停滚动/缩金丝雀为 0。
- revision 回滚。
- 核对 Outbox/回调池。
- 单号串链定位。
- 复盘进发布清单。
JVM 容器参数对齐(写死习惯)
| 项 | 建议 | 若违背 |
|---|---|---|
| heap | -Xmx ≈ limit 的 50–75%(留 metaspace/direct/线程栈) | OOMKill 连环 |
| 容器感知 | 现代 JDK 认 cgroup;旧版显式 CPU/内存 | GC 线程数离谱 |
| GC | G1/ZGC 按延迟目标;大促前固定版本 | 发布换 GC 当实验 |
| 优雅停机 | preStop sleep + 摘流 + 排水中断 | 回调 503 风暴 |
| 连接池 | 按 Pod 数反推 DB 最大连接 | 扩容打满 DB |
探针分工
| 探针 | 检查什么 | 禁止 |
|---|---|---|
| liveness | 进程死锁/卡死(轻) | 查 DB/下游 |
| readiness | 能接客:本地依赖就绪、非排水中 | 把远端慢依赖当永久未就绪而无超时 |
| startup | 慢启动 JVM | 用 liveness 硬杀启动中实例 |
HPA 与秒杀:该不该 HPA?
秒杀/大促弹性
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 活动前预热固定副本 | 稳 | 尖刺前已知 | 资源预留成本 | 秒杀默认 |
| HPA 按 CPU | 滞后 | 慢于秒杀 | 低 | 仅平峰 |
| HPA 按自定义 QPS/队列深度 | 较好 | 需指标管道 | 中 | OMS 消费可 |
| KEDA 按 MQ lag | 贴业务 | 需运维 | 中 | Outbox/MQ 消费者 |
| 无限 HPA + 无出口限流 | 看似弹性 | 打爆渠道/DB | 事故 | 禁止 |
- 钉 秒杀不靠 HPA 救场;支付回调池与 DB 连接有上限模型。
- 拆 主:预热;支:限流;异:降级;逆:售后出口限流独立。
- 标 按 CPU 盲目扩、探针打下游、Xmx=limit。
- 选 预热+队列削峰;HPA 只给可扩展且出口受限的服务。
- 验 压测证明扩容收益;演练节点杀软。
我的反思与思考
我的反思与思考
T-K8s-X金丝雀 / 蓝绿:支付与退款安全发布清单
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 金丝雀门禁思路在
- 缺具体 SLO 阈值与 undo 脚本
- 变更窗纪律要写进你们日历
金丝雀门禁
flowchart LR
Canary-->Metrics{支付/退款}
Metrics -->|跌| RB[回滚]
Metrics -->|稳| Promote
排水
flowchart TD
preStop-->ReadyFalse-->Drain-->Kill
跨行业/跨场景落地(案例归纳)
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:回调舱壁发布。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:独立部署金丝雀。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:与浏览共发。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 门禁 2) 观察 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:成功率稳。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:窗口。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:小流量。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:周五全量。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 指挥官 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RTO。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:兼容。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:前后向兼容事件。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先发消费者不兼容。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 契约测 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:毒消息↓。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:高峰。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:禁发核心。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:午餐发版。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 日历 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:事故↓。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:支付回调、退款口径、分摊热修
挂回:T-K8s 发布 → 本页 → S-MS-X 灰度
flowchart TD
Build[镜像tag不可变] --> Canary[金丝雀1%-5%]
Canary --> Gate{三针门禁}
Gate -->|支付成功/退款成功/Outbox OK| Ramp[放量]
Gate -->|资损或错误预算烧| RB[revision回滚+开关关]
Ramp --> Full[全量]
Full --> Watch[观察30-60min]
安全发布清单(支付/退款)
- 变更分类:兼容修复 / 口径变更 / schema——口径与 schema 强制金丝雀或 expand/contract
- 镜像 tag 不可变;禁止
latest上生产 - DB 先扩后缩;禁止回滚应用却留下不兼容列用法
- 特征开关默认安全;与金丝雀正交(可关逻辑不回滚也可)
- 金丝雀门禁:支付成功率、退款成功率、Outbox 年龄、分摊不平衡、5xx、重启
- 资损告警 → 自动/一键缩容金丝雀到 0
- 排水:readiness=false → preStop → 注册摘除 → 再杀进程
- 回调兼容:新旧版本都能处理渠道通知
- 回滚演练:本季做过;RTO 写入 Runbook
- 发布窗口避开日终对账锁账时段(若有)
发布策略选择
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 滚动 | 兼容前提 | 连续 | 低 | 常规 |
| 金丝雀 | 可控爆炸半径 | 稍慢 | 中 | 支付/退款口径 |
| 蓝绿 | 切换快 | 双倍资源 | 高 | 难兼容大版本 |
我的反思与思考
我的反思与思考
T-K8s-X配置 / 密钥 / 多环境 · 资源配额 · 节点故障演练
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 配置/密钥/配额要点在
- 缺 Secret 轮换完整 Runbook
- 大促冻结清单需本地化
配置密钥
flowchart LR
Secret-->Mount
Config-->Reload{热更?}
Reload -->|危险| Freeze[大促冻结]
配额
flowchart TD
Quota-->Limit
Limit-->HPA
HPA-->Cap[有上限]
跨行业/跨场景落地(案例归纳)
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:密钥轮换。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:双密钥窗口。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:直接删旧。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 重叠 2) 回滚 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:回调不断。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:冻配。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:T-7冻结。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:高峰改ConfigMap。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 窗口纪律 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:变更事故↓。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:配额打满。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:按命名空间预算。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无Quota。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 告警 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:吵闹邻居止。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:热更误伤。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:版本化配置。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全体滚动踩坑。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 金丝雀 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可回滚。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:多环境发布与稳定性
挂回:T-K8s 配置 → 本页
多环境与密钥
| 项 | 做法 | 禁止 |
|---|---|---|
| ConfigMap | 非机密;版本化;可回滚 | 把密钥放进 CM |
| Secret/KMS | 支付密钥外置;轮换;审计 | 写进镜像/日志 |
| 环境 | dev/stage/prod 隔离账号与桶 | stage 指产库「图方便」 |
| 开关 | 大促开关单独面板+权限 | 工程师个人改产配置无单 |
资源配额与噪音邻居
- Namespace Quota / LimitRange:防某队吃光节点。
- requests≈实际,limits 防暴走;CPU limit 过紧→throttle 假死。
- PDB:支付/OMS 保证最小可用,防同时驱逐。
节点故障演练剧本
- 选定非全部支付副本所在节点;cordon + drain(尊重 PDB)。
- 观察:回调成功率、Pod 重建时间、Outbox、会话粘滞是否误伤。
- 验证:新节点调度成功;无脑杀不尊重 PDB 的脚本禁止。
- 记录 RTO/RPO 观感;修 affinity/拓扑若过浓。
我的反思与思考
我的反思与思考
T-K8s-XService Mesh:中厂何时上 · 何时不上
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 要不要 Mesh 决策树在
- 缺 mTLS 分期落地步骤
- 中厂默认可不上——本节勿当已上 Mesh
要不要Mesh
flowchart TD
Q{几服务/几人?}
Q -->|中厂小| No[先超时矩阵+舱壁]
Q -->|复杂mTLS硬需求| Yes[局部Mesh]
复杂度税
flowchart LR
Mesh-->Ops[平台成本]
Ops-->Only[有平台组再上]
跨行业/跨场景落地(案例归纳)
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:10服务。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:不必全上。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:为简历上Istio。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 裁剪 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可运维。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:mTLS。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:局部。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局一次推。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分期 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:达标。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:重试。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:业务幂等优先。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:网格自动重试写。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 关写重试 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:风暴止。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:交易/OMS/售后容器化发布(SRE、研发、变更窗)。业务焦点:流量。峰值/约束:大促前热修窗口;金丝雀与回滚必须可证明。验收:探针不误杀支付;变更可秒级回滚;节点故障不丢回调现场。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:网关为主。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:Mesh神话。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:发布雪崩、密钥泄漏、支付舱壁失效。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 真实需求 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:复杂度可控。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
挂回:S-MS-X 中厂对照 → 本页
高并发贯穿:大促前禁止首次上 Mesh。
流量治理落点
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| Spring Cloud / Resilience4j + 网关 | 够用 | 高 | 低 | 中厂默认 |
| Linkerd 轻量 | mTLS/重试统一 | 中 | 中 | 多语言且编制≥1 |
| Istio 全家桶 | 强 | 看控制面 | 高 | 有平台组 |
| 大促当周上 Mesh | 赌博 | 未知 | 事故 | 禁止 |
- 无人会排障边车就上全站 Mesh
- 用 Mesh 重试掩盖非幂等写
- Mesh 与 SDK 双重重试
我的反思与思考
我的反思与思考
T-K8s-X落地清单 · 故障 Runbook · 多题详答
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 演练项列表在
- 缺杀节点/演练记录模板
- 探针混用坑需结合你们探针配置
杀节点
flowchart TB
Kill[杀节点]-->PDB
PDB-->Reschedule
Reschedule-->PayOK{支付成功?}
演练项
flowchart LR
OOM-->Probe-->Canary-->Rollback
我的反思与思考
落地清单(交易域容器化)
- 订单 / OMS / 售后分 Deployment,连接池按副本核算
- JVM 与 memory limit 对齐文档化
- liveness/readiness/startup 三分
- 金丝雀门禁接支付/退款/Outbox
- Secret 不进镜像;环境隔离
- PDB + 拓扑分散支付副本
- HPA 上限绑定下游配额;秒杀预热
- 节点 drain 演练每季
- Mesh 默认不上并有 ADR
- 发布检查单与回滚 RTO 写进值班手册
- 三针:支付成功、退款成功、Outbox 年龄;叠加 5xx/重启。
- 超阈 → rollback revision + 关特征开关。
- OOMKill → 对齐 Xmx/limit;临时提 limit。
- 503 回调 → 查排水/注册摘除/readiness。
- 保留镜像 tag、配置版本、trace、看板截图。
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-AIAI 多智能体导读(重头戏见 T-AI-Stack)
服务业务闭环:售后质检、优惠规则、故障复盘
挂回:B-R/B-F → T-AI-Stack → S-Method
请优先阅读:Skills · MCP · RAG · 多智能体 · AgentScope 嵌入。下面保留精简三角色图。
用 AI 加快「看证据、拟方案、写用例」——不替代财务入账与退款指令的最终责任。
怕幻觉导致错退/错拦;验收方是业务负责人+研发负责人:建议可追溯、可驳回、可审计。
消灭的是「信息检索与初稿生成的不确定性」,不是「资金一致性」;一致性仍靠状态机/幂等/对账。
多 Agent 分工 + 工具调用(只读优先)+ 人机审批门禁;高风险动作必须 HITL。
若没有它,业务哪一步会坏:没有人审门禁→Agent 误触发退款工具=资损;没有工具边界→幻觉调假 API;没有审计→出事故无法追责。
背景:售后质检积压、优惠规则评审慢、故障复盘材料散——希望 Agent 提效,但不能动生产账。
In Scope:三个 Agent:质检助手、优惠规则评审、故障复盘;只读工具+草稿输出;高风险建议进人工队列。
Out of Scope:Agent 直连生产写库/打退款;无人审自动关单。
主流程:人提问/工单进入→编排选 Agent→工具取证→产出建议→人批→工单系统执行。
异常流程:证据不足→追问;工具失败→降级人工;疑似资损→升级值班。
验收:建议采纳率、错误建议拦截数、零「Agent 直改账务」事件。
上线观察:审计日志完整率、幻觉抽样差错率、人效提升。
三角色分工(交易域)
| Agent | 干什么 | 工具(建议) | 人机边界 |
|---|---|---|---|
| 售后质检助手 | 汇总物流/SN/照片/历史售后,拟质检结论草稿 | 只读工单、轨迹、知识库 | 合格/驳回由质检员点确认 |
| 优惠规则评审 | 对照互斥表与历史资损案例,标冲突与漏测 | 规则仓库、用例库、对账差异摘要 | 上线开关仍走变更评审 |
| 故障复盘 Agent | 按时间线拼 trace/日志/发布,出 5-Why 草稿 | 日志/指标/发布记录 RAG | 根因定性与问责由人定 |
flowchart TB
Ticket[工单/告警/PRD] --> Orch[编排器]
Orch --> QC[质检助手]
Orch --> Promo[优惠评审]
Orch --> Post[复盘Agent]
QC --> Tools[只读工具/RAG]
Promo --> Tools
Post --> Tools
QC --> HITL[人工审批]
Promo --> HITL
Post --> HITL
HITL -->|通过| Biz[工单/CR 执行]
HITL -->|拒绝| Human[人工接手]
Biz -.->|禁止| Ledger[(生产账务)]
与 Skills / MCP / RAG 的装配关系
| 角色 | Skill | MCP(只读) | RAG |
|---|---|---|---|
| 质检助手 | 售后质检取证步骤 | ticket.get / 物流轨迹 | 质检 SOP、历史案例 |
| 优惠评审 | 互斥评审检查单 | 规则仓库只读 | 互斥表版本、资损复盘 |
| 复盘 Agent | 20 分钟资损戏本 | 日志/指标摘要工具 | Runbook、发布记录 |
同一需求 · 多解法(多智能体要不要上)
| 需求:售后质检提效 | 视角 | 优点 | 代价 | 边界 |
|---|---|---|---|---|
| 加人 + 清单 | 可控 | 无幻觉 | 成本高 | 单量小 |
| 单 Agent + RAG | 成本 | 快上 | 角色混杂易偏题 | MVP |
| 多 Agent 分工 + HITL | 人效/质量 | 职责清、可审计 | 编排与权限成本 | 推荐积压明显时 |
| Agent 直改合格并退款 | — | 看似快 | 资损 | 禁止 |
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-AS阿里 AgentScope 及同类:嵌进正逆向工程的边界
服务业务闭环:代码评审、用例生成、Runbook RAG
挂回:T-AI → 本层 → S-Method 人机边界
选一个「能进 Java/Python 工程体系」的多 Agent 运行时,让副驾可观测、可审批、可水平扩展。
怕框架锁死与不可控工具执行;验收:能审计、能暂停、能沙箱。
消灭的是「手工作坊式 Prompt 脚本」的不确定性——会话、权限、工具、分布式要有结构。
AgentScope(阿里开源,Python/Java 生态)强调生产向多智能体、工具调用、HITL、沙箱与分布式;与 LangChain 等编排框架各有侧重。
若没有它,业务哪一步会坏:没有 HITL/权限模型→高危工具裸奔;没有会话恢复→发布丢掉半成品建议;没有沙箱→Agent 乱写文件。
公开能力对比(选型用,非排行榜)
| 维度 | AgentScope(Java/Python) | LangChain / LangGraph 等 | 自研编排 |
|---|---|---|---|
| 定位 | 多 Agent 应用与生产运行时(含团队协作、工具、HITL) | 链式/图式编排生态大、示例多 | 贴合内部工单与权限 |
| 语言 | Python 成熟;Java 侧有企业向运行时/Spring 集成公开能力 | Python 为主,生态广 | 随栈 |
| 工具与安全 | 强调沙箱、权限门、可恢复会话(公开文档主题) | 工具生态丰富,安全需自建 | 可最严,成本高 |
| 分布式 | 面向多租户/多会话/水平扩展的公开演进 | 多依赖自建服务化 | 完全可控 |
| 何时选 | 已有 Java 中台、要 HITL+多 Agent 落交易辅驾 | 快速原型、Python 数据/研究链路 | 强合规、工具面极窄 |
如何嵌进订单正逆向工程
一句话需求:在不改动生产账务写路径的前提下,用多 Agent 加速:CR 代码评审、售后/优惠用例生成、Runbook 知识库问答。
谁:研发 / 测试 / 值班 要什么:PR 风险提示、用例草稿、故障时查 runbook 带出处
约束:代码与工单数据分级;生产库只读或禁止;幻觉可控
验收口径:无 Agent 直写账务;建议均带来源;高危工具 HITL;可关闭开关
flowchart TB Dev[研发/值班] --> AS[Agent 服务
AgentScope等] AS --> Review[代码评审Agent] AS --> Case[用例生成Agent] AS --> RAG[Runbook RAG] Review --> GW[工具网关白名单] Case --> GW RAG --> KB[(知识库)] GW -->|只读| Git[仓/CI] GW -->|拒绝写| PayBan[支付/退款API] Review --> PR[PR 评论草稿] Case --> Test[测试草稿] RAG --> Card[飞书建议卡片] PR --> Human[人工合并] Test --> Human Card --> Human
编排选型 · 多解法加深
| 解法 | 视角 | 优点 | 代价 | 推荐边界 |
|---|---|---|---|---|
| 脚本 + 单次 Prompt | 成本 | 一天能见 | 无会话恢复/难审计 | 个人试用 |
| LangChain / LangGraph | 生态/原型 | 示例多 | 生产安全自建 | Python 数据/研究链 |
| AgentScope(及 Java 运行时) | 生产向多 Agent | HITL/工具/分布式主题清晰 | 学习与集成成本 | Java 中台辅驾优先评估 |
| 自研编排挂工单 | 合规 | 权限最贴 | 工期长 | 强监管、工具面极窄 |
挂回订单脊柱的最小闭环
- 只读 MCP:order.get / ticket.get(见 T-MCP)
- RAG:售后 SOP + 优惠规则版本(见 T-RAG)
- Skill:质检/部分退检查单(见 T-Skills)
- 编排:质检 Agent → HITL → 工单状态机;无退款 execute
- 观测:工具拒绝次数、HITL 时长、幻觉抽样
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-AI-StackSkills · MCP · RAG · 智能体:挂在订单脊柱上的副驾栈
栈
flowchart TB
Skills-->MCP-->RAG-->Agents
Agents-->HITL
挂单
flowchart LR
Stack-->TAiX[t-ai-x深节]
服务业务闭环:客服/售后/优惠规则/值班复盘
挂回:T8 提效红线 → 本栈 → T-AI/T-AS → S-Method⑤
让一线更快「查对事实、按对规则、写出草稿」,最终签字仍是人与状态机。
怕幻觉胡说退款口径、怕工具越权打钱、怕知识库过期误导客服。
用结构消灭四类不确定:流程怎么做(Skills)、系统怎么查(MCP)、文档怎么信(RAG)、多角色怎么协作(Agent)。
Skills=可触发的操作手册;MCP=受控工具协议;RAG=带出处的检索增强;Agent=编排+HITL。
若没有它,业务哪一步会坏:缺 Skills→每人一套土办法;缺 MCP 边界→Agent 乱调接口;缺 RAG 版本→过期规则;缺 HITL→资损。
flowchart TB
Spine[B-F / B-R 订单脊柱]
Skill[T-Skills 操作手册]
MCP[T-MCP 受控工具]
RAG[T-RAG 真相库]
Agent[T-AI 多角色]
AS[T-AS 编排运行时]
HITL[人工确认]
Spine --> Skill
Spine --> MCP
Spine --> RAG
Skill --> Agent
MCP --> Agent
RAG --> Agent
Agent --> AS
AS --> HITL
HITL -->|执行| Spine
Agent -.->|禁止直写| Ledger[(支付/退款账务)]
| 层 | sys-id | 一句话 | 挂主线哪步 |
|---|---|---|---|
| Skills | T-Skills | 把反复做的售后/优惠/复盘流程沉淀成可触发手册 | B-R 质检、B-F 规则评审、值班 |
| MCP | T-MCP | 标准协议暴露「查单/查工单」只读工具,鉴权卡死写 | 客服查单、售后取证 |
| RAG | T-RAG | 分块+版本+强制引用,压幻觉 | 规则文档、Runbook、客服话术 |
| 多智能体 | T-Agents / T-AS+ | 分工起草 + HITL;框架可换红线不换 | 质检/规则/复盘辅驾 |
我的反思与思考
T-SkillsAgent Skills:何时沉淀、如何触发、挂售后/优惠
服务业务闭环:售后 Runbook、优惠互斥评审、资损 20 分钟戏本
挂回:T-AI-Stack → 本层 → T-MCP/T-RAG
重复出现的业务操作(怎么审售后、怎么评优惠、怎么排障)不该只活在老人脑子里。
怕每人问 AI 得到不同口径;怕新人漏掉资损检查项。
Skill = 带触发条件的结构化指令包:何时用、步骤、红线、输出格式。
目录化存放(项目/个人)、描述驱动自动/显式触发;可附脚本与参考文档,不等于可写生产库。
若没有它,业务哪一步会坏:没有 Skill:同一售后场景答案漂移;复盘不沉淀→同类资损再犯。
背景:客服/质检/研发反复问「部分退怎么退券」「优惠互斥怎么测」「逆向资损怎么止血」——希望 Agent 按统一戏本辅助。
In Scope:沉淀 3 类 Skill:售后 Runbook、优惠规则评审、逆向资损排查;进项目目录可版本管理。
Out of Scope:用 Skill 直接打退款;把密钥写进 Skill。
主流程:用户/工单命中描述→加载 Skill→按步骤取证(MCP/RAG)→输出检查单/草稿→人确认。
异常流程:证据不足→Skill 要求追问;命中红线步骤→强制 HITL。
验收:同场景建议口径一致;检查单覆盖资损项;可 Git diff 审计变更。
上线观察:Skill 命中率、草稿采纳率、因漏检导致的资损工单数。
Agent Skill 是什么(别神化)
| 组成部分 | 作用 | 交易域例子 |
|---|---|---|
name / description | 触发匹配(描述要写清场景关键词) | 「部分退货退券分摊」「售后质检取证」 |
| 正文步骤 | 强制检查顺序,防跳步 | 先查正向分摊行→再算应退→再对渠道状态 |
| 红线 | 禁止动作清单 | 禁止建议「再退一笔」除非渠道查询未退 |
| 参考/脚本 | 深材料与可重复校验 | 互斥表、对账 SQL 模板(只读) |
何时沉淀(判断标准)
- 同一问题被问 ≥3 次,或新人必踩坑
- 出错成本高(资损/合规),需要固定检查项
- 答案依赖「内部口径」而非公开常识
- 流程跨系统(订单+券+工单),容易漏环
反模式:把整本百科塞进一个 Skill;或把一次性个人偏好写成团队强制流程。
目录与触发
| 位置 | 范围 | 建议 |
|---|---|---|
仓库 .cursor/skills/售后-部分退/ | 项目共享 | 售后/优惠类默认放这里,跟代码一起评审 |
| 个人 skills 目录 | 仅自己 | 面试叙事、个人排障习惯;勿放客户密钥 |
| 描述触发 | Agent 自动选用 | description 写清「何时用/不用」 |
| 显式点名 | 人工 @Skill | 高风险戏本建议显式,避免误触发 |
flowchart LR
Q[用户/工单问题] --> Match{{描述命中?}}
Match -->|是| Load[加载 SKILL.md]
Match -->|否| Ask[普通对话+RAG]
Load --> Steps[按步骤取证]
Steps --> MCP[MCP 查单/工单]
Steps --> RAG[RAG 规则/Runbook]
Steps --> Out[检查单/草稿]
Out --> Human[人工确认]
案例:售后 Runbook Skill × 优惠规则 Skill
触发:部分退货、退券、分摊、积分追回
步骤摘要:①读订单分摊行 ②算本行应退钱/券/积分 ③查售后单状态机是否允许 ④查渠道退款状态 ⑤输出「建议退款申请草稿」而非执行
红线:无分摊行不得按整单比例瞎估(除非产品书面接受);禁止直调退款工具
触发:满减/单品/券/会员/积分叠加评审
步骤摘要:对照互斥表→标冲突→生成边界用例表→标历史资损案例→变更须走开关
与 RAG 关系:互斥表与案例进 RAG 并钉版本;Skill 负责「评审动作顺序」
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-MCPMCP:工具暴露、鉴权与订单/工单示例
服务业务闭环:客服查单、售后取证、值班只读排障
挂回:T-Skills → 本层 → T-RAG/T-AI
Agent 需要查订单/工单/物流才能不瞎编;但不能拥有打款权。
怕越权看单、怕写接口被模型误点、怕审计缺失无法追责。
MCP(Model Context Protocol)把「工具列表+调用」标准化:宿主发现 server、列举 tools、按 schema 调。
业务上仍要:身份、租户、只读/写分离、金额阈值、审计日志——协议不管你的资损红线,你自己管。
若没有它,业务哪一步会坏:没有 MCP/工具层:模型编造单号状态;工具无鉴权:一次幻觉=一次资损。
背景:客服 Agent 要查订单状态与售后工单,研发 Agent 要查只读日志摘要;均不得退款。
In Scope:MCP Server:order.query、aftersale.get、ticket.search;OAuth/服务账号;全量审计。
Out of Scope:refund.execute、任意 SQL、生产配置写入。
主流程:会话带操作者身份→选工具→鉴权→执行→返回结构化结果→模型引用结果作答。
异常流程:鉴权失败→拒绝并提示;下游超时→降级「请人工查后台」;可疑批量查单→限流告警。
验收:写类工具调用次数=0;查单越权=0;审计可按工单回溯。
上线观察:工具拒绝率、P99、越权拦截数。
协议本质(面试可讲)
- 发现:客户端列出 server 上的 tools/resources
- 调用:按 JSON Schema 传参,拿结构化结果
- 边界:协议≠授权;授权在网关/工具实现里做
工具暴露原则(订单域)
| 原则 | 做法 | 反例 |
|---|---|---|
| 最小权限 | 默认可读;写工具单独 server 且默认关闭 | 一个 server 暴露全部内部 API |
| 身份穿透 | 调用带客服/用户上下文,做数据范围校验 | 服务账号可查全站任意单 |
| 结果最小化 | 脱敏手机号/地址;不回传支付密钥字段 | 整行订单 dump |
| 可审计 | tool名、参数摘要、操作者、时间、结果码 | 只打模型侧日志 |
| 可熔断 | QPS/单日限额;异常模式自动禁用写意图 | 无限重试打爆订单库 |
示例工具(订单查询 / 工单)
| 工具 | 参数(示意) | 返回 | 鉴权 |
|---|---|---|---|
order.get | orderId / userId | 状态、金额、分摊摘要、物流摘要 | 客服仅本租户;用户仅本人 |
order.refund_status | orderId / refundId | 渠道状态、本地售后状态、是否可再申请 | 只读;金额以渠道为准 |
ticket.get | ticketId | 工单轨迹、质检附件元数据 | 售后组角色 |
ticket.search | orderId | 关联工单列表 | 分页+上限 |
refund.apply_draft | 建议字段 | 草稿 ID(不打款) | 可选;仍须 HITL |
refund.execute | — | — | 默认不暴露 |
flowchart TB
Agent[Agent] --> MCPC[MCP Client]
MCPC --> GW[工具网关]
GW --> Auth[鉴权/租户/限流]
Auth -->|允许| RO[只读 Tools]
Auth -->|拒绝| Deny[审计+拒绝]
RO --> Order[(订单/售后读模型)]
GW -.->|无白名单| PayX[退款/支付写]
- 冻结相关写意图开关(若有)。
- 拉审计:操作者、tool、单号、频率。
- 核对数据范围策略是否失效(租户/本人)。
- 轮换服务账号密钥;复盘 schema 是否过宽。
同一需求 · 多种解法
| 需求:客服查单 | 视角 | 优点 | 代价 | 边界 |
|---|---|---|---|---|
| 后台页面人工查 | 可控 | 无幻觉 | 慢 | 单量小 |
| 内部 REST + 自研 Function Calling | 贴合现网 | 快 | 每模型重接 | 已有中台 |
| MCP Server 暴露只读工具 | 标准/可换客户端 | 发现与 schema 统一 | 要网关与审计 | 推荐多 Agent 客户端 |
| 直连生产库 SQL | — | 看似万能 | 注入/泄露/不可审计 | 禁止 |
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-RAGRAG:分块、更新、引用、幻觉——客服/售后/规则生产案例
服务业务闭环:客服话术、售后口径、优惠规则、值班 Runbook
挂回:T-MCP → 本层 → T-AI → S-Method⑤复盘
员工要快速找到「当前有效」的退款/优惠/质检口径,而不是靠口口相传。
怕过期文档害错退;怕模型编造不存在的条款。
RAG=检索增强生成:把真相切片索引,答题前先取片段,再生成,并强制引用。
生产关键是分块策略、版本/更新、权限、评测集与幻觉门禁——不是「上个向量库」本身。
若没有它,业务哪一步会坏:没有版本钉扎→规则变更后仍引用旧满减;没有强制引用→客服被自信语气带沟里。
背景:客服与售后要问规则/流程;优惠变更频繁;希望 Agent 回答带来源与版本。
In Scope:知识库:规则中心导出、售后 SOP、事故复盘、表结构说明;分块入库;问答强制引用;变更重建索引。
Out of Scope:整仓代码无过滤塞入;未脱敏工单原文上云。
主流程:提问→检索 TopK→重排→生成→展示引用→无命中则拒答。
异常流程:检索空→明确不知道;冲突条款→出示多来源请人裁;敏感问→拒答。
验收:抽样幻觉率<阈值;规则变更后 1 小时内索引更新;回答含文档版本号。
上线观察:引用点击率、拒答率、错误建议拦截数。
分块(Chunking)怎么服务交易文档
| 文档类型 | 分块建议 | 元数据必带 |
|---|---|---|
| 优惠互斥表 | 按规则 ID / 互斥组切,勿把整表糊成一块 | ruleId、生效版本、生效时间 |
| 售后 SOP | 按场景步骤切(仅退款/退货/寄修) | 场景、适用订单状态 |
| 事故复盘 | 按「现象/根因/动作」切 | 日期、服务、资损级别 |
| 接口契约 | 按 API/错误码切 | 服务名、版本 |
更新与发布(知识库也有发布)
- 规则中心变更 → 导出 webhook → 重建/增量索引
- 文档带 effectiveFrom / deprecated;过期默认不可检索
- 回答展示「规则版本 v2026.08.01」;与线上开关版本对齐
- 回滚规则 = 回滚索引别名(蓝绿索引)
引用与反幻觉门禁
- □ 无检索命中不得臆答资损相关问题
- □ 每个关键数字/口径必须带来源片段
- □ 涉金额以 MCP 工具实据为准,文档只解释规则
- □ 冲突来源并列,不让模型私自裁断
- □ 定期用「黄金问题集」回归(含故意过期题)
flowchart LR
Q[问题] --> R[检索 TopK]
R --> F{{命中且未过期?}}
F -->|否| Refuse[拒答/转人工]
F -->|是| G[生成+引用]
G --> Cite[展示片段与版本]
Cite --> Human[客服确认后答复用户]
生产案例三则
同一需求 · 多种解法
| 需求:售后口径问答 | 视角 | 优点 | 代价 | 边界 |
|---|---|---|---|---|
| Confluence 人工搜 | 成本 | 可控 | 慢、版本乱 | 早期 |
| 长上下文塞全手册 | 简单 | 实现快 | 贵、易淹没、难更新 | 手册极短 |
| RAG+强制引用+版本 | 人效/安全 | 可审计可回滚 | 要数据管道 | 推荐 |
| 微调把规则灌进模型 | — | 貌似内化 | 改规则要重训;难追责 | 极稳定短规则可试点,主线慎用 |
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-Agents多智能体专章:角色分工 · 人机审批 · 禁止改账
服务业务闭环:质检/优惠评审/复盘/用例
挂回:T-RAG → 本页 → T-AS / S-Method
复杂售后与规则问题拆给多个专家角色,降低单模型既当法官又当出纳的风险。
怕角色越权与责任模糊;验收=最小工具集、HITL、审计可回放。
消灭「一个万能 Bot 包打天下」的幻觉放大。
分工+工具分级+暂停恢复;与 B-R 状态机咬合,确认事件才迁态。
若没有它,业务哪一步会坏:没有 HITL:自动合格并退款;没有分工:复盘 Agent 乱改优惠。
背景:寄修质检积压 + 优惠规则周更 + 故障复盘材料散,要多 Agent 提效。
In Scope:质检/规则/复盘/用例四角色;只读 MCP+RAG;输出草稿;人确认驱状态机。
Out of Scope:Agent 直连退款与改配置。
主流程:工单进入→编排选角色→取证→HITL→原系统执行。
异常流程:证据不足追问;工具失败转人工;疑似资损升级值班。
验收:零 L3 写工具调用;错判抽检;人确认才迁态。
上线观察:HITL 等待、工具拒绝次数、采纳率。
| 角色 | 挂主线 | 工具 | 人机 |
|---|---|---|---|
| 质检助手 | B-R 待质检 | 轨迹/SN/SOP RAG | 质检员确认 |
| 优惠规则评审 | B-F 规则变更 | 规则仓库+资损复盘 | 变更评审签字 |
| 故障复盘 | 告警/发布后 | 日志 MCP+发布记录 | 值班定根因 |
| 用例生成 | 需求后 | PRD+状态机文档 | 测试采纳 |
sequenceDiagram
participant U as 人
participant O as 编排
participant A as 质检Agent
participant H as HITL
participant S as 售后状态机
U->>O: 待质检工单
O->>A: 只读取证
A->>H: 草稿
H->>S: 确认事件
Note over S: 禁止Agent直接退款
五步法跑穿寄修质检提效
- 钉:证据充分才修/换/退;质检主管签字。
- 拆:寄修→质检→维修/换新;异=SN 不符;逆=驳回重寄。
- 标:并发确认、重复提交。
- 选:多 Agent 草稿+HITL;不选自动退款。
- 验:错判抽检、零 L3 调用、复盘进 RAG。
多解法
| 解法 | 维度 | 边界 |
|---|---|---|
| 加人质检 | 成本/可控 | 单量稳 |
| 纯规则自动审 | 性能 | 标准件 |
| 多 Agent+HITL | 人效×风险 | 推荐复杂寄修 |
| 单 Agent 自动关单退款 | — | 禁止 |
我的反思与思考
我的反思与思考
我的反思与思考
T-AS+AgentScope 生产嵌入(对照加深)
服务业务闭环:Java/Python 多 Agent 运行时
挂回:T-Agents → 本页 → S-Method
选可审计、可 HITL、可扩展的运行时嵌进正逆向辅驾,不换账务系统。
怕工具越权与锁死;验收=能拒绝 L3、能暂停、能会话恢复。
消灭手工作坊 Prompt 在权限/分布式上的不确定。
AgentScope 公开能力偏多 Agent/HITL/沙箱/企业部署;与 LangChain 等按栈取舍。
若没有它,业务哪一步会坏:没有人机边界:框架越强,误挂退款工具后果越大。
- Agent 独立 Deployment(T-K8s),与订单进程隔离。
- 工具双闸:MCP 网关 + 框架权限中间件。
- 输出进 PR/工单/飞书;执行走 B-F/B-R。
- Skill 教步骤,RAG 给现行文档,编排只接线。
| 解法 | 视角 | 推荐边界 |
|---|---|---|
| AgentScope | 企业向/HITL | Java 中台要生产运行时 |
| LangChain/LangGraph 等 | 生态/速度 | Python 试点 |
| 自研编排 | 合规最小面 | 工具极少 |
| 纯 Prompt | 成本 | 不进售后主路径 |
一句话需求:搭规则评审+用例生成双 Agent,服务优惠互斥变更,禁止改生产配置。
谁:营销研发/测试 要什么:冲突报告与用例进 PR
约束:无配置写权限;要审计
验收口径:无直写;建议带来源;人合并生效
我的反思与思考
我的反思与思考
T-AI-XAI 极致落地:HITL · 白名单 · 审计 · 评测 · 版本钉扎
AI挂售后
flowchart LR
Ticket-->RAG
RAG-->Cite
Cite-->HITL-->API[现有退款API]
禁区
flowchart TD
Agent -.->|禁止| RefundAuto[自动退款写]
底板结构/算法/协议:只读+草稿+HITL;金额闸。
源码/实现路径(认知级):见 rag/mcp 节。
订单/售后线上怎么露馅:自动写账务。
排查时看什么能验证你懂了底板:写工具调用=0。
跨行业/跨场景落地(案例归纳)
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:口径。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:RAG+cite。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无版本块。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) kbVer 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:错口径↓。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:旁路。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只读。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:触账务。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 白名单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:零自动写。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:查单。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:MCP只读。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:爬取。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 配额 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:滥用可关。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消口径。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:规则版本。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当事件时间。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) HITL 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:餐损可解释。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:客服/售后质检/优惠规则/值班复盘(不改账务写路径)
挂回:T-AI-Stack → 本极致章 → 交叉大促 / S-Year M11
副驾让一线更快查对事实、按对规则、写出草稿;签字与打钱仍是人与状态机。
怕幻觉退款口径、工具越权、知识库过期、无人审计的「自动执行」。
HITL 闸门 + 工具白名单 + 审计日志 + 评测集 + prompt/模型/知识版本钉扎。
Agent 可换框架(AgentScope 等),红线不换:禁止直改支付/退款账务。
若没有它,业务哪一步会坏:无 HITL→幻觉资损;无白名单→提示注入调写接口;无评测→大促话术漂移。
背景:售后质检草稿、优惠规则解释、大促值班复盘要上 Agent;安全与财务要求零自动打钱。
In Scope:生产架构五件套;三角色 Agent 四段;RAG 评测;MCP 威胁模型;CI/工单/值班集成;禁止清单;场景题。
Out of Scope:自动退款、自动改分摊、生产库写权限给模型。
主流程:需求→Skill→只读 MCP→RAG 引用→草稿→HITL→状态机执行。
异常流程:提示注入、越权工具、幻觉口径、过期知识。
验收:评测集通过率;审计可回放;零自动账务写;大促演练记录。
上线观察:草稿采纳率、HITL 驳回原因、幻觉拦截次数、工具拒绝次数。
| 子章 | 锚点 | 一句话 |
|---|---|---|
| 生产架构五件套 | #t-ai-x-prod | HITL/白名单/审计/评测/钉扎 |
| 三角色 Agent 四段 | #t-ai-x-agents | 售后/优惠/复盘完整闭环 |
| RAG 评测与资损 | #t-ai-x-rag | 幻觉案例与门禁 |
| MCP 威胁模型 | #t-ai-x-mcp | 提示注入与越权 |
| CI/工单/值班 | #t-ai-x-integrate | 嵌入既有流程 |
| 禁止清单与题 | #t-ai-x-forbid | 写死红线+详答 |
- 今天:MCP 注册表只留
order.get/ticket.get,写工具物理不注册。 - 售后草稿 UI 加「确认后调现有退款 API」按钮;模型无网络打渠道。
- 准备 20 道评测(含过期规则陷阱),CI 不过禁止升知识版本。
AI 极致最小交付
- 工具白名单
- HITL 金额门
- kbVer+promptVer 钉扎
- 审计可回放
- 评测集门禁
- 大促降级开关
我的反思与思考
T-AI-X生产架构:HITL · 工具白名单 · 审计 · 评测集 · 版本钉扎
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 五件套清单在
- 缺发布三联票据模板全文
- 大促降级开关需自配
五件套
flowchart TB
Gate[评测门禁]-->KB[知识版本]
KB-->Tool[工具白名单]
Tool-->HITL
HITL-->Obs[审计]
发布三联
flowchart LR
AppVer-->PromptVer-->KbVer
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:知识冻结。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:kbVer钉扎。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:聊天改产。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 发布单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可回滚。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:双人审。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:晋升评审。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:个人提示上产。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 票据 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:审计。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:金额闸。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:HITL。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:模型调API。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 禁写 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:资损=0。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:摘要。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:建议态。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:自动resolve。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 人执行 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:MTTR不差。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
高并发贯穿:大促流量下限流 Agent,避免拖垮只读查询。
flowchart LR
U[客服/值班] --> GW[鉴权网关]
GW --> AG[Agent编排]
AG --> WL[工具白名单MCP]
AG --> RAG[RAG带引用]
AG --> DR[草稿输出]
DR --> HITL[人工确认]
HITL -->|通过| API[业务状态机API]
AG -.->|禁止| LEDGER[(支付/退款账务)]
AUD[审计:提示/工具/版本/人] -.-> AG
| 件套 | 落地要点 | 验收 |
|---|---|---|
| HITL | 金额/驳回/例外必人工;一键确认调已有 API | 零自动退款调用 |
| 白名单 | 仅 order.get / ticket.get / rule.explain;写工具默认不注册 | 越权调用 100% 拒绝并审计 |
| 审计 | 存 prompt 摘要、工具 IO、版本、操作人、采纳结果 | 纠纷单可回放 |
| 评测集 | 金标问答+幻觉陷阱题+回归 CI | 发布门禁 |
| 版本钉扎 | model/prompt/kb 三位绑定发布 | 可回滚到昨日组合 |
- 钉 AI 输出默认草稿;账务只走原状态机。
- 拆 主:查证+起草;异:低置信转人工;逆:驳回原因进评测。
- 标 自动打钱、全量工具暴露、无 cite 仍展示口径。
- 选 五件套进平台最小闭环。
- 验 评测+演练+审计抽检。
我的反思与思考
T-AI-X售后 / 优惠 / 复盘 Agent:需求→实现→原理→业务实质
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 多角色骨架在
- 缺生产编排配置
- 金额动作必须 HITL
多智能体
flowchart TB
Planner-->Retriever
Retriever-->Drafter
Drafter-->Checker{cite?}
Checker-->HITL
失败降级
flowchart LR
Fail-->Refuse-->Human
跨行业/跨场景落地(案例归纳)
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:多步。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:角色分离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单提示包打天下。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分角色 2) 审计 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可回放。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:分摊。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只解释。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:改金额。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 只读 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:口径一致。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:归因。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:工具只读。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:自动改签。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) HITL 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:误改=0。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:跨境零售(清关、税费、逆向退税/退款)。业务焦点:拒答。峰值/约束:清关失败突发;税改窗口;逆向与正向并发。验收:清关失败可闸门阻断履约;税费/退款口径可审计。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:无证据拒。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:编造税率。影响面:海关扣货、错退税费、客诉与合规风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) domain过滤 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:幻觉拦。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
挂回:T-Agents → 本页 → T-AS+
① 售后质检 Agent
高并发贯穿:售后洪峰时 Agent 限流,保只读查询。
我的反思与思考
② 优惠规则解释 Agent
高并发贯穿:大促规则周更必须走知识发布门禁。
我的反思与思考
③ 值班复盘 Agent
高并发贯穿:与交叉大促演练剧本互链。
多智能体要不要上
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 单 Agent + 强 Skill | 简单 | 够用 | 低 | 中厂默认 |
| 三角色多智能体+HITL | 分工清 | 中 | 中 | 质检/规则/复盘并行 |
| 自动执行工具链 | 快 | 资损高 | 高 | 禁止账务 |
我的反思与思考
T-AI-XRAG 评测与幻觉资损案例
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- cite/HITL/kbVer 门禁在
- 缺完整评测集文件
- 勿背成「已可自动退款」
底板结构/算法/协议:块元数据 kbVer/生效期/domain;强制 cite;金额 HITL。
源码/实现路径(认知级):ingest→filter→rerank→cite。
订单/售后线上怎么露馅:过期块幻觉承诺。
排查时看什么能验证你懂了底板:cite率/陷阱题。
链路
flowchart LR
Doc-->Chunk-->Ret-->Filter-->Cite-->HITL
幻觉资损
flowchart TD
Old[过期块]-->Speak-->Loss-->Fix[回滚kbVer]
我的反思与思考
客服/Agent 说的每一句退款口径必须能指回「现行有效知识块」;说错=资损。
怕过期话术、无证据编造、跨版本混用。
分块带元数据(kbVer/生效期/规则域) + 混合检索 + 强制 cite + HITL 金额闸 + 评测回归。
向量相似度不是真理;无 cite / 无版本 = 拒答或转人工。
若没有它,业务哪一步会坏:无门禁→已发货单被承诺未发货秒退全额。
RAG 生产链路(挂售后)
flowchart LR
Doc[规则/SOP]-->Chunk[分块+元数据]
Chunk-->Embed[向量/BM25]
Q[工单问题]-->Ret[检索TopK]
Ret-->Filter[版本/生效过滤]
Filter-->Rerank[重排]
Rerank-->Cite{强制cite?}
Cite -->|否| Refuse[拒答/转人工]
Cite -->|是| Draft[草稿]
Draft-->HITL[人工确认]
HITL-->SM[现有退款状态机]
幻觉资损闭环
flowchart TD
Bad[过期块入库存]-->Hit[TopK命中]
Hit-->Speak[客服照念]
Speak-->Loss[多退/错退]
Loss-->Audit[审计回放]
Audit-->Fix[回滚kbVer+补陷阱题]
Fix-->Gate[CI评测门禁]
底板结构/算法/协议:块=可引用最小单位;字段至少 docId/kbVer/effectiveFrom/To/domain(售后|优惠|清关)。
源码/实现路径(认知级):ingest pipeline:解析→切段(重叠)→写向量库+元数据索引;查询先 filter 再相似度。
订单/售后线上怎么露馅:过期块未下线→幻觉承诺;跨域块混检→优惠口径套到清关。
排查时看什么能验证你懂了底板:看:cite 命中率、陷阱题通过率、HITL 驳回「无依据」。
- 知识发布单绑定
kbVer;应用配置钉死版本,禁「聊天改产提示」。 - Agent 输出 JSON:
{answer, cites:[{docId,kbVer,span}], amountAdvice?};无 cites 前端不展示结论。 - 金额字段强制 HITL;模型不得调用 refund API。
- CI:20 题金标+10 题陷阱+5 题无证据;失败阻断知识晋升。
跨行业/跨场景落地(案例归纳)
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:大促规则周更,客服问「未发货能否秒退」。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:kbVer 钉大促规则包;强制 cite;金额 HITL。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:旧「一律全额」块仍在库。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 生效期过滤 2) 陷阱题回归 3) 驳回进负例 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:陷阱题通过率≥95%;错口径工单周环比下降(内部基线,非公开精确值)。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:理财/渠道话术问答,禁止触账务写。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:私有化模型+脱敏 MCP 只读查单;话术库双人评审。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:提示注入藏在工单备注。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 工具结果非指令 2) 白名单 3) 审计回放 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:零自动账务写;注入样本评测全绿。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:出餐后取消口径与餐损规则。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:门店态+规则版本联合检索;草稿仅解释不可改态。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:处理时间窗口话术当事件时间用。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 规则带门店态条件 2) HITL 3) 高峰降级纯人工 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:午餐高峰草稿采纳率上升且餐损错退不增。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:跨境零售(清关、税费、逆向退税/退款)。业务焦点:清关失败能否退税/谁承担运费。峰值/约束:清关失败突发;税改窗口;逆向与正向并发。验收:清关失败可闸门阻断履约;税费/退款口径可审计。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:清关 SOP 独立 domain;无证据拒答。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:混入国内售后块。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:海关扣货、错退税费、客诉与合规风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) domain 过滤 2) 未知税率不编造 3) 转海关专席 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:清关类幻觉拦截可审计。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
同一「售后口径助手」多解法
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 纯 FAQ 检索无 LLM | 低幻觉 | 体验硬 | 低 | 中厂冷启动 |
| RAG+强制cite+HITL | 可解释 | 中 | 中 | 推荐生产 |
| Agent 自动退款 | 快 | 资损高 | 高 | 禁止 |
| 全人工 | 最稳 | 人效差 | 高人工 | 高风险单兜底 |
- 钉 钉:错口径资损=0 的验收句+财务签字。
- 拆 拆:主=查单解释;异=无证据;逆=金额确认走状态机。
- 标 标:过期块、注入、跨版本。
- 选 选:元数据过滤+cite+HITL,不选自动写。
- 验 验:评测集+审计抽检+错退监控。
我的反思与思考
我的反思与思考
评测集最小集
| 题型 | 例子 | 通过标准 |
|---|---|---|
| 金标 | 已知售后 SOP 问答 | 答案要点命中+cite 正确 |
| 陷阱 | 过期规则文档仍在库 | 拒答或指向现行版本 |
| 无证据 | 库中无税率条款 | 明确「未知」不编造 |
| 版本 | 同问题跨 ruleVersion | 与快照版本一致 |
我的反思与思考
我的反思与思考
T-AI-XMCP 安全威胁模型:提示注入 · 越权工具
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 白名单/禁写思路在
- 缺具体 MCP server 注册表
- 协议≠已授权
底板结构/算法/协议:白名单+鉴权+副作用分级;结果与系统提示隔离。
源码/实现路径(认知级):list_tools→call_tool;网关再鉴权。
订单/售后线上怎么露馅:写工具误注册。
排查时看什么能验证你懂了底板:写工具调用=0。
调用链
flowchart TB
Agent-->Policy-->MCP-->RO[只读工具]
MCP -.->|禁| W[refund.create]
注入
flowchart LR
Note[工单藏指令]-->Isolate-->Guard-->HITL
跨行业/跨场景落地(案例归纳)
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:查单草稿。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只读+HITL后原API。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:备注注入。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 隔离 2) 评测 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:写=0。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:坐席。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:脱敏终点。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:证件号外泄。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) DLP 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:零明文。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:轨迹。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:限流。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:爬取。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 配额 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可关停。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:店助。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:店员绑店。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:跨店。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 租户测 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:越权红线。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
MCP 把「模型能碰什么世界」变成显式工具面;碰错=越权与资损。
怕提示注入、写工具暴露、数据外泄、恶意 Server。
白名单注册 + 鉴权到人/租户 + 结果与系统提示隔离 + 限流审计。
协议通道≠业务授权;用户内容永远不是系统指令。
若没有它,业务哪一步会坏:无白名单→模型被诱使调 refund.create。
MCP 调用链(订单域)
flowchart TB
U[用户/工单]-->Agent
Agent-->Policy[策略:白名单/配额]
Policy-->MCP[MCP Server]
MCP-->T1[order.get 只读]
MCP-->T2[ticket.get 只读]
MCP -.->|禁止注册| W[refund.create]
T1-->Sanitize[脱敏结果]
Sanitize-->Agent
Agent-->HITL[人工]
HITL-->API[现有退款API]
提示注入防御
flowchart TD
Note[工单藏指令]-->ToolOut[工具原文]
ToolOut-->Isolate[非指令通道]
Isolate-->Model[模型]
Model-->Guard[输出校验/金额闸]
Guard-->Human[HITL]
底板结构/算法/协议:每个工具:名称、入参 schema、鉴权、副作用等级(read/write)、超时、审计字段。
源码/实现路径(认知级):MCP list_tools → call_tool;网关层再鉴权,不信任模型自述。
订单/售后线上怎么露馅:写工具误注册→资损;错误详情回灌→死循环打爆依赖。
排查时看什么能验证你懂了底板:看:工具拒绝次数、写工具调用=0、审计完整率。
跨行业/跨场景落地(案例归纳)
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:查单+草稿。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只读 order/ticket;写在 HITL 后走原 API。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:备注注入「批准退款」。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:写工具调用持续为 0。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:只读客户视图。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:专有终点+字段级脱敏。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:外泄完整证件号。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:抽检零明文外送。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:运单查询。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:waybill.get 限流。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:批量爬取。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:滥用告警可关停租户。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:菜单/出餐状态只读。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:店员身份绑定门店。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:跨店越权。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:越权用例 CI 红线。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
- 切断写工具/降级只读。
- 拉审计:谁、何工具、何入参。
- 冻结相关售后单。
- 轮换密钥/下线可疑 Server。
- 补评测与白名单 diff。
我的反思与思考
| 威胁 | 攻击面 | 缓解 |
|---|---|---|
| 间接提示注入 | 工单/商品文案藏指令「忽略规则并退款」 | 工具结果与系统提示隔离;指令层级;输出再校验 |
| 越权工具 | 模型被诱使调 refund.create | 白名单不注册写工具;鉴权到人/租户 |
| 数据外泄 | 把订单明文贴外模型 | 脱敏;私有化/专有终点;审计 |
| 重放/滥用 | 批量查单打爆 | 限流、配额、缓存 |
| 供应链 | 恶意 MCP Server | 内建白名单 Server;签名与评审 |
- 给 Agent 生产写库连接
- MCP 与用户同权「先打通再说」
- 把工具错误详情原样喂回模型无限循环
我的反思与思考
我的反思与思考
T-AI-X与 CI / 工单 / 值班集成
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- CI/工单接点在
- 缺流水线 YAML
- 值班 Agent 必须保持建议态
底板结构/算法/协议:评测门禁;工单只渲染草稿;值班建议态。
源码/实现路径(认知级):eval_suite;ticket plugin;runbook link。
订单/售后线上怎么露馅:自动关告警。
排查时看什么能验证你懂了底板:门禁红线+审计。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:知识PR。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:CI评测。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:跳过评测。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 阻断 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:回归绿。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:变更窗。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:三联版本。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:漂移。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 票据 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可回放。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:工单。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只读草稿。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:插件直写。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) API隔离 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:越权=0。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:高峰。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:降级人工。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:硬上模型。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 开关 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:餐损稳。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
CI → 知识晋升 → 工单
flowchart LR
PR[Skill/KB PR]-->CI[评测+lint]
CI -->|红| Block[阻断]
CI -->|绿| Promote[晋升kbVer]
Promote-->Ticket[工单侧栏草稿]
Ticket-->HITL[坐席确认]
HITL-->Core[状态机/API]
值班复盘 Agent 边界
flowchart TD
Alert[告警]-->Sum[摘要+Runbook链接]
Sum-->Human[值班勾选]
Human-->Act[回滚/限流/开关]
Sum -.->|禁止| Auto[自动执行回滚]
- CI job:
eval_suite+ secret scan;失败禁合并知识。 - 工单插件:只渲染草稿与 cite;确认按钮调现有售后 API。
- 值班:Agent 输出「建议动作 checklist」,执行权在人。
- 发布票据:应用版本 ↔ promptVer ↔ kbVer 三联。
跨行业/跨场景落地(案例归纳)
完整业务场景:智能客服/质检/值班辅助(运营、客服、研发值班)。业务焦点:告警风暴摘要。峰值/约束:大促咨询尖刺;知识库周更;禁止模型直连打钱。验收:回答强制引用/版本;高风险动作 HITL;审计全量可追。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:只读复盘 Agent+HITL。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:自动关告警掩盖事故。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:错退建议、合规事故、密钥/隐私泄露风险。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:MTTR 不因摘要变差。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:知识包与核心发布绑定。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:RAG 分块 500~1000 字重叠;强制 cite+kbVer;MCP 工具白名单只读;金额/退款 HITL;审计日志全量;评测集门禁。 结合本案原要点:双人审批晋升。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:聊天改产提示。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 评测集与幻觉门禁;2) 禁写工具与密钥扫描;3) HITL 队列对接原系统;4) 大促降级为检索/脚本。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:审计可回放。工程目标:高风险自动执行=0;引用覆盖率与人工改写率可观测(示意)。 禁止将示意区间写成未公开精确 KPI。
- 钉 钉集成验收:评测门禁+零自动写。
- 拆 拆 CI/工单/值班/发布四接点。
- 标 标自动执行诱惑。
- 选 选建议态。
- 验 验演练记录。
| 集成点 | 做什么 | 不做 |
|---|---|---|
| CI | 评测集回归;Skill/lint;禁止密钥进库 | CI 里调生产退款 |
| 工单 | 打开工单侧栏出草稿与 cite | 自动关单改状态 |
| 值班 | 告警摘要+Runbook 链接+待勾选动作 | 自动执行回滚(可建议) |
| 发布 | 知识库/提示版本与应用发布票据绑定 | 聊天里口头改产提示 |
- 停:关闭自动建议或降级只读问答。
- 冻:相关售后单人工队列。
- 追:审计回放版本与工具调用。
- 修:回滚 kb/prompt;补评测陷阱。
- 复盘进 Skill。
我的反思与思考
T-AI-X禁止清单(写死)· 多题详答
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 禁止清单可用
- 缺违规审计样例
- 清单≠控制系统已上线
- 模型直接调退款/改库存
- 无 cite 展示结论
- 聊天改生产提示
- 用生产账务数据微调外送
违规路径
flowchart TD
Inject[提示注入]-->Tool[写工具]
Tool-->Loss[资损]
Loss-->Ban2[白名单阻断]
正确
flowchart LR
Draft-->HITL-->CoreAPI
我的反思与思考
- Agent/MCP 直连支付、退款、改分摊、改库存写接口
- 无引用仍输出可执行退款口径
- 无 HITL 的金额承诺对外发送
- 知识库无版本、提示口口相传改产
- 评测未过就大促全量
- 用生产真实 PII 无脱敏喂公网模型
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
P0线上排障总戏本:从告警到根因的通用路径
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 排障序可用
- 缺你们监控面板截图/链接
- 先取证再变更——需值班演练固化
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
5 分钟态势感知
- 影响面:哪个接口/租户/地域?错误率还是慢?是否资损?
- 时间线:开始时间 vs 发版/开关/流量/下游变更。
- 黄金信号:QPS、错误率、P99、饱和(CPU/线程池/连接池/GC)。
- 依赖:DB/Redis/MQ/HTTP 谁先变坏?
- 止血选项:回滚、关开关、限流、降级、扩容(有依据才扩)。
分层检查表
| 层 | 看什么 | 工具 |
|---|---|---|
| 入口 | 网关 4xx/5xx、限流计数 | 网关看板、access log |
| 服务 | 线程池、锁、GC、异常风暴 | jstack、jstat、Arthas、日志 |
| 依赖 | RT、超时、连接池、熔断状态 | metrics、依赖方状态页 |
| 数据 | 慢 SQL、锁等待、主从延迟 | PROCESSLIST、EXPLAIN、慢日志 |
| 消息 | lag、死信、ISR | 消费组监控 |
dashboard
thread -n 10
jad com.xx.Service
watch com.xx.Service method '{{params,returnObj,throwExp}}' -e
profiler start --event cpu
profiler stop --format html
ognl '@com.xx.App@flag'
注意:生产 watch/profiler 要控制范围与时长,避免二次伤害。
jcmd <pid> Thread.print
jcmd <pid> GC.heap_info
jstat -gcutil <pid> 1000
jmap -histo:live <pid> | head
# 慎用:jmap -dump:format=b,file=heap.hprof <pid>
沟通话术(给甲方/领导)
我的反思与思考
我的反思与思考
P0容量评估、SLO 与告警工程(生产向)
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 容量/告警思路在
- 缺 SLO 数字基线
- 勿背示意量级当容量结论
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
容量粗算
- 单实例饱和 QPS(压测)× 实例数 × 折损(0.6–0.8)≈ 理论容量。
- 并发 ≈ QPS × RT;线程池/连接池按此留余量。
- 依赖最慢的那一环决定你的上限。
告警分级
| 级别 | 含义 | 示例 |
|---|---|---|
| P0 叫人 | 用户大面积不可用/资损 | 核心下单成功率暴跌、对账差异暴涨 |
| P1 尽快 | 局部影响或错误预算快烧完 | 单机房升高、依赖半熔断 |
| P2 值班看 | 趋势异常 | 命中率下滑、lag 缓升 |
我的反思与思考
P0代码级生产模式:幂等、超时、舱壁、特征开关
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
幂等落库(伪代码)
@Transactional
public Result payCallback(Cmd cmd) {
try {
insertIdempotent(cmd.getPayId()); // 唯一索引
} catch (DuplicateKeyException e) {
return Result.ok(loadExisting(cmd.getPayId())); // 重复当成功
}
State next = sm.transit(current, PAID);
updateOrder(cmd.getOrderId(), next);
return Result.ok();
}
超时预算(配置示例思路)
# 示意:链路从下往上留余量
mysql.socketTimeout: 800ms
redis.timeout: 100ms
feign.readTimeout: 1200ms
gateway.timeout: 2000ms
# 写接口:retries=0 或仅幂等可重试
特征开关
- 新逻辑必须可关;开关要有默认安全值。
- 开关变更进审计;与发布记录关联。
- 长期开关=技术债,定期清理。
Before(事故前/错误做法)
- 硬编码新逻辑无法关
- 超时复制粘贴同一值
- 捕获异常后空 catch
After(止血后/正确做法)
- 开关+默认安全
- 超时矩阵进仓库
- 异常分类打点并决定是否回滚
我的反思与思考
P1消息投递语义加深 + 数据订正剧本
至少一次 / 至多一次 / 恰好一次
原理:Kafka 幂等生产者+事务能增强边界,但业务侧仍要幂等。
生产例子:优惠券发放 Topic。
- 定性:错账范围、是否仍在扩大。
- 止血:开关/限流/暂停消费者。
- 取证:导出 before;保留消息与日志。
- 剧本:SQL/程序幂等、分批、可回滚。
- 预发或影子校验。
- 审批执行;双人复核。
- 对账;复盘;加检测防再发。
无 before 快照、无幂等、高峰执行、与在线写并发。处理:停写、从备份恢复到已知点、重做剧本。
我的反思与思考
P1MySQL / Redis 生产案例加深
案例 A:账单深分页拖垮从库
Before(事故前/错误做法)
LIMIT 200000,20 扫描巨大;从库延迟升高影响读。
After(止血后/正确做法)
seek 分页 / 延迟关联;强制时间窗;导出异步;从库隔离报表账号。
案例 B:热点 SKU 缓存击穿
Before(事故前/错误做法)
TTL 到点,所有 Pod 同时打 DB。
After(止血后/正确做法)
单飞锁+逻辑过期;本地缓存短 TTL;DB 限流;预热。
案例 C:分布式锁过期业务未完
Before(事故前/错误做法)
锁 10s,业务 30s,第二台进入双写。
After(止血后/正确做法)
看门狗续期;临界区缩短;落库版本号 fencing;幂等。
我的反思与思考
我的反思与思考
面试题库 · 加厚卷(继续详答)
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
人话术语速查(广而薄的索引,细看各章)
| 术语 | 一句话人话 |
|---|---|
| Happens-Before | 有同步面单,收件人才能保证看到新货 |
| AQS | 很多锁共用的排队叫号机 |
| CAS | 乐观「以为还是旧值就换成新值」 |
| G1/ZGC | 不同风格的房间打扫策略 |
| 代理事务 | 不刷门禁卡=质检没发生 |
| Outbox | 记账和寄信写进同一笔待办 |
| MVCC | 每人看自己时间点的照片 |
| 间隙锁 | 把两行之间的空位也占住防插入 |
| ISR/HW | 跟上进度的副本组 / 安全可读水位 |
| 舱壁 | 船舱隔开,一舱进水不沉全船 |
| 错误预算 | SLO 允许倒霉的额度 |
| 绞杀者 | 新藤蔓慢慢勒死老树 |
我的反思与思考
P0线程池与连接池:生产调参与反模式
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
线程池参数卡片
| 参数 | 含义 | 生产提示 |
|---|---|---|
| core/max | 常驻/最大工人 | IO 密集可大于核数,但要看下游承受 |
| queue | 等候室 | 必须有界;界=能接受的最大延迟×QPS |
| keepalive | 多余工人回收 | 突发型任务可设 |
| rejection | 满员策略 | 核心链路要可观测;忌默默丢弃 |
连接池(Hikari 思路)
- size ≈ 并发成功所需连接(QPS×RT)+ 余量,不是越大越好。
- 连接泄漏检测打开;超时要小于接口超时。
- 读写分离:报表池与在线池分开。
| 现象 | 更像 | 动作 |
|---|---|---|
| 队列长度涨、CPU 低 | 工人不够或工人卡住 | jstack 看卡点;扩容或拆池 |
| 拒绝次数涨 | 过载显性化 | 限流/扩容/降级,勿关拒绝 |
| 获取连接超时 | 慢 SQL/泄漏 | PROCESSLIST;修 SQL |
我的反思与思考
P0Spring Cloud 故障图谱(Gateway / Feign / 配置)
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
常见故障→检查
| 故障 | 检查 | 止血 |
|---|---|---|
| 重试风暴 | 网关/Feign/客户端重试乘积 | 写禁重试;降并发 |
| 配置未刷新 | 实例值不一致 | 统一刷新/滚动发布 |
| 服务发现陈旧 | 摘流实例仍被打 | 就绪探针+优雅下线 |
| 序列化差异 | 时间区/枚举/空值 | 契约测试 |
优雅下线
原理:K8s preStop + 应用 shutdown hook;注册中心摘除。
生产例子:发布时大量 502。
我的反思与思考
P0可观测性配方:日志、指标、追踪怎么配才够用
定位
flowchart TD
Alert-->Triage{资损?}
Triage -->|是| Freeze[冻结资金动作]
Triage -->|否| Scope[入口/依赖/发布]
Freeze-->Trace[单号串链]
Scope-->Trace
Trace-->Hyp[假设≤3]
Hyp-->Prove[日志/指标/库态]
Prove-->Fix[止血→根治→复盘]
回扣业务
flowchart LR
Fix-->PayOK[支付成功率]
Fix-->RefundOK[退款成功率]
Fix-->OutboxAge[Outbox年龄]
Fix-->Idem[幂等冲突可解释]
底板结构/算法/协议:先取证再变更;资损类先冻资金动作(停退款/停新单可选)再查。证据=指标尖刺时刻对齐发布/开关、单号在订单→支付→履约→售后的库态、慢 SQL/线程栈/消息位点。
源码/实现路径(认知级):Runbook 序:三针指标→是否发布中→单号串链→jstack/EXPLAIN/消费 lag→止血(限流/回滚/关新逻辑)→财务差账通道。禁止「先重启再看」。
订单/售后线上怎么露馅:先重启毁掉半消息/线程现场;补账先于查证制造第二现场;只看应用日志不看库唯一键冲突。
排查时看什么能验证你懂了底板:看:支付/退款成功率、Outbox 年龄、幂等冲突、DLQ、慢 SQL、版本回滚记录。
- 三针:支付成功、退款成功、Outbox 年龄。
- 发布/开关/配置是否刚变。
- 单号:订单→支付→OMS→售后库态。
- 止血:限流/回滚/关新逻辑。
- 差账工单与复盘条目。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:下单/回调 RT 飙升或成功率跌。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:分层:入口限流→热点库存→池/DB→依赖舱壁;禁盲扩与全员重启。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全员重启丢现场;只加副本不看热点行。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 单号 3) EXPLAIN/池指标 4) 回滚或限流 5) 复盘进清单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:对账不平或未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:先冻再查流水;三方对齐;未知态查证工单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先补账后查证。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻 2) 流水 3) 渠道查单 4) 补记审计 5) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:消费 lag 或乱序投诉。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:扩并行/降处理/毒丸 DLQ;禁删位点瞒问题。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:删位点「清零」造成漏单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 看板 lag 2) 剖慢消费 3) upsert 校正 4) 补数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消尖刺/餐损争议。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:规则版本+店维限流+出餐态;盲扩无效。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁门店;无版本口径。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 店维治理 2) 规则 kb/配置版本 3) 开关降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:餐损可解释、高峰不雪崩(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
- 日志:JSON;必带 traceId/tenantId/userId(脱敏);错误带堆栈一次。
- 指标:RED(Rate/Errors/Duration)+ 饱和;自定义业务(下单成功、对账差异)。
- 追踪:入口生成,出站传递;采样率可调但故障时可临时提高。
# Prometheus 命名示意
http_server_requests_seconds_bucket{uri="/order",status="500"}
executor_queue_size{name="pay-callback"}
executor_rejected_total{name="pay-callback"}
db_pool_pending
redis_hit_ratio
mq_consumer_lag{group="order"}
我的反思与思考
P2ADR / 设计评审 / 发布检查单(模板)
# ADR-00X 标题
- 状态:提议/通过/废弃
- 背景:
- 决策:
- 放弃的方案:
- 后果(好/坏):
- 回滚策略:
发布检查单(最小)
- 超时/重试/开关已评审
- 迁移/脚本可回滚
- 指标与告警已加
- Actuator/Swagger 暴露已审
- 金丝雀观察窗口明确
- 回滚命令已演练
我的反思与思考
面试题库 · 情景演练(口述 30–60 秒)
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
T-Found-X基础件极致:人话引入 → 掀底板 → 落地 → 回扣正逆向
基础件挂脊柱
flowchart TB
Pay[支付]-->JVM
Pay-->JUC
Ord[订单]-->MySQL
Sec[秒杀]-->Redis
OMS-->Rocket
Track[轨迹]-->Kafka
排障入口
flowchart LR
Alert-->Which{中间件?}
Which-->Deep[进对应掀底板节]
底板结构/算法/协议:每组件子章必须能回答:坏了时支付/退款哪步炸、源码路径、今天改什么配置。
源码/实现路径(认知级):从本表锚点进入子章;对照 #found-mq-matrix / #found-lock-matrix。
订单/售后线上怎么露馅:只停在总图背名词。
排查时看什么能验证你懂了底板:子章均有底板+≥2图+跨行业案。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:回调超时。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:先看池/GC/幂等再看 MQ。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先重启 Pod。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 三针 2) 进子章 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:成功率回稳。工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:渠道未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:同步刷盘取向+对账。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当普通异步。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分级 2) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RPO可述。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:轨迹乱序。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:Kafka key+upsert。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无键入队。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 强制键 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可校正。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:通知丢失。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:durable 队列 + publisher confirm;consumer manual ack;prefetch 按门店/下游能力限流;失败入 DLX;关键旁路与核心账务解耦;路由键变更必须探测消息验收。 结合本案原要点:Rabbit confirm+ack序。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:自动ack在前。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 改序 2) DLX 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:到达率升。工程目标:重启无丢单(persistent/quorum 取向);高峰通知成功率回升(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:下单预占、支付回调、Outbox、售后回补、大促削峰
挂回:T3–T6 零件 → 本极致章 → B-X / S-Year M08
| 组件 | 挂正逆向哪步 | 锚点 |
|---|---|---|
| JVM | 支付/售后 Pod OOM、停顿、发布排水 | #t-found-jvm |
| JUC | 回调线程池、库存 CAS、并发退 | #t-found-juc |
| MySQL | 订单行锁、分摊、对账、幂等唯一键 | #t-found-mysql |
| Redis | 秒杀预占、会话、热点 SKU | #t-found-redis |
| Kafka | 日志/轨迹/对账流、高吞吐事件 | #t-found-kafka |
| RabbitMQ | 中厂轻量异步、延迟重试小场景 | #t-found-rabbit |
| RocketMQ | 订单/支付事务消息、延时关单 | #t-found-rocket |
| 选型矩阵 | 同一问题多方案对照 | #t-found-matrix |
我的反思与思考
T-Found-XJVM:支付 Pod 为啥「假死」与 OOMKill
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- GC/容器对齐要点在
- 缺完整 GC 日志判读案例集
- DirectMemory/NMT 实战样例不足
分配到停顿
flowchart LR
Alloc[对象分配TLAB]-->Eden
Eden-->YGC[Young GC]
YGC-->Old
Old-->Mixed[混合收集]
Mixed-->Pause[Safepoint停顿]
Pause-->PayRT[支付P99尖刺]
OOMKill vs 堆OOM
flowchart TD
Limit[cgroup limit]-->Sum[堆+元空间+Direct+栈]
Sum -->|超| Kill[OOMKill]
Heap[堆用尽]-->JavaOOM[Java OOM]
Kill --> Restart[Pod重启依赖幂等]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:回调高峰 GC 毛刺。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:G1+MaxRAMPercentage+回调池隔离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:导出与支付同进程。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆舱 2) GC 日志 3) 压测 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:支付 P99 与 GC 同屏可解释(示意)。工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:变更窗停顿敏感。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:低停顿参数+排水发布。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:Xmx>limit。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 对齐 limit 2) preStop 3) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:窗口内无 OOMKill(示意)。工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:大对象 JSON。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:分片键与全局唯一策略;跨片事务预算;热点片加盐;禁止无键扫;中间件超时与重试矩阵。 结合本案原要点:复用缓冲+裁剪字段。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:一次 parse 巨大报文。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 限流 2) 瘦报文 3) 分片消费 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:Young GC 频率回落(示意)。工程目标:热点片可扩;跨片比例受控;切流可回滚(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:突然扩容冷启动。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:容器 -XX:MaxRAMPercentage 与堆对齐;G1/ZGC 按延迟选型;直内存与元空间上限;GC 日志与 heap dump 路径;禁止盲目全员重启丢现场。 结合本案原要点:AlwaysPreTouch+预热。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:扩容后首批超时。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 预热脚本 2) 就绪探针 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:工程目标:午高峰冷启动尖刺可控(示意)。工程目标:RT 回落且超卖/双单=0(示意);OOM/频繁 GC 可定位到代码路径。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
高并发贯穿:大促分配速率飙升直接打出 GC 毛刺。
底板结构/算法/协议:新生代/老年代(G1 为 Region 堆);对象优先 Eden;存活晋升;GC Root(栈帧、静态、JNI)标记;混合收集;分配失败→Full GC。Safepoint 让线程停在可安全点,停顿体感=「接口突然卡住」。
源码/实现路径(认知级):热点:Thread.allocate → TLAB;G1:G1CollectedHeap/G1ConcurrentMark;看 GC 日志 gc*。JDK 工具:jstat -gcutil、jcmd GC.heap_info、jmap。调用链体感:请求分配对象 → 堆不足 → 进入 SafePoint → mutator 停 → 回调 RT 尖刺。
订单/售后线上怎么露馅:售后导出大 Excel 在支付同进程 → Old 涨 → 混合 GC 变长 → 支付 P99 从 80ms 变 2s;Xmx≥limit → cgroup OOMKill,Pod 重启,回调依赖渠道重试+本地幂等才不丢单。
排查时看什么能验证你懂了底板:看:GC 日志 Pause、Allocation Rate、Old Occupancy;K8s OOMKilled;线程 jstack 是否大量 VM Thread/GC task 时段;支付成功率是否与 GC 尖刺同秒。
容器 JVM 起步(示例)
# Deployment: memory request/limit 2Gi
JAVA_TOOL_OPTIONS: >-
-XX:+UseG1GC -XX:MaxGCPauseMillis=200
-XX:MaxRAMPercentage=65.0
-XX:+AlwaysPreTouch
-Xlog:gc*:file=/logs/gc.log:time,uptime,level,tags
# 原则:MaxRAMPercentage 后堆仍 < limit,留 Metaspace/Direct/线程栈
- 支付服务独立 Deployment;回调 Executor 单独池,拒绝策略
CallerRuns慎用(会反压 Tomcat)。 preStop:sleep 若干秒 + 先 readiness=false,等 in-flight 回调结束再杀。- 大促前用生产采样流量压一轮,盯 GC Pause P99 与支付成功率同屏。
-XX:MaxDirectMemorySize,降连接或提 limit,别只加 Xmx。我的反思与思考
我的反思与思考
T-Found-XJUC:回调池、AQS、ConcurrentHashMap、库存 CAS
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 池/AQS/库存路径骨架在
- 缺完整 jstack 对照集
- 跨机互斥边界需结合 MySQL/Redis 节
回调池路径
flowchart TD
CB[支付回调]-->Idem[幂等键]
Idem-->Pool[有界池]
Pool -->|满| Reject[拒绝+渠道重试]
Pool --> Biz[短事务标已付]
Biz --> OB[Outbox]
库存多实例
flowchart LR
A[实例A Atomic--]-->Wrong[各飞]
B[实例B Atomic--]-->Wrong
C[Redis DECR/DB条件更新]-->OK[权威]
跨行业/跨场景落地(案例归纳)
完整业务场景:营销/拼团/秒杀(用户、预算账户、库存预占)。业务焦点:预占并发。峰值/约束:开团瞬时;名额临界并发;补贴预算闸门。验收:名额不超发;FAIL 必退;补贴账可对;超卖=0。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:Redis DECR+DB 对账。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:JVM Atomic 多副本。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:超员成团、双退/漏退、补贴资损。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) Lua 2) 补偿 3) 对账 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:超卖=0(示意)。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:回调打满。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:舱壁池+Abort+告警。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:CachedThreadPool。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 有界 2) 隔离 3) 限流 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:拒绝可观测(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:锁内调 HTTP。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:锁外 IO。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局 synchronized 包整单。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 缩临界区 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RT 回落(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:双退。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:状态机条件更新+唯一退款单。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:只靠分布式锁。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 唯一键 2) version 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:双退=0(示意)。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
高并发贯穿:大促回调 QPS×RT≈线程占用(Little's Law)。
底板结构/算法/协议:AQS:volatile state + CLH 风格等待队列;acquire 失败 park;释放 unpark 后继。ReentrantLock/CountDownLatch/Semaphore 全建在这上。ThreadPoolExecutor:ctl 打包 runState+workerCount;任务路径:核心线程→队列→最大线程→拒绝策略。ConcurrentHashMap:数组+链表/红黑树;扩容 transfer 按桶迁移;sizeCtl 协调。
源码/实现路径(认知级):路径:AbstractQueuedSynchronizer.acquireQueued / addWaiter;ThreadPoolExecutor.execute→addWorker;ConcurrentHashMap.putVal→treeifyBin/transfer。锁竞争看 jstack 的 park 与 -locked。
订单/售后线上怎么露馅:退款渠道客户端用无界队列线程池→堆积 OOM;库存用 AtomicInteger 只适合单机演示,多实例必须 Redis/DB 原子。CHM 作本地「退款中」集合,扩容尖刺会放大 P99。
排查时看什么能验证你懂了底板:看:池 Active/Queue/Reject;锁 blocked 线程;DB 死锁日志;业务幂等冲突计数(正常重放 vs bug)。
支付回调舱壁池(示意)
ThreadPoolExecutor payCallbackPool = new ThreadPoolExecutor(
16, 32, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(500),
new ThreadFactoryBuilder().setNameFormat("pay-cb-%d").build(),
new AbortPolicy() // 拒绝要打点+依赖渠道重试,别静默丢
);
// 禁止:Executors.newCachedThreadPool() 无界洪水
- 回调入口:先唯一键 insert,冲突当成功返回;再异步推 Outbox。
- 库存多实例:Redis
DECR/Lua或 DBUPDATE ... WHERE qty>=?,别信单机 Atomic。 - 池指标挂看板:reject>0 立刻扩或限流,别先加机器盲扩。
并发控库存
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| DB 乐观锁 version/条件更新 | 强、可审计 | 热点行争用 | 低 | 中低并发 SKU |
| Redis DECR+异步落库 | 高 | 要补偿 | 中 | 秒杀预占 |
| 分布式锁再读改写 | 易错用 | 锁粒度大则慢 | 中 | 慎:锁内别调远端 |
| JVM Atomic 多副本 | 错 | 数据各飞 | — | 禁止 |
我的反思与思考
我的反思与思考
T-Found-XMySQL/InnoDB:订单行锁、幂等、分摊不平
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 幂等/短事务要点在
- 缺分库分表迁移全案
- 锁等待排查样例不够多
支付短事务
flowchart LR
Begin-->Idem[INSERT幂等]
Idem-->Upd[条件更新状态]
Upd-->Commit
Commit-->HTTP[事务外调渠道]
间隙锁踩坑
flowchart TD
RR[RR范围]-->Gap[gap锁]
Gap-->Dead[死锁/等待]
Fix[点查键/缩范围/短事务]-->OK
底板结构/算法/协议:组提交;条件更新做态机;唯一键防重。
源码/实现路径(认知级):InnoDB trx→binlog;业务 INSERT idem。
订单/售后线上怎么露馅:HTTP 放事务内拖死连接。
排查时看什么能验证你懂了底板:看 innodb_trx、锁等待、幂等冲突。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:连点双单。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:UNIQUE+幂等。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先查后插。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 唯一索引 2) 冲突转幂等 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:双单=0。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:双1刷盘。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:sync 分级。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局同步拖垮。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链路分级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RPO 可解释。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:小数误差。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:整数分+尾差。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:浮点金额。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分单位 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:分摊平衡。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:热点行。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一索引(order_no+client_token / channel_txn_id);条件更新+version;短事务;慢查询 long_query_time≤1s;连接池分级;核心与报表隔离;禁止长事务包外部调用。 结合本案原要点:分段/队列。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单行 FOR UPDATE。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆热 2) 限流 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:锁等待下降。工程目标:回调重复下资损工单显著下降;写 QPS 大促可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
EXPLAIN 清单
-- type/ref/rows/Extra
EXPLAIN SELECT * FROM orders WHERE order_no=?;
-- 禁止:无键深翻页;索引列函数
高并发贯穿:大促插入热点页与 gap lock 等待。
底板结构/算法/协议:聚簇索引叶子=整行;二级索引叶子=主键。MVCC:undo 链+Read View。锁:record / gap / next-key;UPDATE 加锁范围由检索条件是否走唯一索引决定。redo 崩溃恢复;undo 回滚+MVCC。
源码/实现路径(认知级):认知路径:优化器选索引→InnoDB handler 加锁→行在 page 内;死锁检测 rollback 成本低者。SHOW ENGINE INNODB STATUS;performance_schema.data_locks(8.0)。EXPLAIN:type/key/rows。
订单/售后线上怎么露馅:退款 SELECT ... FOR UPDATE 未走 after_sale_id 唯一键而扫状态→锁范围扩大→并发售后排队;支付回调与订单更新死锁(两事务锁序相反)。分摊用浮点或先入为主舍入导致行合计≠头。
排查时看什么能验证你懂了底板:看:锁等待/死锁日志;EXPLAIN;innodb_row_lock_time;业务「幂等冲突」「分摊不平衡」告警。
幂等 + 状态机条件更新
-- 支付回调幂等
INSERT INTO pay_idempotent(channel, trade_no, order_id, created_at)
VALUES (?, ?, ?, NOW()); -- UNIQUE(channel, trade_no)
-- 仅允许 CREATED -> PAID
UPDATE orders SET status='PAID', pay_time=NOW()
WHERE order_id=? AND status='CREATED';
-- row_count=0 → 查现态,已是 PAID 则当成功
- 售后单
UNIQUE(after_sale_id)+ 退款 attempt 表唯一键,禁「无条件 UPDATE 金额」。 - 分摊:整型分到分,末行吃差;落
order_discount_allocation。 - 长事务:回调里禁调外部 HTTP;先落库再异步。
我的反思与思考
我的反思与思考
T-Found-XRedis:秒杀预占、过期、热 Key
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 预占/击穿骨架在
- 缺 Cluster 槽迁移实战
- 大 Key 治理清单未成 Runbook 全集
预占与账本
flowchart LR
Dec[DECR库存]-->OK{>0?}
OK -->|是| OB[异步落单]
OK -->|否| Fail
OB-->DB[(DB权威对账)]
击穿穿透雪崩
flowchart TD
Miss-->Mutex[互斥/逻辑过期]
BadId-->Bloom[布隆/空值]
Expire-->Jitter[TTL抖动]
跨行业/跨场景落地(案例归纳)
完整业务场景:营销/拼团/秒杀(用户、预算账户、库存预占)。业务焦点:热 Key。峰值/约束:开团瞬时;名额临界并发;补贴预算闸门。验收:名额不超发;FAIL 必退;补贴账可对;超卖=0。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:分桶+本地缓存。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单 Key DECR。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:超员成团、双退/漏退、补贴资损。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分片键 2) 限流 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:热点可扩。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:跨区 Token。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:区标识路由。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局一套 Redis。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分区域 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:串区=0。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:误删他方锁。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:token+Lua。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:DEL 裸钥匙。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 安全删 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:误伤=0。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:轨迹 Hash。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:预占用 Lua/DECR+TTL;热 Key 分桶;大 Key 拆段;短 TTL 会话/验证码;账本禁止只放 Redis;Cluster 槽迁移窗口冻结写热点;慢查询与 eviction 策略入大促清单。 结合本案原要点:拆 Key/压缩。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单 Key 10MB。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆 2) 扫描治理 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:阻塞下降。工程目标:大促预占 QPS 可为平峰数倍~一个数量级;对账差异分钟~小时级收敛(示意)。 禁止将示意区间写成未公开精确 KPI。
高并发贯穿:大促热 Key 带宽打满。
底板结构/算法/协议:主线程 aeProcessEvents:读套接字→命令→执行→写回;过期:惰性删除+activeExpireCycle 抽样。String/ziplist/listpack/hashtable/skiplist 等编码随长度切换。RDB/AOF;主从复制 backlog。
源码/实现路径(认知级):源码认知:server.c processCommand;expire.c;decr 在 t_string.c。集群:CRC16 槽迁移。慢命令 SLOWLOG;INFO commandstats。
订单/售后线上怎么露馅:用 KEYS * 运维扫键→阻塞→支付读库存全超时;热 SKU 单 Key DECR QPS 打满单核;缓存当账:Redis 丢了但 DB 未补→超卖或少卖。
排查时看什么能验证你懂了底板:看:instantaneous_ops_per_sec、blocked、evicted、hot key;业务预占失败率与 DB 对账差。
预占 Lua(示意)
-- KEYS[1]=stock:{sku} ARGV[1]=qty
local left = redis.call('GET', KEYS[1])
if not left or tonumber(left) < tonumber(ARGV[1]) then return -1 end
return redis.call('DECRBY', KEYS[1], ARGV[1])
-- 成功后发 MQ 落单;超时关单再 INCRBY 补偿(幂等)
- 预占成功写
reserve_id到 DB/Outbox,禁只改 Redis。 - 热卖 SKU:分桶
stock:sku:{{0..15}}或本地限流+多副本只读。 - 禁止生产
KEYS;用 SCAN;大 Key 拆。
锁 vs 队列削峰
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| Redis 锁短临界区 | 互斥 | 锁粒度大易崩 | 中 | 库存片段更新 |
| 队列削峰+单消费者改库存 | 平滑 | 延迟 | 中 | 大促下单 |
| DB 乐观锁 | 准 | 热点差 | 低 | 平峰 |
我的反思与思考
我的反思与思考
T-Found-XKafka:高吞吐事件、对账流、分区有序
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 分区/ISR/幂等边界在
- 缺 Connect/CDC 作业级深度
- EOS 边界勿背成「恰好一次账本」
分区日志
flowchart LR
Prod-->Part[Partition]
Part-->Seg[Segment]
Seg-->ISR
Cons[Consumer]-->Off[Offset提交]
乱序 vs 有序
flowchart TD
Rand[随机分区]-->Disorder[同单乱序]
Key[orderId key]-->Order[分区内有序]
Order-->Idem[业务幂等]
跨行业/跨场景落地(案例归纳)
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:乱序。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:waybillId key+upsert。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无 key。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 强制 key 2) 序号 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可校正。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:EOS 误解。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:外储幂等+对账。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当账本双记。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) Inbox 2) T+1 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:差账可清。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:RPO。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:acks=all min.ISR≥2。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:acks=1。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 隔离 topic 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:演练达标。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:热点分区。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:加盐。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:单商户 key。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 扩分区 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:lag 回落。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
我的反思与思考
高并发贯穿:突发流量靠分区并行。
底板结构/算法/协议:Partition=有序 append log(segment 文件);Leader 写,Follower 拉;ISR=同步副本集合;HW/LEO 控制可见性。acks=all 等 ISR 达标。消费者 offset 存群组协调(__consumer_offsets)。
源码/实现路径(认知级):路径认知:Producer → RecordAccumulator → 网络 → ReplicaManager append;Consumer poll→处理→commitSync。看 under_replicated_partitions、isr_shrinks。
订单/售后线上怎么露馅:支付成功事件用随机分区→同单乱序,OMS 先见取消后见支付;消费者自动提交→处理失败丢位移→漏单或重复看业务幂等。
排查时看什么能验证你懂了底板:看:ISR、URP、consumer lag、生产 error-rate;业务 Inbox 命中率。
- 订单域关键事件:
key=orderId;消费端 Inbox 表去重。 - 交易核心若要事务消息语义,中厂常 Outbox+Kafka 或直接 RocketMQ 事务消息(见矩阵)。
- lag>阈值告警,先扩消费者再查慢处理。
我的反思与思考
T-Found-XRabbitMQ:中厂轻量异步与重试
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- Confirm/Ack/DLX 骨架在
- 缺 quorum 运维全案
- 高吞吐场景应转 Kafka/Rocket,本节勿吹满
Confirm/Ack
flowchart LR
Pub-->Confirm[Broker确认]
Q[Queue]-->Cons
Cons-->Biz
Biz-->Ack
Biz -->|失败| DLX
适用边界
flowchart TD
Small[中厂通知]-->Rabbit
Huge[日志洪峰]-->Kafka
Pay[支付核心]-->RocketOrOutbox
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:短信/邮件。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:durable 队列 + publisher confirm;consumer manual ack;prefetch 按门店/下游能力限流;失败入 DLX;关键旁路与核心账务解耦;路由键变更必须探测消息验收。 结合本案原要点:持久化+confirm+手动ack。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:自动ack在前。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 改 ack 序 2) DLX 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:到达率升。工程目标:重启无丢单(persistent/quorum 取向);高峰通知成功率回升(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:坏 JSON。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:durable 队列 + publisher confirm;consumer manual ack;prefetch 按门店/下游能力限流;失败入 DLX;关键旁路与核心账务解耦;路由键变更必须探测消息验收。 结合本案原要点:nack 不 requeue→DLX。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无限 requeue。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 工单 2) 修数 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:刷屏停。工程目标:重启无丢单(persistent/quorum 取向);高峰通知成功率回升(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:内存高水位。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:prefetch+扩消费者。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:垂直硬撑。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 限流 2) 迁 Kafka 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:恢复。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:绑错 key。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:durable 队列 + publisher confirm;consumer manual ack;prefetch 按门店/下游能力限流;失败入 DLX;关键旁路与核心账务解耦;路由键变更必须探测消息验收。 结合本案原要点:探测消息。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:静默无消费。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 上线探针 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:静默=0。工程目标:重启无丢单(persistent/quorum 取向);高峰通知成功率回升(示意)。 禁止将示意区间写成未公开精确 KPI。
高并发贯穿:堆积时内存/磁盘告警。
底板结构/算法/协议:Connection/Channel;消息进 queue(可持久化);publisher confirm;consumer ack/nack/requeue。经典队列镜像 vs Quorum(Raft)。
源码/实现路径(认知级):路径:Channel.basicPublish → 路由到 queue → basicConsume 回调;未 ack 堆积→prefetch 调控。管理台看 Ready/Unacked。
订单/售后线上怎么露馅:售后通知短信:自动 ack 放在业务成功前→一异常就丢通知;requeue 无上限→毒消息刷屏。
排查时看什么能验证你懂了底板:看:Unacked、DLX 长度、节点磁盘;业务通知到达率。
- prefetch 设合理(如 20);业务成功再 ack。
- 毒消息:nack 不 requeue → DLX → 人工。
- 流量上来评估迁 Kafka/RocketMQ,别垂直硬撑。
我的反思与思考
T-Found-XRocketMQ:订单事务消息、延时关单
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 事务消息/关单要点在
- 存储链金标以 #ency-fm-rocket 为准
- 本节是入口不是金标正文
底板结构/算法/协议:消费幂等键≈业务唯一键;半消息回查必须查真实库态。
源码/实现路径(认知级):TransactionListener#checkLocalTransaction。
订单/售后线上怎么露馅:回查写死 UNKNOWN。
排查时看什么能验证你懂了底板:半消息堆积+差账。
我的反思与思考
高并发贯穿:发送失败可查询回查。
底板结构/算法/协议:所有主题消息顺序追加 CommitLog;ConsumeQueue 存偏移索引。事务:Half 消息对消费不可见→本地事务→Commit/Rollback;Broker 回查 Producer。TransactionListener。复制:同步/异步双写;刷盘 SYNC/ASYNC。
源码/实现路径(认知级):路径:TransactionMQProducer → half → executeLocalTransaction → commit;消费 MessageListenerConcurrently。刷盘/复制看 Broker 配置与发送 RT。
订单/售后线上怎么露馅:本地事务成功但 commit 丢→靠回查;回查实现错误把已支付判回滚→OMS 永不到。延时关单消息乱,已支付被关→需状态机守卫。
排查时看什么能验证你懂了底板:看:半消息堆积、发送失败、消费重试 %DLQ%;业务支付与 OMS 差账。
本地事务+关单守卫(示意)
// 关单消费者
if (order.status == PAID || order.status == CLOSED) return SUCCESS; // 幂等
if (order.status == CREATED) markClosedAndReleaseStock();
- 支付→OMS:优先事务消息或 Outbox,二选一写清 ADR。
- 回查方法必须能根据 orderId 真实查库,禁写死 UNKNOWN。
- DLQ 必告警+可重放工具。
我的反思与思考
底板结构/算法/协议:体顺序写 CommitLog;ConsumeQueue 是队列视图索引;消费位点按组+队列。
源码/实现路径(认知级):DefaultMessageStore#putMessage → CommitLog#putMessage;Reput 构建 CQ。
订单/售后线上怎么露馅:CQ 损坏→空洞/重复;业务必须幂等。
排查时看什么能验证你懂了底板:put耗时、磁盘、consumeDiff、DLQ。
发送到消费
flowchart LR
App-->NS[NameServer]
App-->B[Broker]
B-->CL[(CommitLog)]
CL-->CQ[(ConsumeQueue)]
C[Consumer]-->B
支付成功→履约
flowchart TD
PayOK-->Outbox-->MQ[RocketMQ]
MQ-->OMS
Fail-->Retry-->DLQ-->Ticket[工单修数]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:履约削峰。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Topic 按链路分级(支付结果/履约/营销);orderId 或业务键作 MessageQueue 选择键;刷盘/复制:金融取向 SYNC_FLUSH+同步/DLedger,电商履约可 ASYNC_FLUSH+SYNC_MASTER;消费 maxReconsumeTimes 绑定告警;DLQ 人工工单;半消息/事务消息边界只包本地事务,禁止包远程 HTTP。 结合本案原要点:ASYNC_FLUSH+SYNC_MASTER;订单键顺序。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:热点队列。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链路分级刷盘与隔离 Topic,压测发送 RT;2) 热点顺序队列加盐或扩队列,避免单队列打爆;3) 毒丸进 DLQ,禁止无限重试;4) 切换/堆积演练:扩消费者与降级非核心,核对半消息反查。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:发送 RT 压回可接受区间(公开分享常见目标:数十 ms 级)。工程目标:发送 RT 常从数百 ms 压回数十 ms 级;堆积扩容后小时级消化(示意)。金融侧以 RPO≈0 取向与对账闭环为门禁(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:结果事件。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Topic 按链路分级(支付结果/履约/营销);orderId 或业务键作 MessageQueue 选择键;刷盘/复制:金融取向 SYNC_FLUSH+同步/DLedger,电商履约可 ASYNC_FLUSH+SYNC_MASTER;消费 maxReconsumeTimes 绑定告警;DLQ 人工工单;半消息/事务消息边界只包本地事务,禁止包远程 HTTP。 结合本案原要点:SYNC_FLUSH+同步/DLedger。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:异步切主丢尾。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链路分级刷盘与隔离 Topic,压测发送 RT;2) 热点顺序队列加盐或扩队列,避免单队列打爆;3) 毒丸进 DLQ,禁止无限重试;4) 切换/堆积演练:扩消费者与降级非核心,核对半消息反查。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RPO 取向≈0 + 对账闭环。工程目标:发送 RT 常从数百 ms 压回数十 ms 级;堆积扩容后小时级消化(示意)。金融侧以 RPO≈0 取向与对账闭环为门禁(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:节点事件。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Topic 按链路分级(支付结果/履约/营销);orderId 或业务键作 MessageQueue 选择键;刷盘/复制:金融取向 SYNC_FLUSH+同步/DLedger,电商履约可 ASYNC_FLUSH+SYNC_MASTER;消费 maxReconsumeTimes 绑定告警;DLQ 人工工单;半消息/事务消息边界只包本地事务,禁止包远程 HTTP。 结合本案原要点:至少一次+upsert。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无 key 乱序。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链路分级刷盘与隔离 Topic,压测发送 RT;2) 热点顺序队列加盐或扩队列,避免单队列打爆;3) 毒丸进 DLQ,禁止无限重试;4) 切换/堆积演练:扩消费者与降级非核心,核对半消息反查。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:乱序可校正。工程目标:发送 RT 常从数百 ms 压回数十 ms 级;堆积扩容后小时级消化(示意)。金融侧以 RPO≈0 取向与对账闭环为门禁(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:状态通知。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Topic 按链路分级(支付结果/履约/营销);orderId 或业务键作 MessageQueue 选择键;刷盘/复制:金融取向 SYNC_FLUSH+同步/DLedger,电商履约可 ASYNC_FLUSH+SYNC_MASTER;消费 maxReconsumeTimes 绑定告警;DLQ 人工工单;半消息/事务消息边界只包本地事务,禁止包远程 HTTP。 结合本案原要点:有限重试+DLQ。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:重试打爆门店。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 链路分级刷盘与隔离 Topic,压测发送 RT;2) 热点顺序队列加盐或扩队列,避免单队列打爆;3) 毒丸进 DLQ,禁止无限重试;4) 切换/堆积演练:扩消费者与降级非核心,核对半消息反查。 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:下游错误率回落。工程目标:发送 RT 常从数百 ms 压回数十 ms 级;堆积扩容后小时级消化(示意)。金融侧以 RPO≈0 取向与对账闭环为门禁(示意)。 禁止将示意区间写成未公开精确 KPI。
刷盘/复制
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| SYNC+同步 | RPO 最小 | RT 高 | 高 | 账务核心 |
| ASYNC+同步 | 均衡 | 掉电丢 PageCache | 中 | 履约常见 |
| ASYNC+异步 | 吞吐 | 切主丢尾 | 低 | 可丢可补旁路 |
我的反思与思考
T-Found-X类比表 + 方案选型矩阵(服务落地,不炫博学)
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 选型矩阵可拍板用
- 缺每格 ADR 链接与压测数字
- 矩阵≠已完成中间件落地
支付→OMS 选型
flowchart TD
Need[可靠到达]-->Q{已有中间件}
Q -->|Rocket| TX[事务消息/Outbox]
Q -->|Kafka| OB[Outbox+Inbox]
Q -->|仅Rabbit| Small[小流量可/核心慎]
锁选型
flowchart LR
Callback[防重回调]-->DBU[DB唯一键]
Stock[秒杀预占]-->Redis
Refund[防双退]-->FSM[状态机+唯一退款单]
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:支付达OMS。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Topic 按链路分级(支付结果/履约/营销);orderId 或业务键作 MessageQueue 选择键;刷盘/复制:金融取向 SYNC_FLUSH+同步/DLedger,电商履约可 ASYNC_FLUSH+SYNC_MASTER;消费 maxReconsumeTimes 绑定告警;DLQ 人工工单;半消息/事务消息边界只包本地事务,禁止包远程 HTTP。 结合本案原要点:Rocket/Outbox。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:裸发MQ无幂等。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) ADR 2) Inbox 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:差账→0。工程目标:发送 RT 常从数百 ms 压回数十 ms 级;堆积扩容后小时级消化(示意)。金融侧以 RPO≈0 取向与对账闭环为门禁(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:渠道结果。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:同步刷盘取向+对账。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:异步当核心。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分级 2) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RPO可述。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:轨迹。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:Kafka。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:Rabbit硬扛。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 迁 2) upsert 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:lag可控。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:通知。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:Rabbit。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:一上来全集群Kafka。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 边界表 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:成本可控。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
组件间类比(选型用)
| 对比 | 人话 | 订单域怎么选 |
|---|---|---|
| 缓存 vs DB | 柜台小票 vs 会计总账 | 预占可走 Redis,钱与状态以 DB 为准 |
| 锁 vs 队列削峰 | 门口拦人 vs 发号排队 | 秒杀下单优先队列/限流,锁只护短更新 |
| Kafka vs RocketMQ vs Rabbit | 高速日志车道 vs 交易快递仓 vs 小区邮局 | 见下表 |
| Redis 锁 vs DB 乐观锁 | 门口保安 vs 改账时核对版本 | 跨服务互斥短临界用 Redis;行级状态用 DB |
三种 MQ 选型矩阵
| 问题 | Kafka | RocketMQ | RabbitMQ | 推荐 |
|---|---|---|---|---|
| 支付成功→OMS 可靠 | Outbox+自建 | 事务消息香 | 小流量可 | RocketMQ 或 Outbox+Kafka |
| 延时关单 | 需额外 | 延时级别/定时 | 插件/TTL | RocketMQ |
| 日志/轨迹海量 | 最强 | 可 | 弱 | Kafka |
| 中厂轻量通知 | 重 | 中 | 轻 | Rabbit 起步 |
| 分区有序 | Key 分区 | 顺序消息 | 单队列 | 按已有中间件 |
锁 / 一致性方案矩阵
| 问题 | 方案 A | 方案 B | 怎么选 |
|---|---|---|---|
| 防重复支付回调 | DB 唯一键 | Redis SETNX | DB 唯一键托底,Redis 仅加速 |
| 库存预占 | Redis DECR | DB 条件更新 | 秒杀 Redis+补偿;平峰 DB 也可 |
| 防并发退两次 | 状态机条件更新 | 分布式锁 | 状态机+唯一退款单,锁可选 |
| 跨库支付→OMS | Outbox | Seata AT | 中厂 Outbox |
- 「统一上 Kafka」却不会做业务幂等
- 用 JVM 锁解决多实例库存
- 把 Redis 当唯一账本
基础件落地总清单
- JVM:堆与 limit 对齐,GC 日志开,支付池隔离
- JUC:有界队列,禁 CachedThreadPool 上回调
- MySQL:幂等唯一键+条件更新,分摊整数分
- Redis:Lua 预占可重建,禁 KEYS
- MQ:Inbox 去重,lag/DLQ 告警,关单状态守卫
- 矩阵:每种选型写一句「为何不选另一个」进 ADR
我的反思与思考
我的反思与思考
S-MS分布式微服务:卡点 · 难点 · 亮点
服务业务闭环:下单/支付/OMS/银行拆分场景
挂回:S2 方法论 → 本模块 → B 域落地 / V1 裁剪
flowchart TB
subgraph Entry[接入]
GW[网关限流鉴权]
end
subgraph Runtime[运行时治理]
Disc[发现/配置]
CB[超时重试熔断]
Lim[隔离舱壁]
end
subgraph Data[数据与一致]
Own[数据归属]
OB[Outbox/对账]
end
subgraph Rel[发布韧性]
Gray[灰度]
Roll[一键回滚]
end
U[用户请求] --> GW --> Disc --> CB --> Lim
Lim --> Own
Own --> OB
GW --> Gray --> Roll
总览:卡点 / 难点 / 亮点一张图
| 类型 | 是什么 | 闭环落点 |
|---|---|---|
| 卡点 | 最容易让项目停摆的组织+技术摩擦 | 边界、事务、治理、发布、数据归属、协作 |
| 难点 | 技术深水区,出事故难复盘 | 一致、重试风暴、雪崩、幂等、追踪、配置密钥、测试 |
| 亮点 | 面试/方案加分:化解路径+何时不拆 | 模式+架构+业务案例+并发考点连讲 |
S-MS卡点详解(最容易卡住项目)
挂回:S-MS 总览 → 卡点 → 难点 → 亮点
卡点 A · 拆分边界说不清
我的反思与思考
我的反思与思考
我的反思与思考
卡点 B · 分布式事务卡住交付
我的反思与思考
我的反思与思考
我的反思与思考
卡点 C · 服务治理缺失
sequenceDiagram
participant U as 用户
participant O as 订单服务
participant P as 支付服务
participant R as 风控
participant DB as 慢DB
U->>O: 下单
O->>R: 同步风控(无超时)
R->>DB: 慢查询
Note over O: 线程池耗尽
O-->>U: 大量超时
U->>O: 重试风暴
O->>P: 连带拖垮
我的反思与思考
我的反思与思考
我的反思与思考
卡点 D · 发布与回滚
Before(事故前/错误做法)
- 全量发布
- 回滚要开会
- 无黄金指标门禁
After(止血后/正确做法)
- 灰度/金丝雀
- 预设回滚条件
- 错误率/P99 自动或一键回滚
我的反思与思考
我的反思与思考
我的反思与思考
卡点 E · 团队协作
我的反思与思考
我的反思与思考
我的反思与思考
S-MS难点深水区(技术)
挂回:卡点未解先别深潜;难点服务 B 域资损场景
难点 1 · 一致性与幂等
我的反思与思考
我的反思与思考
我的反思与思考
难点 2 · 超时、重试风暴与雪崩
症状:下游已慢,上游重试倍增,线程池与连接池打满。
止血:降超时、断重试、熔断、入口限流、扩容只作辅助。
我的反思与思考
我的反思与思考
我的反思与思考
难点 3 · 分布式追踪与复盘
我的反思与思考
我的反思与思考
我的反思与思考
难点 4 · 测试金字塔在微服务下失效
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
S-MS亮点(可讲加分)与「何时不该拆」
挂回:S-MS → V1 → S3 E2E
亮点话术骨架(绑业务)
| 案例 | 模式+架构化解 | 并发一击 |
|---|---|---|
| 下单 | 责任链校验 + 状态机 + Outbox | 库存预占 CAS/唯一约束 |
| 支付 | 模板方法回调 + 幂等契约 | 回调并发去重 |
| OMS | 领域事件驱动仓储 | 取消与发货竞态 |
| 银行 | 记账命令 + 分片降热点 | 热点账户队列化 |
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
- 看入口错误率/P99 → 是否发布窗口。
- 按 traceId/单号串调用链,找第一个饱和依赖。
- 止血:限流、熔断、降级、回滚(预设条件)。
- 查重试风暴与线程池拒绝。
- 数据面:幂等冲突、outbox 堆积、对账差异。
- 复盘写回 S2 模板,更新超时矩阵。
我的反思与思考
S-MS-X分布式微服务极致落地(挂正逆向脊柱)
极致章导航
flowchart TB
Hub-->B[boundary]
Hub-->O[orch]
Hub-->G[govern]
Hub-->Obs[observe]
Hub-->S[scale]
Hub-->D[drills]
资损闭环
flowchart LR
Idem-->OB-->Inbox-->Reconcile[对账]
底板结构/算法/协议:归属/幂等/Outbox/超时/舱壁。
源码/实现路径(认知级):见各子章源码路径。
订单/售后线上怎么露馅:共享库假拆。
排查时看什么能验证你懂了底板:差账与熔断指标。
服务业务闭环:下单→优惠→库存→支付→OMS→售后全链
挂回:S-MS → 本极致章 → 交叉大促 / S-Year M09
拆服务是为了让「买成/退成」在组织与峰值下仍可对账、可回滚、可扩容——不是为了服务个数好看。
验收方:交易产品、财务对账、值班 SRE。怕边界扯皮、重复支付/退款、雪崩、半灰度资损。
用数据归属+调用形态+幂等/Outbox+超时舱壁+全链路压测把分布式不确定性压成可验证闭环。
同步/编排/事件是手段;一致性窗口与爆炸半径是约束;指标与演练是验收。
若没有它,业务哪一步会坏:边界不清→双写打架;无幂等→重复扣款;无舱壁→库存拖死下单;无资损告警→隔天财务才发现。
背景:大促前交易域要完成服务边界复盘与治理加固;历史「订单库万能」导致优惠/库存/售后互相 join。
In Scope:订单/优惠/库存/履约/售后边界 ADR;同步 vs 事件决策树;超时矩阵;Outbox/Inbox;限流熔断舱壁;资损告警;故障注入剧本。
Out of Scope:服务网格全家桶、自研注册中心、跨城强一致。
主流程:钉验收句→拆边界→标卡点→选调用形态→验压测/对账。
异常流程:下游超时注入、重复回调、重复退款、灰度回滚。
验收:跨服务事务数下降;支付/退款幂等冲突可解释;全链路压测报告签字;中厂裁剪表可执行。
上线观察:大促窗口:支付成功率、退款成功率、Outbox 堆积、熔断次数、P99、资损告警归零。
flowchart TB
subgraph Spine[正逆向脊柱]
O[订单聚合]
P[优惠试算/分摊]
I[库存预占/扣减]
Pay[支付]
OMS[履约 OMS]
AS[售后/退款]
end
O -->|读试算| P
O -->|预占意图 Outbox| I
O -->|支付意图| Pay
Pay -->|支付成功事件| OMS
AS -->|退款/回补事件| I
AS -->|分摊回退读| P
GW[治理:限流熔断舱壁超时] -.-> O
GW -.-> Pay
GW -.-> AS
OB[可观测:trace资损告警] -.-> Spine
| 极致子章 | 锚点 | 一句话 |
|---|---|---|
| 服务划分与数据归属 | #s-ms-x-boundary | 订单/优惠/库存/履约真实边界纠纷 |
| 同步·编排·事件 | #s-ms-x-orch | 超时重试风暴、幂等键、Outbox/Inbox |
| 治理与压测灰度 | #s-ms-x-govern | 舱壁超时矩阵全链路压测对交易影响 |
| 可观测与资损告警 | #s-ms-x-observe | trace 打在正逆向关键节点 |
| 中厂裁剪 vs 大厂 | #s-ms-x-scale | 对照表可执行 |
| 场景题详答 | #s-ms-x-drills | 故障注入/重复支付退款/下游超时 |
- 今天下午就能做:画出订单/优惠/库存/履约/售后五张「写权威表」清单,贴到仓库 ADR。
- 把 Feign 写路径重试关掉;读路径超时改成矩阵表里的数(别全员 5s)。
- 支付回调加唯一键;OMS 消费加 Inbox;预发重放三条重复消息看是否双履约。
微服务极致最小交付
- 写权威表清单
- 超时矩阵进配置
- Outbox+Inbox 跑通支付→OMS
- 舱壁隔离慢依赖
- 资损告警接支付/退款差账
我的反思与思考
S-MS-X服务划分与数据归属:订单 / 优惠 / 库存 / 履约
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 写权威表思路在
- 缺账号/CI 扫描落地配置
- 跨服务禁止 join 的执法工具未写全
写权威
flowchart TB
Ord[(订单库)]-->OnlyOrd[仅订单服务写]
Stk[(库存库)]-->OnlyStk
AS[(售后库)]-->OnlyAS
Ord -.ID/事件.-> Stk
禁止
flowchart LR
Join[跨库join]-->Ban[禁止]
Dual[双写两权威]-->Ban
底板结构/算法/协议:一表一写者;复制只读。
源码/实现路径(认知级):ADR 写权威清单。
订单/售后线上怎么露馅:优惠改订单折扣字段。
排查时看什么能验证你懂了底板:看违规 SQL/账号。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:万能订单库。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:五上下文拆分。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:售后 join 改库存。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 清单 2) 账号 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:跨服事务下降。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:渠道与账务。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:库隔离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:共库图省事。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆 2) 对账 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:合规。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:OMS/WMS。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:线程池按舱壁隔离(支付/查询/异步);队列有界;拒绝策略可观测;库存/名额路径用原子/分段锁,避免全局锁。 结合本案原要点:事件协作。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:同步硬锁三方。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) Outbox 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:短拣可补偿。工程目标:池打满可降级非核心;热点冲突可重试且无双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:店/中央。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:关键 topic RF=3、min.insync.replicas=2、acks=all;分区键=waybillId/orderId;消费 enable.auto.commit=false,幂等外储;lag 看板按消费组;禁止与营销高吞吐 topic 无隔离共挤 ISR。 结合本案原要点:店维归属。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:中央锁店。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分区 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:高峰可扩。工程目标:日事件十万~百万级(示意);lag 分钟级响应;大促事件可为平峰数倍~一个数量级(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:B-F 结算/履约 · B-R 分摊回退
挂回:S-MS 卡点A → 本页 → Outbox 章
高并发贯穿:峰值下同步双写最易资损;热点 SKU 库存必须独立扩展。
- 钉 每张写表只有一个服务可写;跨服务写必须走事件+幂等。
- 拆 主:下单写订单;支:试算/预占/支付/履约;异:超时释放;逆:退款回补。
- 标 双写、跨库 join、共享 DB「先拆进程」、优惠结果不落快照。
- 选 模块化单体包边界 → 按资损边界拆进程;读可 RPC,写用 Outbox。
- 验 禁止他库账号;跨服务事务数监控;故障注入双写检测。
真实边界纠纷四则(公司味)
| 纠纷 | 错误拆法 | 落地裁定 | 若坚持错误会坏哪步 |
|---|---|---|---|
| 优惠要不要进订单库 | 订单服务直接改规则表 | 规则在优惠域;下单落 discount_snapshot+分摊行 | 规则热更导致历史单无法退 |
| 库存预占谁发起 | 库存回调直接改订单状态 | 订单发预占意图;库存回执;订单状态机推进 | 回执乱序「无单有占」 |
| OMS 能否改支付态 | 仓配缺货直接标支付失败 | OMS 只发履约失败事件;支付/售后域决定退 | 财务科目错乱 |
| 售后改分摊 | 售后服务 UPDATE 原订单优惠行 | 售后持退款单+回退分摊;原单只读锁定 | 重复退/分摊不平衡 |
边界落地形态
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 模块化单体+schema 边界 | 单库事务强 | 扩展受单体限 | 低运维 | 中厂默认 |
| 按资损边界拆进程+Outbox | 最终一致+对账 | 高(可独立扩) | 中 | 支付/库存/售后异变频率不同时 |
| 按代码目录硬拆+共享库 | 假一致 | 差(分布式单体) | 高事故 | 禁止 |
我的反思与思考
我的反思与思考
我的反思与思考
S-MS-X同步调用 vs 编排 vs 编排+事件
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- Outbox/Inbox 骨架在
- 缺半消息/堆积联调剧本全集
- 超时矩阵需按你们环境重填
同步vs事件
flowchart TD
Read[读试算]-->Sync[同步短超时]
Write[付后通知]-->Evt[Outbox事件]
Evt-->Inbox[下游Inbox]
重试风暴
flowchart LR
Timeout-->Retry-->Amplify[放大]
Amplify-->Bulkhead[舱壁+限流+幂等]
底板结构/算法/协议:读可同步短超时;写侧跨服务默认 Outbox→MQ→Inbox。半消息/Outbox 与本地事务同提交。写路径 Feign 重试默认关闭。
源码/实现路径(认知级):CreateOrderAppService 写 outbox;OmsInboxConsumer 唯一键;超时矩阵配置。
订单/售后线上怎么露馅:先发 MQ 再写库丢事件;写重试制造双履约。
排查时看什么能验证你懂了底板:看:Outbox 年龄、Inbox 冲突、双履约计数。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:必达。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:Outbox+Inbox。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:Feign重试写。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 关写重试 2) 幂等 3) 对账 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:双履约=0。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:要快。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:同步短超时。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:事件试算。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 超时≤100ms 2) 降级无券 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:下单RT可控。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:最终一致。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:事件+补偿。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:两阶段跨库长事务。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 补偿 2) 对账 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可解释。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:超时风暴。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:舱壁+矩阵。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全链路5s。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 矩阵 2) 限流 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:雪崩止。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:支付成功→OMS;售后退款→回补库存/优惠
挂回:S-MS 卡点B → 本页 → T-一致性
高并发贯穿:回调洪峰与大促重试是风暴源;舱壁+退避+熔断必须同时在。
sequenceDiagram
participant Ord as 订单
participant DB as 订单库
participant OB as Outbox轮询
participant MQ as MQ
participant OMS as OMS
participant IB as Inbox
Ord->>DB: 本地事务写订单+outbox
OB->>DB: 拉取未发送
OB->>MQ: 投递 payment_paid
MQ->>OMS: 至少一次
OMS->>IB: 幂等键去重
alt 首次
OMS->>OMS: 创建履约单
else 重复
OMS-->>MQ: ACK 忽略
end
三种形态对照(挂交易)
| 形态 | 典型用法 | 爆炸点 | 必备配套 |
|---|---|---|---|
| 同步 RPC 链 | 下单页试算、风控短判定 | 超时层层放大、线程占满 | 超时预算、舱壁、只读/可降级 |
| 同步编排(编排服务调多方) | 开户类短流程、中厂「下单门面」 | 编排中心变上帝、难扩 | 严格超时、补偿表、勿堆长事务 |
| 编排+事件(状态机+Outbox) | 支付→OMS→WMS、售后回补 | 消息堆积、乱序、重复 | 幂等键、Inbox、对账、延迟队列 |
幂等键设计清单(写死)
| 场景 | 幂等键 | 存储 | 重复语义 |
|---|---|---|---|
| 支付回调 | channel + trade_no | 唯一索引 | 返回首次成功结果 |
| OMS 创建 | order_id + paid_event_id | Inbox | 忽略 |
| 库存确认扣减 | reserve_id 或 order_line_id | 状态机 | 已确认则成功幂等 |
| 退款申请 | after_sale_id + refund_attempt | 退款单唯一 | 禁止第二笔并行 |
| 券回补 | refund_id + coupon_id | Inbox | 忽略 |
- 看堆积量/最老消息年龄;是否发布或 DB 慢。
- 区分「发送失败」与「下游处理慢」:MQ lag vs Inbox 冲突。
- 扩消费者前先查下游饱和与慢 SQL。
- 毒消息进死信+告警,禁止无限重试打爆。
- 对账任务核对支付≈OMS;差异建单。
支付成功通知 OMS
| 解法 | 一致性 | 性能/峰值 | 成本/运维 | 推荐边界 |
|---|---|---|---|---|
| 本地消息表 Outbox | 最终一致可证 | 秒级 | 低 | 默认 |
| RocketMQ 事务消息 | 最终一致 | 高 | 中(依赖 MQ) | 已有可靠 MQ 平台 |
| 同步 Feign 创建 OMS | 看似强、实则脆 | 差(占线程) | 低短线高长线 | 仅内网演示,生产慎 |
| Seata AT 两库 | 强一致幻觉 | 锁成本高 | 高运维 | 无平台组禁止 |
我的反思与思考
我的反思与思考
我的反思与思考
S-MS-X治理:限流熔断舱壁 · 超时矩阵 · 全链路压测 · 灰度回滚
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 舱壁/金丝雀门禁思路在
- 缺全链路压测签字模板全文
- 网格重试等平台细节未展开
超时矩阵
flowchart TB
API-->T1[下单200ms]
API-->T2[支付回调2s]
API-->T3[非核心可丢弃]
灰度资损
flowchart LR
Canary-->Gate{支付/退款成功率}
Gate -->|跌| Rollback
底板结构/算法/协议:超时/重试/舱壁/限流是预算不是默认值;写路径重试默认关;金丝雀门禁盯支付/退款/Outbox 而非只盯 CPU。
源码/实现路径(认知级):配置:超时矩阵表进配置中心;Sentinel/韧性规则按依赖分级;压测剧本含重复回调与下游超时注入。
订单/售后线上怎么露馅:全链路 5s;只压浏览;网格自动重试写放大风暴。
排查时看什么能验证你懂了底板:看:熔断次数、池拒绝、支付成功率、压测签字单。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:全链路压测。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:剧本含资损路径+门禁。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:只压浏览。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 剧本 2) 签名 3) 复盘缺口 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:报告可签字。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:变更窗。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:金丝雀+强门禁。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:周五全量。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 指挥官 2) RTO 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:窗口达标。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:仓配慢。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:舱壁隔离。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:共池拖 OMS。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 拆池 2) 熔断 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:OMS 不挂。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:爆店。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:店维限流。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局一刀。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 键限流 2) 降级 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:不拖全站。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:大促下单/支付回调/售后退款洪峰
挂回:S-MS 卡点C → 本页 → T-K8s 发布
高并发贯穿:秒杀是否与 HPA 联动见 K8s 极致章;治理侧先保证不雪崩。
超时矩阵(示例·交易链)
| 跳 | 预算 | 重试 | 失败策略 |
|---|---|---|---|
| 网关→交易 | 2.0s | 0 | 快速失败+提示 |
| 交易→优惠试算 | 80–120ms | 0 | 降级无券/缓存价 |
| 交易→风控 | 100–150ms | 0 | 高风险拒;超时走人工队列(可配) |
| 交易→库存预占 | 200ms | 幂等可 1 次 | 失败不建单 |
| 支付回调处理 | 1.0s 内落库 | 渠道侧 | 本地幂等;异步 OMS |
| 售后→退款渠道 | 3–5s | 仅幂等查询 | 挂起+对账,禁盲重放退款 |
灰度 / 回滚对交易的影响
| 变更类型 | 灰度策略 | 回滚风险 | 额外闸门 |
|---|---|---|---|
| 兼容 bugfix | 滚动+就绪探针 | 低 | 支付成功率 |
| 优惠口径/分摊 | 金丝雀 1%→5%→全量 | 中(新旧单混) | 分摊不平衡告警;规则版本钉扎 |
| 退款状态机 | 金丝雀+双写影子校验 | 高 | 禁止自动全量;退款成功率+人工抽检 |
| DB schema 不兼容 | expand/contract | 极高 | 禁止蓝绿靠感觉;先扩列 |
- 模型:浏览:下单:支付:售后 = 接近大促比例;含回调与 Outbox。
- 数据:热点 SKU、真实分片键、影子库或染色流量。
- 观察:线程池拒绝、DB 锁等待、MQ lag、熔断、缓存命中。
- 验收:目标 QPS 下支付成功率、P99、错误预算;写出瓶颈 ADR。
- 禁止:只压单接口、用均匀随机打爆连接池却得「胜利」。
我的反思与思考
我的反思与思考
我的反思与思考
S-MS-X可观测:正逆向关键节点 Trace · 资损告警
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 差账指标思路在
- 缺具体 Prometheus 规则全文
- 单号串链工具链需自建
单号串链
flowchart LR
OrderNo-->Pay-->OMS-->AS
Trace[traceId]-->All
资损告警
flowchart TD
Diff[支付成功-OMS到达]-->Alert
Diff2[退款双成功]-->Alert
Diff3[Outbox年龄]-->Alert
底板结构/算法/协议:RED/USE 不够:交易域要「差账指标」——支付成功数 vs OMS 入库数、退款成功 vs 渠道回执、幂等冲突、Outbox 最老年龄。trace 必须带 orderNo/payIntentNo。
源码/实现路径(认知级):指标名示例:pay_success_total、oms_ingested_total、refund_duplicate_total、outbox_oldest_age_seconds;日志结构化含单号;抽样对账任务。
订单/售后线上怎么露馅:隔天财务才发现付了没单;只有 CPU 告警没有差账告警。
排查时看什么能验证你懂了底板:看:差账分钟级、告警到人、单号能点进四库态。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:付了没单。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:差账告警分钟级+Outbox年龄。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:隔天财务。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 指标 2) 值班 3) 补数工具 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:MTTR下降(示意)。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:未知态。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:查证工单+审计。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:盲重放。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) Runbook 2) 渠道查单 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可审计。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:轨迹lag。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:生产者超时/重试;消费并行与幂等键;DLQ;lag 看板;禁删位点。 结合本案原要点:lag看板+毒丸DLQ。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无告警。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 阈值 2) 扩消费 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:分钟响应。工程目标:lag 分钟级响应;展示/状态可校正(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:售后/寄修域(用户、质检、库存预占、退款渠道)。业务焦点:错退。峰值/约束:大促后售后洪峰;用户连点申请;寄修∥换新并行。验收:重复申请幂等;并行冲突单=0;分摊回退可对账。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:抽样对账+双退指标。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:无监控。影响面:双退资损、库存双占、支付事务被售后详情拖死。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 日报 2) 唯一退款键 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:错退↓。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:支付/OMS/退款/分摊回退
挂回:T-可观测 → 本页 → 交叉大促演练
高并发贯穿:峰值下采样策略不能抽掉支付失败样本。
正逆向关键节点埋点清单
| 节点 | Span/日志必带 | 资损相关指标 |
|---|---|---|
| 优惠落快照 | orderId, ruleVersion, amount | 快照失败率 |
| 库存预占/确认/释放 | reserveId, skuId, qty | 超卖、重复确认 |
| 支付回调 | tradeNo, payId, result | 幂等冲突、重复支付嫌疑 |
| Outbox 发送 | eventId, age | 堆积年龄 |
| OMS 创建 | orderId, inboxHit | 支付≈OMS 差 |
| 售后退款 | afterSaleId, refundId, channelResp | 重复退、退款失败挂起 |
| 分摊回退 | allocationId, delta | 分摊不平衡金额 |
资损告警(写死阈值思路)
- 重复支付嫌疑:同 order 多笔成功支付且无解释关闭单 → P0。
- 重复退款嫌疑:同 after_sale 多笔渠道成功 → P0 立即熔断自动退。
- 分摊不平衡:行分摊合计与头不一致超阈值 → P0/P1。
- 支付成功无 OMS:超过 SLA(如 3min)→ P1 升 P0。
- Outbox 年龄:最老 > 阈值 → P1。
- 只告警 CPU/内存不告警业务差账
- 支付失败样本被采样丢光
- 日志打印完整卡号/密钥
- 用「平均支付成功率」掩盖分区故障
我的反思与思考
我的反思与思考
S-MS-X中厂裁剪 vs 大厂标配对照表
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 中厂裁剪表可用
- 缺编制/成本数字
- 勿抄大厂全家桶当已裁完
中厂裁剪
flowchart TD
Need-->MVP[模块化+Outbox+幂等]
MVP-->Later[真有异变再拆]
大厂对照
flowchart LR
Platform[平台组中间件]-->Biz[业务只表达]
Mid[中厂]-->Own[自建最小闭环]
底板结构/算法/协议:中厂默认模块化单体+包边界+Outbox/幂等/超时矩阵;大厂有平台组才上全家桶治理。裁剪表必须可执行:不做的写进 ADR。
源码/实现路径(认知级):对照维:服务数、数据归属、治理组件、压测能力、编制。禁止「简历驱动拆分」。
订单/售后线上怎么露馅:8 人团队抄服务网格+自研注册中心→无人值班。
排查时看什么能验证你懂了底板:看:值班能否讲清回滚;跨服事务是否下降;交付周期是否恶化。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:8人交易域。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Outbox/Inbox 表结构;幂等键;Saga/补偿状态机;超时矩阵;对账三针。 结合本案原要点:模块化+Outbox+幂等。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:抄大厂网格全家桶。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 裁剪表签字 2) 里程碑 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可运维(示意)。工程目标:差账可解释清零;重复投递不下双花(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:有平台组。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:复用平台治理。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:业务重复造轮。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 接平台 2) 业务聚焦资损 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:吞吐/治理分离。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:合规隔离。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:强隔离+阶段门。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:敏捷日切核心。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 窗口 2) 演练 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:RTO 达标。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:大促。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:链路分级可靠性。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全局同步刷盘。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 分级配置库 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:成本/稳定平衡。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:V1 配置层加厚
挂回:V1 → 本页 → S-Year
| 能力 | 大厂标配(公开常见) | 中厂裁剪(可交付) | 不可再砍 |
|---|---|---|---|
| 服务拆分 | 细域+中台+平台组 | 模块化单体或 4–6 进程 | 写归属清晰 |
| 注册配置 | 自研/统一配置中心 | Nacos/K8s Config | 变更审计 |
| 限流熔断 | 统一治理平台 | 网关+Sentinel/Resilience4j | 超时矩阵+舱壁 |
| 可靠消息 | 事务消息平台 | Outbox 表+RocketMQ/Kafka | 幂等+对账 |
| 全链路压测 | 染色流量平台 | 季度压测+影子库 | 大促前至少 1 次 |
| 灰度 | 统一发布平台 | K8s 金丝雀+开关 | 资损即回滚 |
| 追踪 | 自研 APM | SkyWalking/OTel | 单号可检索 |
| 服务网格 | 部分业务渐进 | 默认不上 | 见 K8s-Mesh 章 |
我的反思与思考
我的反思与思考
S-MS-X场景题详答:故障注入 · 重复支付 · 重复退款 · 下游超时
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 演练题骨架在
- 缺可执行故障注入脚本
- 证明幂等要用你们库态,勿背答案
故障注入
flowchart TB
Inject[下游超时]-->Expect[舱壁生效]
Inject2[重复回调]-->Idem[不双记账]
Inject3[重复退款]-->FSM[状态机拒绝]
演练闭环
flowchart LR
Drill-->Gap[缺口]-->Backlog-->ReDrill-->Sign[签字]
底板结构/算法/协议:演练必须留下:注入项、期望、库态截图/SQL、指标曲线、缺口 backlog。幂等用唯一键冲突计数证明,不靠「日志看起来一次」。
源码/实现路径(认知级):脚本:重放支付回调 N 次;退款连点;下游 5xx/延迟;杀消费实例。
订单/售后线上怎么露馅:演练变参观;缺口不进排期。
排查时看什么能验证你懂了底板:看:双履约=0、双退=0、舱壁触发次数、复盘闭环率。
我的反思与思考
我的反思与思考
我的反思与思考
挂回:本极致章 → B-X / S-Year
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
S-MS-XSpring Cloud 调用链掀底板(超时/重试从哪来)
Spring调用链
flowchart LR
Ctrl-->Svc-->Repo
Svc-->Feign
Svc-->OB
事务失效
flowchart TD
Self[自调用]-->Bypass[绕过代理]-->NoTx
底板结构/算法/协议:AOP 代理;自调用失效;禁事务包 HTTP。
源码/实现路径(认知级):AbstractPlatformTransactionManager;Bean 代理。
订单/售后线上怎么露馅:付了没发事件。
排查时看什么能验证你懂了底板:看代理类与事务日志。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:Outbox同事务。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:@Transactional 边界。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:先发MQ。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 同事务 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:丢事件=0。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:自调用。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:拆 bean。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:同类内调。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 注入自身/拆类 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:事务生效。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:只读。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:readOnly。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当权限。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 别误用 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:仍要鉴权。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:连接池。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:事务边界只包本地写;OSIV 关闭;LoadGraph/EntityGraph 分用例;自调用使事务失效用例必须覆盖;多数据源路由显式。 结合本案原要点:短事务。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:长事务占满。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 超时 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:池不打满。工程目标:支付命令 P99 回百 ms 级;懒加载不再拖垮写路径(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:下单 RPC 试算、支付回调
挂回:S-MS-X 治理 → 本页 → T-Found-X JUC
底板结构/算法/协议:Tomcat 工作线程执行整段同步调用;Feign 默认用同步 HTTP(如 OkHttp/HttpClient)。下游慢=工作线程不归还→池耗尽→新请求排队/拒绝。重试在客户端或 Ribbon/Spring Retry 层放大流量。
源码/实现路径(认知级):路径认知:ApplicationFilterChain → DispatcherServlet → XxxController → FeignInvocationHandler.invoke → 编码器 → Client.execute → 解码。超时:连接/读超时在 client 配置;Sentinel/Resilience4j 在此前后熔断。看 Tomcat currentThreadsBusy、Feign/RT 直方图。
订单/售后线上怎么露馅:优惠试算 2s 无舱壁→下单线程打满→支付回调同进程也 503;Feign 重试 3 次×网关重试=风暴,非幂等写会双下单风险。
排查时看什么能验证你懂了底板:看:线程池 active、拒绝次数、下游 P99、重试指标、业务重复建单。
超时与禁重试(示意)
# 交易 → 优惠试算(读,可短)
feign.client.config.promo.connectTimeout: 100
feign.client.config.promo.readTimeout: 120
# 写接口:关闭自动重试
spring.cloud.loadbalancer.retry.enabled: false
# 舱壁:优惠调用单独线程池(Resilience4j bulkhead / 自建)
- 画一张「下单同步链路」:每跳填超时,上游 > 下游之和。
- 支付回调与下单入口线程池分开(或独立部署)。
- 预发注入优惠延迟,确认忙碌线程上升但支付池不动。
Spring/微服务底板验收
- 超时矩阵进仓库并与 Feign 配置一致
- 写路径无客户端自动重试
- 慢依赖有舱壁或独立池
- 故障注入演练有截图
我的反思与思考
我的反思与思考
X-大促微服务 × K8s × AI:一起扛大促正逆向
本节可以当索引/提纲,但不要当作已金标完工。金标仅见 #delivery-status 三块。
缺什么(诚实):
- 三联演练时钟在
- 缺完整 T-7 检查表附件
- 演练未做=未完成
三联
flowchart TB
MS[微服务治理]-->K8s[发布弹性]
K8s-->AI[副驾禁写]
MS-->Pay
演练时钟
flowchart LR
T7[冻结]-->T0[峰值]-->T1[复盘]
底板结构/算法/协议:治理×发布×AI 边界同时演练。
源码/实现路径(认知级):见 X-大促剧本。
订单/售后线上怎么露馅:只压浏览。
排查时看什么能验证你懂了底板:支付/退款/Outbox。
跨行业/跨场景落地(案例归纳)
完整业务场景:综合零售/电商交易域(C 端用户、支付渠道、OMS/客服)。业务焦点:三联演练。峰值/约束:大促支付/下单回调可达平峰数倍~一个数量级;连点与渠道重放并存。验收:双单/超卖=0;已付必达履约或可对账挂账;退款口径可解释。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:剧本签字。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:当天下午改。若忽略:并发下必现资损或不可解释差账;值班只能重启碰运气。。影响面:支付成功率跌、客服「已扣款未履约」工单、OMS 漏单/双发。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) T-7 2) 门禁 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:可回滚。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:银行/支付清结算取向(分户账、渠道网关、日终对账岗)。业务焦点:窗口。峰值/约束:日终与渠道批量窗口;热点户并发借贷;未知态必须可查证。验收:日终三方平;无双花;未知态工单闭环;RPO/RTO 按演练门禁。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:禁AI写。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:提示热更。影响面:差账、双花风险、渠道未知态扩大、审计无法签字。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 冻结 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:合规。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:物流/仓配(运单中心、轨迹接入、客服展示)。业务焦点:扩容。峰值/约束:轨迹事件日十万~百万级(视体量示意);乱序与重复投递常见。验收:运单状态单调可校正;展示乱序可按 seq upsert;lag 分钟级响应。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:Deployment 资源 requests/limits;liveness/readiness 分离;HPA 指标;ConfigMap/Secret 不进镜像;支付舱壁独立 Deployment;金丝雀与 undo。 结合本案原要点:预热。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:现场手扩。影响面:详情 RT 崩、重复运单、客诉轨迹回退、补数困难。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) HPA上限 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:lag可控。工程目标:变更窗内可回滚;节点故障不丢支付回调现场(示意)。 禁止将示意区间写成未公开精确 KPI。
完整业务场景:餐饮/本地生活(门店、出餐屏、骑手/自取、餐损财务)。业务焦点:取消。峰值/约束:午晚高峰 QPS 可为平峰数倍;取消尖刺与出餐并发。验收:餐损可解释;取消规则带版本;高峰不雪崩;店维热点可限流。本案例为公开分享常见模式的「案例归纳」,映射到本册交易/履约/售后闭环,便于中厂裁剪落地。
技术落地配置:业务唯一键+幂等表;短事务;超时/重试/舱壁;读模型与写模型分离;关键路径压测与对账抽样。 结合本案原要点:开关。 配置必须可进仓库/变更单:超时、副本/RF、唯一索引、幂等键、消费重试与 DLQ/死信均要有默认值与告警绑定。
线上真实故障(案例归纳):【案例归纳】症状:全量新规则。影响面:出餐延迟、错误餐损、取消争议、门店侧超时雪崩。若忽略:并发下易出现资损、不可解释差账,或值班只能重启碰运气。说明:以下为业界公开演讲/工程博客中反复出现的故障模式归纳,不代表某公司未公开内部架构或精确 KPI。
分步优化方案:1) 灰度 验收门禁:重放/连点/EXPLAIN 或对账抽样;回滚与降级开关可演练。
落地效果数据:餐损稳。工程目标:资损类缺陷归零取向;峰值可降级非核心(示意)。 禁止将示意区间写成未公开精确 KPI。
服务业务闭环:大促买成→履约→退成
挂回:S-MS-X / T-K8s-X / T-AI-X → 本页 → S-Year
高并发贯穿:秒杀靠预热+队列,不靠 HPA 手速;AI 限流保查单。
flowchart TB
User[用户大促流量] --> GW[网关限流]
GW --> Ord[订单/优惠/库存 微服务治理]
Ord --> Pay[支付回调舱壁]
Pay --> OB[Outbox]
OB --> OMS[OMS on K8s]
User2[售后洪峰] --> AS[售后服务]
AS --> RF[退款幂等]
CS[客服] --> AI[AI草稿+HITL]
AI -->|只读MCP/RAG| Ord
AI -->|禁止写| RF
K8s[金丝雀/预热/PDB] -.-> Ord
K8s -.-> OMS
K8s -.-> AS
- T-7 天:冻结非必要发布;备好金丝雀门禁面板(支付/退款/Outbox)。
- T-3 天:全链路压测按「浏览:下单:支付:售后」比例跑;修连接池与超时矩阵。
- T-1 天:副本预热;大促开关演练(开/关);AI 知识库切到「大促规则包」版本并评测放行。
- T0:值班三人:交易链 / 发布回滚 / 客服口径(AI 降级键在手)。
- T+1:对账差与错退复盘,动作写回 Skill。
大促演练剧本(可勾选)
- 故障注入:库存延迟 2s → 验证舱壁,支付不被拖死
- 杀一个支付节点(drain)→ 回调成功率不掉出 SLO
- 金丝雀错误分摊 → 1 分钟内 revision 回滚
- 重复支付回调 → 只落一笔,溢收款可查
- 重复退款按钮 → 先查单不对齐不打第二枪
- 工单注入提示词 → Agent 拒出金额且审计留痕
- AI 降级开关 → 客服回纯人工仍可退款
- 钉 大促验收三句:付了必有履约意图;退了不双飞;客服口径=订单快照版本。
- 拆 主:买成;异:降级限流;逆:售后洪峰出口限流。
- 标 现场上 Mesh、现场改退款口径全量、AI 自动退。
- 选 微服务纪律 + K8s 预热金丝雀 + AI HITL。
- 验 本页剧本每年至少演 1 次并留截图。
- 看三针:支付成功、退款成功、Outbox 年龄。
- 判定面:流量打满?发布中?依赖慢?AI 乱承诺?
- 止血:入口限流 / 回滚 / 关新逻辑开关 / AI 降级。
- 单号串链,禁止先重启再看。
- 财务差账通道打开,错退单进人工队列。
我的反思与思考
我的反思与思考
我的反思与思考
V1大厂对照 × 中厂 MVP(主线的高配/低配)
挂回:B0 主线 → 本配置 → S3
| 主线能力 | 大厂公开常见高配 | 中厂 MVP |
|---|---|---|
| 优惠试算/分摊 | 规则平台+实验 | 策略+贪心+分摊表 |
| 拼团/峰值 | 统一限流热点平台 | 网关限流+Redis 预占 |
| 支付→OMS | 事务消息/可靠平台 | Outbox 表+轮询 |
| OMS→WMS | 仓配中台 | 模块化+出站表+人工波次 |
| 售后全谱 | 工单+自动化策略 | 仅退款/退货优先;寄修半自动 |
| 对账 | 统一对账平台 | 日终任务+差异工单 |
| 多活/单元化 | 公开主题常见 | 通常不做;同城 HA |
我的反思与思考
我的反思与思考
我的反思与思考
S3路考:一条订单走完正向与逆向
挂回:B-F/B-R → 本页 → S4
一句话需求:用户拼团成功下单并签收后,发起一行退货退款:券积分按分摊回退,权益关闭,库存质检回库,财务三方能对上。
谁:考生/方案负责人 要什么:90 秒讲清链路与资损防护;能指出监控与对账
约束:回调重复、消息乱序、部分退
验收口径:口述覆盖正向事件+逆向分摊+幂等;给出 3 个指标
sequenceDiagram
participant U as 用户
participant F as 正向B-F
participant R as 逆向B-R
U->>F: 优惠结算+支付
F->>F: OMS/WMS/签收
U->>R: 退货退款
R->>R: 分摊回退+券积分+权益
R->>R: 质检回库+渠道退款
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
S3并发常问(绑正逆向,不考玄学)
挂回:T1/T5 → 本库 → S4
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
S3读大厂博客:只蒸馏回正逆向
挂回:V1 → 本页
- 文章问题是否等于「买成/退成」某痛点?
- 决策能否写成主线验收句?
- 中厂 MVP 列如何替换平台?
我的反思与思考
我的反思与思考
S4复习地图 · 路线 · 自测(主线闭环)
挂回:S3 → 本页 → 薄弱 B-F/B-R
| 卡在 | 回炉 |
|---|---|
| 分摊/券积分 | B-F F2 |
| 支付无履约 | B-F F3 + T3 |
| 售后乱/双退 | B-R |
| 餐饮餐损/清关 | B-Ind |
| 该不该拆 | S-MS + V1 |
8 周是「入门闭环」。若要以一年坚持加厚:进入 S-Year · 一年坚持路线(12 月主题 · 52 周卡片 · 季度 OKR)。复杂生产案见 B-X。
8 周主线路线
| 周 | 主题 | 产出 |
|---|---|---|
| W1 | S0–S2 + 拒绝拼凑 | 默写需求模板 |
| W2 | B-F 拼团优惠分摊 | 分摊+状态机草稿 |
| W3 | B-F 支付 OMS WMS | Outbox+缺货补偿 |
| W4 | B-R 逆向全谱 | 售后状态机+幂等 |
| W5 | B-Ind 餐饮/跨境旋钮 | 配置表 |
| W6 | T 零件按需 + S-MS | 主线相关 ADR |
| W7 | S3 路考 | 90 秒录音 |
| W8 | 并发库+作品集 | 自测清单 |
- 能默画 B0 正逆向总图
- 能从 PRD 句推出技术溯源表
- 能讲清分摊回退与双退防护
- 能说明餐饮/跨境只改哪个旋钮
- 能拒绝一个无主线的技术提案
- 写一条 PRD 句
- 填需求模板
- 答 4 道并发库
- 反思框写差距
我的反思与思考
我的反思与思考
S-Year一年坚持路线:12 月主题 × 52 周仪式 × 季度 OKR
挂回:S4 自测 → 本页执行 → B-X 加深 → S-Method
一年后你能独立对「一笔买成+一笔退成」负责,而不是收藏夹更厚。
像在公司:有主题、有交付、有季度验收,没有「学了再说」。
用节奏消灭散装学习的不确定性:主线螺旋上升,零件服务主线。
忙周砍广度不砍交付物;交付物必须能挂回 B-F/B-R 某步。
若没有它,业务哪一步会坏:没有年度闭环:三个月后回到名词焦虑。
①读一节(主线优先,零件按需)→ ②练手题(至少 2 道详答)→ ③复盘框(四段闭环各一句)→ ④可交付物(笔记 / 小实验 / 故障演练三选一落盘)
时间盒建议:读 90min · 练 60min · 复盘 30min · 交付物 60–120min。忙周可砍读,不可砍④。
12 个月主题(挂主线 + 横向)
| 月 | 主题(挂正逆向) | 主线锚点 | 横向能力 | 月末交付物 |
|---|---|---|---|---|
| M01 | 正逆向导航 + 五步法肌肉记忆 | S0–S2 / S-Method / B0 | 并发入门口诀 | 默画 B0;默写钉拆标选验 |
| M02 | 正向结算:拼团·券·分摊 | B-F F1/F2 | Redis 预占 / 幂等 | 分摊表+未成团退 ADR |
| M03 | 正向履约:支付·OMS·WMS | B-F F3 | Outbox / MQ | 缺货补偿状态机+对账 |
| M04 | 逆向全谱与双退防护 | B-R R1 | 状态机 / 渠道限流 | 售后状态机+退款幂等 |
| M05 | 权益·寄修·换新库存锁 | B-R R2 + B-X | 库存锁粒度 | 寄修∥换新并发剧本 |
| M06 | 行业旋钮:餐饮高峰餐损 | B-Ind 餐饮 + B-X | 热点门店限流 | 不可逆点配置表 |
| M07 | 行业旋钮:跨境清关失败 | B-Ind 跨境 + B-X | 多币种/锁汇 | 清关闸门+逆向退 |
| M08 | 数据与缓存深水 | T3–T5 挂主线 | 分库边界 / 击穿 | 热点 SKU 压测报告 |
| M09 | 治理:限流熔断可观测 | T6 / S-MS | 舱壁 / SLO | 大促开关演练记录 |
| M10 | 发布弹性:Docker/K8s | T-K8s | 金丝雀/回滚 | 订单域发布检查单 |
| M11 | AI 副驾:Skills/MCP/RAG/Agent | T-AI-Stack | HITL 红线 | 质检草稿 Skill 作品集 |
| M12 | 路考·作品集·一年复盘 | S3 / S4 / B-X 全量 | 容量复盘 | 90 秒录音+ADR 册 |
季度里程碑(公司 OKR 体)
- O:独立用五步+四段讲完拼团/分摊/支付→OMS。
- KR1:B0 默画 1 次满分;KR2:分摊+Outbox 各 1 份 ADR;KR3:缺货补偿时序可讲解;KR4:周交付物 ≥10。
- O:售后双退防护与寄修∥换新能压测口述;餐饮不可逆点配置化。
- KR1:售后状态机落地笔记;KR2:B-X 至少完成 2 个案例四段;KR3:餐损演练 1 次;KR4:并发库答对率 ≥80%。
- O:清关失败逆向可对账;热点与限流有数字。
- KR1:清关闸门方案;KR2:热点 SKU 压测报告;KR3:三针看板截图;KR4:大促开关演练记录。
- O:金丝雀会回滚;AI 只草稿不改账;作品集可面试。
- KR1:发布检查单实战 1 次;KR2:Skill+MCP+RAG 三联 demo;KR3:90 秒路考录音;KR4:个人方法论终版。
52 周卡片(读·练·交付)
每张卡片三行:读什么 / 练什么 / 可交付物。点开对应主线章节深读;练手详答写在反思框。
练:默画 B0
交付:体系一页纸
练:PRD→溯源
交付:需求模板填满
练:钉拆标选验口述
交付:五步冰箱贴
练:拒拼凑提案
交付:周复盘四段
练:成团临界
交付:团状态机图
练:部分退分摊
交付:allocation 样例
练:取舍表 3 行
交付:优惠 ADR
练:限流位设计
交付:削峰开关清单
练:双回调
交付:支付状态机
练:堆积演练
交付:投递 Runbook
练:缺货补偿
交付:补偿时序图
练:签收乱序
交付:承运商防腐笔记
练:双退防护
交付:售后状态机
练:未发货秒退
交付:渠道幂等键规范
练:回执乱序
交付:质检回执用例
练:分摊回退
交付:退款对账 SQL
练:解绑时机
交付:权益悬挂告警
练:换新锁库存
交付:并发剧本
练:SN 追踪
交付:SN 轨迹表设计
练:四段闭环写满
交付:案例 STAR
练:出餐后取消
交付:餐损规则表
练:门店热点
交付:限流压测数
练:赔付口径
交付:异常流程卡
练:无 WMS 版
交付:配置化旋钮
练:失败逆向
交付:清关状态机
练:退税争议
交付:财务验收句
练:丢件责任
交付:ACL 边界笔记
练:展示/存储
交付:UTC 约定
练:EXPLAIN
交付:索引变更单
练:单飞
交付:热点 Key 预案
练:订单号路由
交付:分片 ADR
练:日终差
交付:对账剧本
练:半开误伤
交付:Sentinel 规则
练:trace 贯主线
交付:三针看板
练:回调隔离
交付:池参数表
练:误报治理
交付:告警降噪
练:何时不拆
交付:拆分决策树
练:一键回滚
交付:发布检查单
练:OOMKill
交付:资源配额
练:大促预案
交付:开关演练录屏
练:质检检查单
交付:Skill.md
练:鉴权卡写
交付:工具白名单
练:压幻觉
交付:分块策略
练:禁直退
交付:人机审批流
练:一单正逆向
交付:90 秒录音
练:8 题口述
交付:错题本
练:STAR×2
交付:脱敏案例卡
练:ADR 装订
交付:作品集目录
练:自测清单
交付:差距 OKR
练:被追问原理
交付:录像复盘
练:峰热削降
交付:容量一页纸
练:教别人五步
交付:个人方法论终版
全年自测清单(季末勾选)
- 能默画 B0,并指出峰值限流插在哪一段
- 能用四段闭环讲清 B-X 五个复杂场景中的任意两个
- 能从 PRD 句推出技术溯源表,并给 ≥2 解法取舍
- 能讲清分摊回退、双退防护、缺货补偿、清关失败逆向
- 能做一次金丝雀回滚口述 + 一次大促开关演练笔记
- AI 作品:Skill + 只读 MCP + RAG 引用,且禁止直改账务
- 作品集:≥6 份 ADR/时序/对账 SQL,可脱敏面试
- 路考:90 秒正逆向录音,被追问原理不崩
横向章节(JVM/K8s/AI)若当周映射不进 B0,标记「零件停车场」,下周必须写回主线验收句,否则不算学完。
我的反思与思考
我的反思与思考
P0生产事故案例集(模式化,可迁移)
案例 01 · GC thrash(抖动)
现象:P99 周期性尖刺,CPU 中高,业务日志稀疏。
错误处置:盲目加堆到容器 limit 边缘,触发 OOMKill。
正确戏本:GC 日志看分配速率与 Humongous;JFR 找分配热点;修无界缓存/大列表;再谈堆与收集器。
Before(事故前/错误做法)
堆加倍,尖刺仍在,偶发杀 Pod。
After(止血后/正确做法)
修分配路径 + 合理堆余量 + 告警 GC 停顿。
案例 02 · 慢查询打爆连接池
现象:获取连接超时,错误率升,DB CPU 高。
错误处置:把 Hikari maximumPoolSize 从 20 调到 100。
正确戏本:PROCESSLIST 定位缺索引 SQL;限流;加索引/改写;池按公式回退。
- 池指标 pending/active
- PROCESSLIST
- EXPLAIN
- 止血恶查询
- 根治后再调池
案例 03 · 缓存击穿 + 雪崩连击
现象:热点过期瞬间 DB QPS×10;随后批次 TTL 到期雪崩。
戏本:单飞 + 逻辑过期;TTL 抖动;DB 限流;多级缓存;预热。
案例 04 · 消息重复消费资损
现象:优惠重复到账。
戏本:唯一业务键;重复返回成功;对账;订正剧本。
自动提交位点 + 非幂等写 = 定时炸弹。
案例 05 · 半开熔断误伤
现象:依赖已恢复,成功率仍低。
戏本:检查是否把业务 4xx 计入失败;调整最小请求数与半开放行;临时手动恢复并观察。
案例 06 · 发布回滚犹豫症
现象:金丝雀错误率升,会议讨论 20 分钟。
戏本:预设回滚条件(错误率/ P99 阈值)自动或一键执行;讨论放止血后。
案例 07 · 数据订正无审计
现象:人工改库后对不上,无人知前后值。
戏本:before 快照、审批、幂等分批、对账、复盘。
案例 08 · 线程池共用
现象:导出任务拖死支付回调。
戏本:分池隔离;有界队列;拒绝告警。
案例 09 · 事务自调用失效
现象:异常后部分表写成功。
戏本:拆 Bean;补回滚测试。
案例 10 · Redis 大 key 阻塞
现象:偶发全站 RT 尖刺,Redis 延迟高。
戏本:查 bigkey;拆分;禁止 KEYS/全量取。
我的反思与思考
命令与配置速查清单
# JVM / 线程
jcmd <pid> Thread.print
jstat -gcutil <pid> 1000
jcmd <pid> GC.heap_info
# Arthas
dashboard | thread -n 10 | profiler start
# MySQL
SHOW FULL PROCESSLIST;
SHOW ENGINE INNODB STATUS\G
EXPLAIN ANALYZE SELECT ...;
# Redis
INFO | redis-cli --bigkeys
# K8s
kubectl rollout undo deploy/<name>
kubectl describe pod <pod>
# 指标关键词
executor_rejected_total | http_server_requests | mq_consumer_lag | db_pool_pending
我的反思与思考
面试题库 · 原理追问加厚
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
P2前端协作边界(BFF)、安全(OWASP)、合规
BFF 边界
- 聚合页所需 DTO,避免前端拼 10 个服务。
- 权限裁剪在服务端;隐藏按钮≠安全。
- OpenAPI + 示例;字段只增不改语义。
OWASP 最小集(Java API)
| 风险 | 人话 | 落地 |
|---|---|---|
| 注入 | 把用户输入当代码跑 | 参数化查询 |
| 失效访问控制 | 改个 id 看别人单 | 每条校验归属(防 IDOR) |
| 认证失败 | 密码门形同虚设 | 锁定/验证码/刷新令牌轮换 |
| 安全配置错误 | 默认口令、Actuator 裸奔 | 收紧暴露面 |
| SSRF/反序列化 | 服务器被当代理/炸弹 | 出站白名单;禁危险反序列化 |
合规
日志脱敏;个人数据最小化;按甲方留存与删除。作品集素材脱敏再带走。
我的反思与思考
我的反思与思考
P2多数据源、异构集成、批处理
- 写权威源明确;事务管理器绑定;别幻想无痛跨库事务。
- 异构:ACL + 重试 + 对账。
- 批:分片、幂等、进度水位、差错重放;禁超长事务。
flowchart LR
Job[批任务] --> Slice[分片]
Slice --> Step[幂等处理]
Step --> Prog[进度水位]
Step --> Bad[差错表]
Bad --> Replay[重放]
- 看哪一分片慢:SQL、下游、锁等待。
- 跳过毒丸到差错表,先保住窗口。
- 第二天重放;根治索引/并行度/降体积。
我的反思与思考
我的反思与思考
P2职业策略:可带走作品集 / 复盘模板
可带走清单
- runbook / SQL 笔记 / ADR 模板
- 脱敏案例:现象→指标→根因→方案→收益
- 压测脚本骨架、GC 备忘、日志命令
- 面试故事库:STAR + 权衡(≥5)
# 事故/专项复盘
- 时间线:
- 用户影响与指标:
- 根因(技术 + 流程):
- 为什么没更早发现:
- 短期止血 / 长期修复:
- 可复用检查清单:
- 对外沟通要点:
我的反思与思考
面试题库精选(高级向 · 超详细参考答案)
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
生产 Runbook 速查(外包可带走)
| 症状 | 先做 | 常用命令/信号 |
|---|---|---|
| RT 高 CPU 低 | 看线程池队列/下游/锁等待 | jstack、依赖 P99、队列长度 |
| CPU 100% | 区分算/GC/自旋 | top、jstack、async-profiler、GC 日志 |
| Full GC / 内存涨 | Old 是否回落 | jstat、heap dump、MAT |
| 获取 DB 连接失败 | 慢 SQL/长事务 | PROCESSLIST、池指标、EXPLAIN |
| 缓存打穿 | 限流 DB + 降级 | 命中率、Redis 健康、热点 key |
| 消息堆积 | 毒丸/下游慢 | lag、消费 RT、死信 |
| 发布异常 | 回滚保用户 | 错误率、金丝雀面板、revision |
| 数据错误 | 冻结写入→订正剧本 | 对账差异、before/after 审计 |
我的反思与思考
P2学习路线入口
我的反思与思考
S-Method技术×业务五步法(钉拆标选验)
服务业务闭环:换甲方仍能开工
挂回:整书 → 本页带走
先钉「怕什么资损、谁签字」,再谈中间件。
外包高级验收:能把买成/退成讲清、落地、救火,而不是背框架名。
五步消灭的是「散装知识点无法变成交付」的不确定性。
每一步都有为什么、怎么做、反模式、正逆向例子——禁止为空喊方法论而方法论。
若没有它,业务哪一步会坏:没有五步:评审堆名词、故障只会重启、面试只会报技术栈。
钉拆标选验:①钉业务本质与验收 → ②拆主/异常/逆向 → ③标并发与一致性矛盾 → ④选型(每项对需求,多解法取舍)→ ⑤验收·观测·回滚·复盘。
钱/货/券/积分/权益对得上才叫做完;发布与 AI 都不得撕破这条。锚点:#s-method / #s-five-steps。
flowchart LR
S1[①钉本质验收]
S2[②拆主/异/逆]
S3[③标并发一致]
S4[④选型对需求]
S5[⑤验·观·滚·复盘]
S1 --> S2 --> S3 --> S4 --> S5
S5 -.->|下周需求| S1
① 钉业务本质与验收
为什么:本质没钉死,后面所有技术都在赌。资损场景必须先点名,签字人必须明确。
怎么做:
- 一句话业务本质:交换什么?
- 资损清单:重复 / 漏 / 多 / 悬空(券积分权益)
- 验收句:可测、可对账、可监控(不是「体验好」)
- 签字人:产品/财务/仓储/研发值班谁说了算
- 把「上微服务/Kafka/网格」写成需求本身
- 验收写成「系统稳定」「体验流畅」——无法对账
- 资损清单空着,却先排期中间件
正逆向例:拼团未成团——本质是「未买成要退成」;怕重复退、积分悬挂;财务对退款成功率与券流水签字。售后退货——本质是「退对钱且货权清晰」;仓储对质检终态签字。
面试怎么讲:「我先问怕什么资损、谁验收,再谈中间件;未成团验收是退款可对账、券悬挂为 0。」
② 拆主流程 / 异常 / 逆向
为什么:Happy path 只占总故障的一小截;逆向和异常才是资损高发区。
怎么做:画主流程 → 标每个不可逆点 → 列出异常(超时/重复/缺货/驳回)→ 列出逆向入口(仅退/退货/寄修)。写伪 PRD:In/Out、主/异常、状态流转。
- 只画「下单→支付成功」就开工
- 取消与拣货并发在图上没位置
- 售后另起一套 CRUD,不引用正向分摊
正逆向例:正向:开团→支付占座→成团确认→OMS→签收;异常:超时解散、支付晚到;逆向:失败自动退、签收后退货质检→分摊回退→权益回收。
面试怎么讲:「我按主/异/逆三张表拆,不可逆点(出库/出餐/清关)单独标。」
③ 标并发与一致性矛盾
为什么:技术选型的燃料是矛盾,不是爱好。标不清矛盾,就会用错锁/错队列。
怎么做:对每个热点写:谁并发?争什么资源?要的是哪种一致(强/最终)?乱序从哪来(回调/MQ/人工)?
- 未标矛盾就上全链路分布式事务
- 口头「最终一致」却无对账、无补偿
- 用一把全局锁「解决一切并发」
正逆向例:成团临界抢名额(原子/版本);支付回调至少一次(幂等);退款重复点击(唯一进行中售后);质检回执乱序(版本)。
面试怎么讲:「矛盾是名额 CAS + 回调幂等 + 退款唯一键;不是先上两阶段提交。」
④ 选型:每项技术对需求(多解法取舍)
为什么:零件必须能回答「没有它坏主线哪一步」。同一需求允许多解,用取舍表决策。
怎么做:列技术溯源表;同一需求给 2~4 解(见下章取舍);过选型五问;写 ADR 一页。
- 为简历上 Kafka/Service Mesh,溯源表填不出「坏哪步」
- 只给一种「标准答案」,讲不清中厂裁剪
- AI/Agent 选型脱离 HITL,企图直改账务
正逆向例:未成团退款:状态机+退款幂等必选;MQ 可用 Outbox 表轮询裁剪;规则引擎非必须。售后提效:RAG+Agent 草稿+HITL,禁止 Agent 直退。
面试怎么讲:「我给过三种解法的成本/一致性/可运维对比,中厂选 Outbox 表+幂等表。」
⑤ 验收 · 观测 · 回滚 · 复盘
为什么:没观测的上线叫裸奔;没回滚的发布叫赌博;没复盘的故障会再来。
怎么做:验收用例+对账任务;核心指标(支付/退款成功率、Outbox 堆积、分摊不平衡);开关/金丝雀/revision 回滚;复盘进 RAG/Skill。
- 「看了下页面没事」当验收
- 资损口径变更全量发布、无金丝雀
- 复盘只写「已重启」,不落唯一约束/对账/Skill
正逆向例:日终团失败数=退款成功+挂账;金丝雀看退款成功率;故障后沉淀「逆向资损 20 分钟」Runbook/Skill。
面试怎么讲:「上线认三针:支付成功、退款成功、Outbox;超阈回滚;复盘必落预防动作。」
端到端跑穿:下单正向 + 未成团逆向 + 售后退货
背景:大促拼团商品,支持平台券+积分;未成团自动退;签收后 7 天可退货退款并回收延保。
In Scope:成团/失败、分摊落单、自动退、退货质检、分摊回退、权益回收。
Out of Scope:推荐排序、直播间玩法。
主流程:开团→参团支付→成团→OMS→签收;或超时失败→退款。
异常流程:支付晚到已解散、重复退申请、质检不合格、渠道退款成功本地失败。
验收:未成团可对账退清;退货不超额;延保无悬挂。
上线观察:退款成功率、券悬挂、分摊不平衡、权益悬挂。
①钉(本需求)
业务本质:拼得成要履约买成;拼不成要退成;签收后退货要退对。资损:重复退、漏退、券/积分悬挂、延保悬空。验收签字:财务(退款/券流水)、仓储(质检终态)、研发(对账任务)。
②拆(主 / 异 / 逆)
| 类型 | 路径 | 不可逆点 |
|---|---|---|
| 主 | 开团→支付占座→成团→OMS→WMS→签收 | 成团确认、出库 |
| 异 | 超时解散、支付晚到、缺货、回调重复 | 已退款不可再占同幂等键 |
| 逆① | 未成团自动退:钱/券/积分归位 | 渠道退款成功 |
| 逆② | 签收后退货:申请→审核→寄回→质检→分摊回退→权益回收 | 质检合格后的退款指令 |
③标(矛盾清单)
- 成团名额:多人最后一名额 → CAS/版本
- 支付回调至少一次 → 支付幂等键
- 用户连点退款 → 售后单「进行中」唯一
- 质检回执乱序 → 状态机合法迁移+版本
- 部分退 vs 整单券 → 必须引用正向分摊行
④选(技术溯源 + 默认解)
| 需求点 | 技术 | 没有它坏哪步 | 中厂默认 |
|---|---|---|---|
| 成团占座 | 状态机+库存/名额预占 | 超卖/超成团 | DB 条件更新或 Redis+对账 |
| 支付→OMS | Outbox | 已支付无履约单 | Outbox 表+轮询 |
| 未成团退 | 退款幂等表+扫表/延迟消息 | 漏退/双退 | 扫表 MVP |
| 优惠可退 | 下单分摊落表 | 部分退算不清 | allocation 行 |
| 质检提效 | Skill+RAG+只读 MCP+HITL | 积压;或幻觉错判 | 草稿助手,禁直退 |
⑤验(对账 / 观测 / 回滚 / 复盘)
- 验收用例:未成团退清;重复回调不双入账;部分退不超额;延保回收;Agent 调退款被拒
- 对账:日终 团失败≈退款成功+挂账;支付↔订单↔券;售后↔渠道
- 观测:支付/退款成功率、Outbox 堆积、分摊不平衡、权益悬挂
- 回滚:退款口径变更金丝雀;超阈 revision;特征开关关新逻辑
- 复盘:动作进 T-Skills + 口径进 T-RAG
| 五步 | 一句话收口 |
|---|---|
| ①钉 | 买不成退成、退货退对;财务+仓储签字 |
| ②拆 | 主成团履约;异超时晚到;逆自动退+退货质检 |
| ③标 | 名额、回调、退款双点、回执乱序、分摊引用 |
| ④选 | 状态机+预占+幂等+分摊+Outbox;AI 只草稿 |
| ⑤验 | 三联对账+三针+金丝雀;复盘进 Skill/RAG |
我的反思与思考
同一需求 · 多种解法(取舍表)
需求 A:支付成功必须进入 OMS
| 解法 | 视角 | 优点 | 代价 | 推荐边界 |
|---|---|---|---|---|
| 本地事务 + 同步调 OMS | 简单/延迟低 | 实现快 | OMS 抖则支付事务长;难扩 | QPS 低、同进程模块化 |
| Outbox 表 + 轮询/投递 | 一致性/中厂 | 可靠、可审计 | 秒级延迟 | 默认推荐中厂主线 |
| 事务消息(RocketMQ 等) | 性能/解耦 | 吞吐好 | 平台依赖与运维 | 已有成熟 MQ 平台 |
| TCC 跨服务 | 强一致外观 | 交互清晰 | 编码与空回复杂 | 资金类强约束,慎用于 OMS 通知 |
需求 B:未成团自动退款
| 解法 | 视角 | 优点 | 代价 | 推荐边界 |
|---|---|---|---|---|
| 定时扫到期团 + 退款幂等表 | 成本/中厂 | 够用 | 分钟级延迟 | MVP 默认 |
| 延迟消息到点解散 | 时效 | 更准时 | 依赖 MQ 延迟能力 | 大促时效要求高 |
| 工作流引擎编排 | 可运维/可视 | 运营可读 | 过重、难测 | 多级人工审批并行时 |
需求 C:部分退货时优惠如何退
| 解法 | 视角 | 优点 | 代价 | 推荐边界 |
|---|---|---|---|---|
| 按下单分摊行回退 | 一致性/财务 | 可对账 | 依赖正向分摊质量 | 主线默认 |
| 整单比例估算 | 成本 | 实现简单 | 财务常争议 | 仅演示/非财务验收 |
| 人工算差额工单 | 可运维兜底 | 灵活 | 人效差 | 长尾边缘单 |
需求 D:售后质检提效(含 AI)
| 解法 | 视角 | 优点 | 代价 | 推荐边界 |
|---|---|---|---|---|
| 纯人工质检清单 | 成本/可控 | 无幻觉 | 慢 | 单量小 |
| 规则引擎自动合格/驳回 | 性能 | 快 | 规则僵硬 | 标准件外观类 |
| RAG+Agent 草稿 + HITL | 人效/安全 | 快且可审 | 要工具边界 | 推荐见 AI 重头戏 |
| Agent 直写合格并退款 | — | 看似快 | 资损不可控 | 禁止 |
微服务何时拆(决策树,挂五步③④)
flowchart TD
Start[要不要拆?] --> Q1{资损边界清晰?}
Q1 -->|否| Mod[模块化跑通正逆向]
Q1 -->|是| Q2{要独立扩/发?}
Q2 -->|否| Mod
Q2 -->|是| Q3{团队能扛分布式?}
Q3 -->|否| Mod
Q3 -->|是| Split[拆] --> Gate[幂等/观测/发布卡点]
周复盘 + 面试叙事(套五步)
①本周钉清了哪个本质/验收?②拆清了哪条异/逆?③新标了哪个矛盾?④选型过五问了吗?⑤观测/回滚/复盘落了哪条?
按钉→拆→标→选→验讲一个正逆向案例;中间插一句多解法取舍;结尾中厂裁剪。
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
我的反思与思考
新需求先填五步再动代码。AI/Skills/MCP/RAG 重头戏见 T-AI-Stack——全部用五步④⑤约束:对上需求、禁止直改账务。
- 已扩写行业案例:258 个(含 ENCY-FM / S-DDD / P0 / AI / K8s / Found 等 Case* 与案例归纳)。
- B-X 注入生产案例块:5 个(五段硬门槛)。
- 模板锚点:
#case-hardgate(五段必填说明)。 - 有意非行业 stub:「像在公司做需求·评审口吻」、学习仪式/面试 90 秒等非 Case 块保留原职责;company-prd 行业案故意留 stub = 0。
- 量级纪律:仅公开分享量级或工程目标/示意区间,禁止伪造未公开精确 KPI。
- 已扩写行业案例:258 个(含 ENCY-FM / S-DDD / P0 / AI / K8s / Found 等 Case* 与案例归纳)。
- B-X 注入生产案例块:5 个(五段硬门槛)。
- 模板锚点:
#case-hardgate(五段必填说明)。 - 有意非行业 stub:「像在公司做需求·评审口吻」、学习仪式/面试 90 秒等非 Case 块保留原职责;company-prd 行业案故意留 stub = 0。
- 量级纪律:仅公开分享量级或工程目标/示意区间,禁止伪造未公开精确 KPI。