一、核心方法论(道法术器势纪,M01-M16)

两公理是一把钥匙:所有性能问题=资源竞争,所有可用性问题=单点故障——三高不可能三角由此推出,全部方法论由此展开。

层级自检:换行业仍成立→道;能画阶段/责任表→法;要调参→术;能安装替换→器;阻力来自人/时机→势
取舍三句话:选了什么/放弃了什么/为什么值得——每个方案必答
演进两元操作:加法换能力、减法做熵减;每迭代留 10-20% 还债配额
代价转移五字诀:分合增减转——复杂度守恒,只能转移不能消灭
定性定量六步:定性定方向→基线→定量目标→改造→验证→复盘;无基线不优化
故障前置六问:单点/一致性/流量突增/回滚/降级/可观测
Goodhart/Hyrum:指标一旦成目标即失效;所有可观察行为终将被依赖
康威定律:系统结构=组织沟通结构;逆康威先设计目标团队再落地架构
面向失败六层递进:超时→重试幂等→限流→熔断→降级→隔离,层层设防
线程池公式:CPU 密集型=核数+1,IO 型=核数×(1+等待/计算)
变更分级三维:影响面×可回滚性×是否数据变更,定级决定审批链
排障证据链:现象→归因→jcmd/MAT/日志,无证据不改参
M01 第一性与元动作
两公理:性能问题=资源竞争,可用性问题=单点故障,由此推出三高不可能三角
稳态闭环:感知→决策→执行→反馈,缺一环系统必漂移
取舍三句话:选了什么/放弃了什么/为什么值得——每个方案必答
演进两元操作:加法换能力、减法做熵减;每迭代留 10-20% 还债配额
定性定量六步:定性定方向→基线→定量目标→改造→验证→复盘
代价转移五字诀:分合增减转,复杂度守恒只能转移不能消灭
康威定律:系统结构=组织沟通结构;逆康威先设计目标团队再落地架构
Goodhart/Hyrum:指标一旦成目标即失效;所有可观察行为终将被依赖
阿姆达尔定律:99% 并行 +1% 串行→加速上限约 100 倍,串行段决定天花板
机制-策略分离:机制下沉、策略上浮(Lampson/Ashby)
M02 日常思维模式
复杂度控制四招:拆分/抽象/封装/隔离,先问复杂度去哪了
边界判定:高内聚低耦合;稳定者不被易变者依赖
故障前置六问:单点/一致性/流量突增/回滚/降级/可观测
帕累托 20/80:20% 设计决策决定 80% 结果
业务先行五步:痛点→约束→数据→方案→收益,禁技术找场景
数据驱动四步:基线→假设→验证→回归,无基线不优化
布鲁克斯定律:沟通成本 O(n²);邓巴数 ~150 团队规模上限
侯世达定律:估算天然乐观,计划必留缓冲
帕金森定律:工作膨胀填满时间——时间盒+WIP 上限对抗
M03 设计原则
SOLID:单一职责/开闭/里氏替换/接口隔离/依赖倒置
DRY/KISS/YAGNI:不重复、最简单可行、不做将来可能要的抽象
配套三则:组合优于继承、最小惊讶、显式优于隐式
内聚自检:一次需求变更要改几个模块?越少内聚越高
波斯特尔修正版:输入宽容但非法输入明确拒绝(4xx),禁静默纠正
切斯特森围栏:弄清为什么这样写之前不许改
哈伯特定律:所有可见的改善都会被滥用——优化必配监控回归
帕金森琐碎定理:评审聚焦契约/错误路径/边界,命名交给 linter
M04 领域建模与架构风格
限界上下文:微服务划分第一依据,不按表、不按技术分层
统一语言:代码/文档/沟通三处同名同义,翻译即 bug 源
子域分类:核心域差异化投入/支撑域/通用域买不造
C4 模型:Context→Container→Component→Code 四层视图
设计模式三段式:问题→选型→代价,没有无代价的模式
持续重构:红-绿-重构循环;坏味道是触发器而非罪行
整洁/六边形/洋葱:依赖一律向内,端口+适配器隔离框架
适用边界:领域分层只对复杂业务值得,CRUD 不过度分层
M05 工程决策与演进
事前-事中-事后:预案/评审/容量/演练→告警/止血/冻结→根因/闭环/入库
ADR 四要素:背景/决策/取舍/结果,架构决策必须留痕
技术债四象限:有意谨慎>无意谨慎>有意鲁莽>无意鲁莽;成熟期负债<10%
错误预算闸门:Error Budget=1−SLO,烧完即冻结发布
数据迁移四步:双写→对账→切读→停写
变更分级:影响面×可回滚性×是否数据变更三维度定级
发布决策树:检查单→金丝雀→分批→全量;重大故障 5 分钟内首个止损
绞杀者模式:facade 引流→逐能力迁移→旧系统下线,替代大爆炸重写
DORA 四指标:部署频率/变更前置时间/变更失败率/MTTR
M06 运行时架构原则
面向失败六层递进:超时→重试幂等→限流→熔断→降级→隔离
迟滞阈值+稳定窗口:防扩缩容震荡与告警风暴双保险
隔离三型:故障/资源/数据;无界队列是隔离天敌
无状态优先:状态外置 Redis/DB,扩展与发布自由前提
回滚三件套:可回滚+可灰度+可监控,缺一不上线
可观测三支柱:Prometheus/ELK/SkyWalking,traceId 全链路关联
泄漏信号速查:FD 30 分钟单调涨、CLOSE_WAIT>20%、池 waiting>0;池 max≈下游可承受×0.8
Fail Fast 四防线:输入/组件/时间/并发,try-with-resources
M07 分布式心智
一致性三问:容忍旧值多久?允许重复还是丢失?强一致还是 Saga?
故障域≤冗余度:N−1 原则,冗余必须覆盖最大故障域
缓存非源四档:强一致不缓存/TTL≤1s;准实时 1~10s 或 CDC;最终一致分钟级+对账
缓存参数速查:TTL 随机 ±10% 防雪崩、空值≤60s、互斥重建≤200ms、单 key>5000 上多级
事务选型:优先最终一致(本地消息表/Saga/TCC);XA 最后手段;补偿前提=幂等
八大谬论:网络可靠/延迟为零/带宽无限/网络安全/拓扑不变等
远程调用代价:比本地慢 3~6 个数量级,设计先算调用次数
M08 高并发与吞吐
拆分顺序:动静分离→读写分离→负载均衡→分库分表→异地多活(AKF 三轴)
拆分阈值:QPS 破 5000 分库分表,破 5 万异地多活
分片前置:单机写>5000 TPS 或单表>2000 万行即规划分片
慢 SQL 判据:long_query_time=0.1s;rows_examined/sent>100=索引失效
背压:宁可快速失败不无界缓冲;线程池拒绝策略本质=背压
背压断裂信号:队列 5 分钟单调涨+内存涨而错误率不升;MQ prefetch 默认 256
热点治理三层:识别→拆散→削峰;单账户 3 万 TPS 拆 16 影子子账户
线程数公式:CPU 密集≈核数;IO 密集=核数×(1+等待/计算),×2~4 起步压测
利特尔定律:L=λ×W;200 线程×0.2s=1000 QPS,反推容量与扩容
M09 高可用与可靠
可用性公式:A=MTBF/(MTBF+MTTR);99.9%=月 43 分钟错误预算
多活分级:冷备→热备→主从→双活→多活;峰值水位<70%
限流四算法:计数器→滑动窗口→漏桶→令牌桶,按精度递进
熔断三级联防:Nginx→网关(Redis+Lua)→Sentinel,网关阈值>应用×实例数
容灾递进:冷备→同城双活→异地双活→两地三中心;Binlog 同步≤50ms
容量五步压测:染色→影子隔离→Mock→梯度加压(错误率>0.1% 或 RT 翻倍即停)→建模留 30% 冗余
冗余与共识:Raft 多数派 N/2+1;3 副本容忍 1 故障性价比最高
混沌实验四步:定稳态→假设→注入→证伪;稳态异常自动回滚
M10 高性能与延迟
四类等待四条路径:CPU→火焰图;IO→慢查询;锁→线程 dump 看 BLOCKED;GC→GC 日志
目标函数先行:延迟/吞吐/足迹不可兼得;低延迟=G1/ZGC+MaxGCPauseMillis
GC 基线四指标:暂停 P99、gc.time/wall_time、分配速率、晋升速率
分层 ROI:架构层 10 倍→系统 2-5→应用 2-3→代码 1.5→JVM 1.2 倍;一个缓存可能胜过所有 JVM 调优
延迟阶梯:L1 纳秒→内存 ~100ns→SSD ~10μs→磁盘 ~10ms→网络 50ms+
命中率红线:Buffer Pool<95% 先优化索引,别急着加机器
缓存三问题:穿透→布隆/空值;击穿→互斥锁;雪崩→随机 TTL/多级
存储引擎选型:B+Tree=OLTP;列存=OLAP;LSM=写多读少
优化五步:测量→假设→实验→验证→回归,禁无测量优化
M11 变更与副作用纪律
预算冻结线:燃尽率>2 倍预算/天即冻结发布
灰度节奏:1%→10%→50%→100%,每档≥30 分钟观察
回滚时长目标:配置≤1 分钟、镜像≤5 分钟;回滚演练每季度
幂等键构成:业务类型+业务主键+请求摘要;去重窗口≥24h~7d
重试纪律:指数退避+抖动,上限 3~5 次,(n+1)×timeout≤上游超时
超时链递减:客户端 3s>网关 2.5s>服务 2s>单跳≤500ms,各跳留 20% 余量
对账三档:T+1 全量/准实时 5-10 分钟(金额类)/实时逐笔
对账告警阈值:金额类差异率>0.01%、非金额>0.1% 即告警
差错红线:先冻结争议单再冲正,禁止直接改余额
M12 Java 生态心智
并发优先序:不可变>并发集合>无状态设计>手工加锁;业务池与 IO 池分离
三性排查模板:i++/check-then-act=原子性;无 volatile=可见性;DCL 漏 volatile=有序性
工具速查:LongAdder 写多场景;JEP 491 synchronized 不再 pin 虚拟线程
JVM 排查四件套:GC 日志、堆转储、JFR、JMC,数据驱动而非玄学调参
OOM 五落区:堆/元空间/直接内存/栈/线程,先问落哪个区
容器参数:-Xmx=limit 的 70% 或 MaxRAMPercentage=70
OOMKilled exit 137:容器层拿不到堆转储,先核对 limit 与 RSS 差值
事务失效三查:private/final 方法、自调用绕过代理、默认只回滚 RuntimeException
Spring 配置优先级:命令行>系统属性>环境变量>外部配置>application-{profile}
M13 安全工程心智
四原则+零假设:最小权限/零信任/纵深防御/安全左移;假设每个组件都会被攻破
纵深四道:认证授权→会话管理→输入验证→输出编码;白名单优先
注入防护:SQL 一律 #{} 禁 ${};SameSite+CSRF token;输出按上下文编码
口令哈希链:Argon2id>scrypt>bcrypt(cost≥10)>PBKDF2(≥600000);禁 MD5/SHA-1
认证协议:OAuth2 授权码+PKCE;JWT 显式算法防 alg=none、access_token 15min
密钥生命周期:生成→HSM/KMS→90 天轮换→销毁全托管
加密选型:AES-GCM 禁 ECB;RSA-OAEP≥2048;SHA-256/3;SecureRandom;TLS≥1.2 优 1.3
后量子迁移:ML-KEM/ML-DSA(FIPS 203/204),2030 年前完成迁移规划
M14 排障与复盘
止血优先序:回滚>降级>限流>扩容>重启>切流量;先保留现场再离线分析
证据链标准:错误率看 5 分钟粒度;火焰图采样≥60s;堆转储取 OOM 前+现场两份
对照实验:观察≥30 分钟;样本量 n≥(1.96σ/Δ)²
四步闭环:止血→定位→根因(5Whys)→复盘(blameless,改进项带 owner+期限)
5Whys 红线:根因指向流程/系统缺陷,不许落在人疏忽
自愈边界:网络抖动/OOM/依赖超时可自愈;DB 主从切换/数据损坏必须人工
可观测分工:Metrics 答发生了什么、Tracing 答在哪里、Logging 答为什么
时间线硬指标:3 分钟响应→止血→留现场→24h 复盘→混沌演练验证;盯 MTTD/MTTR
M15 势定律
90-9-1 法则:90% 潜水/9% 偶尔贡献/1% 持续创造——冷启动先服务好前 1%
邓巴数 ~150:超出后靠制度不靠信任;单服务认知半径上限
Hype Cycle:热门与生产可用错峰 1-3 年,核心链路只用 plateau 期技术
梅特卡夫定律:价值∝n²,爆炸半径与协调成本同样∝n²
里德定律:可分组群体价值∝2ⁿ——社区型生态增长判断依据
摩尔定律:18-24 个月性能翻倍是历史趋势;延迟敏感路径不赌硬件改善
普特南定律:交付速率∝规模^α(α<1),人月不可线性相加
死海效应:强者流失弱者沉淀——用成长通道对冲
彼得原理:员工会被提拔到不胜任层级——设技术 IC 双通道晋升
M16 研发前段流程与软技能
需求澄清:模糊诉求→可验收判据,目标/约束/非目标三层;禁"体验更顺"类无阈值表述
问题定义 & 范围切分:区分症状/问题/方案,先解问题不先建系统;MVP 按端到端主链路闭环+不做清单
估点 & ADR:乐观/最可能/悲观三值区间暴露不确定性;方案文档固定四段(背景/候选对比/结论/失效条件),追加不覆盖
设计评审 & 风险登记:会前写明裁决三件事+按故障域指定裁决人;风险转成触发信号+预案+责任人+最晚决策时间
依赖 & 里程碑:关键路径画时间线+提前量告警;里程碑=可运行产物非百分比,绑定真实环境验证
变更提案 & Code Review:影响面/灰度/指标/回滚四件齐备且回滚预演;评审意见分级阻断/建议/疑问,风格交工具
协作软技能:结对轮岗让关键模块≥2 人可独立变更;技术写作可检索(术语一致)+可执行(前置/步骤/失败);会议会前材料+结论落盘
跨团队 & 冲突收敛:契约含 SLA/变更通知期/首响方/裁决人;先对齐判据再比方案,约定时限与裁决人
向上沟通 & 复盘:坏消息早报四段(事实/未知/动作/支持);复盘不追责追机制,改进项=检测信号+阻断动作+验收
带人 & 知识沉淀:新人端到端小闭环+结构化反馈;经验写成场景+判据+动作并嵌检查清单/门禁,定期清理
二、AI 方法论专篇(道·法·术,L01-L03)

AI 制品是非确定系统:语法层全绿不构成安全证明,全部判据都要落到「可评测、可回滚、可追溯」上。

读法:道立心智、法定闸门、术定实现;与 M 篇同色系,可对照阅读
第一判据:凡把概率组件当确定性组件验收的方案,默认不可上线
准入三项:评测基线、确定性控制面、语义可观测信号缺一不可
回指:M 篇「器」为无卡概念段,纪收口研发前段流程与软技能;AI / Agent 专项延展独立成篇
L01 第一性与心智模型
不确定性是第一设计对象:AI 输出非确定,先定义「哪些错不抛异常」再列功能清单;把概率组件当确定性组件验收默认不可上线
评测先行:Prompt / 索引 / 模型 / 工具等资产没有评测就没有回归基线;评测集与生产流量严格隔离
语义可观测优先:HTTP 200 与零错误率不构成安全证明,看板必须含语义正确率与行为基线偏离
人仍在环:资金、权限、不可逆动作由人作最终仲裁;可写工具默认挂 HITL,确认界面须给依据、影响范围与回滚方式
协议收敛:多 Agent / 多工具接口各自定义会让协作税平方上升,收敛到 MCP / A2A 把 N×M 降为 N+M
知识静默失效:检索、记忆、索引会随业务过期且不报错;语义时态须作为一等概念,带生效窗口与失效信号
判定句:语法层全绿恰是风险信号;能说出盲集抽样复核与 kill switch 的触发条件,才算心智到位
回指:与 L03 确定性边界、静默失效立法、状态写入准入相互印证
L02 原则·框架·治理闸门
五段框架:立项·选型 → 数据·上下文 → 编排·工具 → 评测·发布 → 运维·治理·退役;每段写明退出标准与下一阶段入口门禁
能力准入:工具 / 模型 / 检索源先登记元数据与风险等级,过闸门才放行;必填鉴权、幂等、HITL、回滚
发布门禁:确定性单测 / 语义评测 / 混沌注入分层设阈,以非劣效界值而非分数持平阻断退化
全景剖面:前置护栏 → 检索 → 记忆 → Prompt 组装 → 网关 → 决策 → 工具 → 后置护栏 → 记忆写入;每个能力标明控制面或数据面归属
供应链:供应方静默升级等价未走门禁的生产变更;锁定组合版本、约定退役窗口、产出 ModelSBOM
反模式清单:缓存 key 只按 query、隔离写在 LLM 侧、压缩丢否定约束、快照不可复现、组合越权,上线前逐项打勾
成本单位经济:以每完成任务成本 CPS 为第一指标,分摊推理 / 基础设施 / 运营,运营侧监督税与协议税是最大隐藏项
合规与治理:合规按功能叠加且由独立服务裁决;职责边界不清的能力不予立项,高后果变更走委员会 + 窗口期 + 冻结
L03 技术·实践·反模式
变更必回归:Prompt / 索引 / 模型 / 工具任一改动过同一黄金集;可写工具契约必含鉴权、幂等、超时与人工确认
确定性边界:校验、权限、限流、幂等、熔断、审计一律置于模型之外;把「请谨慎」写进 Prompt 而不在网关硬拦截即违规
验证不可自证:验证器独立于生成组件,证据须为 Schema、返回码、校验和、业务规则断言等硬证据
步数预算:端到端可靠性是各步成功率乘积,退化由步数主导;扩窗口或压缩上下文都不改变乘积结构
静默失效立法:返回成功但语义错列为一级故障;四型为成功码下的语义错、行为漂移、错误被转成流畅叙述、用户静默放弃
状态写入准入:记忆与索引写入按生产变更准入,须带来源谱系、一键回滚点与盲集比对;无回滚点不写入
评测独立性:基线冻结、样本来源隔离、评估器版本登记;judge 与被测模型同源会把共同偏见放大成一致通过
语义可观测准入:语义正确率信号、行为基线、Bad Case 回写路径齐备才放行,否则立法不可执行
缓存与网关:语义缓存 key 须含租户、会话、模型版本、采样参数与检索上下文;模型调用统一走网关收口路由 / 计量 / 熔断
证据与退役:生成绑定可追溯证据 ID,矛盾检测失败即拦截;资产下线须无感切换、可回滚、可审计并出具遗忘权销毁证明
三、技术栈深度(C01-C18)

每篇先记两类「硬结论」,再记机制原理:参数硬规则与版本锚点是排障与选型最先要用、最不能记错的部分。

JVM:-Xms=-Xmx;生产必配 ExitOnOutOfMemoryError;堆≥32G 压缩指针失效,单实例建议 31g
GC:CMS 已移除、G1 默认(暂停 200ms/IHOP 45%)、分代 ZGC 需 JDK21
并发:volatile 不保证原子性;偏向锁已废弃;DCL 单例必须 volatile
MySQL:双 1 配置;Next-Key Lock 防幻读;B+ 树三层约 2189 万行是容量参照
Redis:主从→哨兵→Cluster 三级演进;大 key 治理优先于扩容
消息队列:Kafka 拼吞吐、RocketMQ 拼功能(事务/延迟消息)、RabbitMQ 灵活路由
微服务:Ribbon 已废弃;注册中心 AP/CP 按业务场景选
AI 工程:Spring AI 1.0 GA→2.0 GA(Boot 4.x/Java 21+);chunk 512/overlap 64 起步
Spring:事务传播 7 种/隔离 4 级;循环依赖三级缓存只解 setter 注入
网络 IO:TIME_WAIT 2MSL;零拷贝 sendfile/mmap 减少态间拷贝
响应式:Reactor 背压四策略;IO 密集可被虚拟线程替代,CPU 密集才选它
C01 JVM 内存与类加载
运行时数据区:线程私有=栈/程序计数器;共享=堆/元空间/直接内存;OOM 类型按区域对应
Metaspace:MaxMetaspaceSize 必须显式设(256-512m),否则无限增长吃本地内存
容器参数:UseContainerSupport+MaxRAMPercentage=70-75 代替固定 -Xmx
对象内存:压缩指针下对象头 12B;堆≥32G 压缩指针失效,单实例建议 -Xmx31g
类加载五阶段:加载→验证→准备→解析→初始化;双亲委派=安全+类唯一性
打破委派场景:SPI 线程上下文加载器、Tomcat 隔离、OSGi
类卸载三条件:实例全回收+ClassLoader 回收+Class 无引用;加载器泄漏是 Metaspace OOM 主因
反射并发:Field/Method 的 setAccessible 改 override 无同步,多线程交替开关偶发 IllegalAccessException;缓存后全链路禁再调 setAccessible
MethodHandle 选型:热点链路优先 MH(unreflectGetter 跨 JDK8-25 稳);反射不保证目标对象线程安全;ReflectionData 懒加载宜启动预热
版本锚点:17/21/25 LTS;Boot3 强制 jakarta.*;分代 ZGC JDK21 需 ZGenerational
C02 GC 与性能调优
GC Roots:栈引用/静态变量/常量/JNI/活跃线程/锁持有对象
分代算法:新生代复制(Eden:S0:S1=8:1:1);老年代标记整理;卡表 512B 维护跨代引用
收集器里程碑:CMS JDK14 移除;G1 JDK9 默认(2048 Region、暂停 200ms、IHOP 45%);ZGC JDK15 转正/21 分代
参数硬规则:-Xms=-Xmx;生产必配 ExitOnOutOfMemoryError
CPU 100% 五步法:top→top -Hp→printf %x→jstack→grep nid;Arthas thread -n 3
FullGC 七大原因:老年代不足/元空间不足/大对象直入/System.gc/泄漏/浮动垃圾/晋升失败
泄漏 vs 不足:FullGC 后老年代能回落=容量不足,不能=泄漏;jmap -histo:live 触发 FullGC 慎用
C03 并发与锁
volatile:可见性+有序性不保证原子性;写后 StoreLoad 屏障最贵;底层 MESI
happens-before:8 条规则是 JMM 判断准绳
DCL 单例:实例必须 volatile,防 new 重排序拿到半成品
锁升级:无锁→轻量级(CAS 自旋)→重量级;偏向锁 JDK15 已废弃
AQS 底座:volatile state+CLH 变体队列+CAS 入队+park 挂起;非公平锁吞吐更高
CHM 演进:JDK7 Segment→JDK8 CAS+桶头 synchronized;树化=链表≥8 且数组≥64
CHM size():baseCount+CounterCell[] 分散计数,返回近似值
computeIfAbsent 陷阱:回调内禁阻塞与递归同 key,否则死锁
C04 线程池与虚拟线程
execute 流程:核心→队列→最大→拒绝;无界队列时 max 永不生效
ctl 字段:高 3 位状态+低 29 位线程数;五状态机 RUNNING→SHUTDOWN→STOP→TIDYING→TERMINATED
Tomcat 反转载体:定制 TaskQueue 让 offer 返回 false,变核心→最大→队列;maxThreads 默认 200
虚拟线程本质:N:M 调度栈存堆上;创建 ~1μs vs 平台线程 ~1ms;不池化
Pinning 陷阱:synchronized 内阻塞/JNI 固定载体线程;JDK24 JEP 491 修复
无时间片抢占:CPU 密集任务会饿死其他 VT,不适合
ThreadLocal→ScopedValue:JDK25 GA,不可变作用域传递
C05 Spring 核心
refresh() 13 步锚点:第 5 步 BFPP 改图纸;第 11 步实例化非懒加载单例
Bean 生命周期:实例化→属性填充→初始化(Aware→@PostConstruct→afterPropertiesSet→init→BPP/AOP 代理)
三级缓存:一级成品/二级早期引用/三级 ObjectFactory;AOP 代理只创建一次;Boot 2.6+ 默认禁循环依赖
传播三剑客:REQUIRED 共用;REQUIRES_NEW 独立连接;NESTED savepoint 子事务
默认回滚:只对 RuntimeException+Error 回滚,受检异常不回滚
事务失效 7 场景:自调用/非 public/catch 吞异常/受检异常/非 Bean/MyISAM/传播配错
rollback-only 连锁:内层标记后外层 catch 住仍抛 UnexpectedRollbackException
afterCommit 陷阱:提交后 ThreadLocal 已清,资源需闭包传参
C06 Spring Boot 现代化
自动配置:Boot3 起 spring.factories→AutoConfiguration.imports;@ConditionalOn* 条件装配
AOT/Native:JIT 启动 2-10s/内存 200MB+ vs Native 10-100ms/20-50MB,构建分钟级
Security6:删 WebSecurityConfigurerAdapter→@Bean SecurityFilterChain
配置优先级:命令行>SPRING_APPLICATION_JSON>JNDI>系统属性>环境变量>jar 内 application.yml
graceful shutdown:Boot 3.4+ 默认开启;超时必须小于 K8s terminationGracePeriodSeconds
K8s 下线时序:preStop 与 Endpoint 摘除并发→SIGTERM→宽限期强杀;preStop 里 sleep 等摘除传播
探针分离:liveness(重启)与 readiness(摘流量)必须分开定义
C07 MySQL 深度
B+ 树容量:16KB 页×1170 扇出×3 层≈2189 万行;非叶只存键、叶子双向链表
回表与覆盖:二级索引存主键→回表;Extra 出现 Using index 即覆盖索引
MVCC:DB_TRX_ID+DB_ROLL_PTR+undo 版本链+ReadView;RC 每次新建,RR 首次复用
锁规则:RR 当前读靠 Next-Key Lock;唯一索引命中退化 Record Lock;无索引 UPDATE 锁全表
日志与 2PC:Redo+Undo+Binlog;redo prepare→写 binlog→redo commit;双 1 配置
EXPLAIN 阶梯:system>const>eq_ref>ref>range>index>ALL;索引失效 8 场景(函数/隐式转换/最左前缀/左模糊等)
深分页:延迟关联或游标分页;pt-query-digest 按总耗时排序
分库分表:>1000 万行或 50GB、QPS>5000;分片数取 2 的幂;迁移双写 5 步
复制:三线程 Dump→IO→Relay;8.0 WRITESET 并行复制(8.4 起默认)
C08 Redis 与缓存
类型与编码:5+4 类型;Redis7 ziplist→listpack 消除连锁更新;embstr≤44 字节
HLL:固定 12KB,基数误差 0.81%
三大问题:穿透→布隆+空值;击穿→互斥/逻辑过期;雪崩→随机 TTL±20%+多级;命中率 95%+
持久化:RDB fork+COW;AOF everysec 最多丢 1s;4.0+ 混合持久化
Cache Aside:先更 DB 再删缓存(反序并发窗口更高);进阶延迟双删/Canal
Redisson 锁:Hash{threadId:重入数}+Lua+WatchDog 续期;RedLock 有争议慎用
Cluster:16384 槽 CRC16;gossip 2KB 位图建议≤1000 节点;PFAIL→FAIL→选举
淘汰策略:默认 noeviction 危险;推荐 allkeys-lfu(4.0+);近似 LRU 采样 5 个
C09 分布式系统
Kafka 高吞吐四机制:分区并行/顺序写(600MB/s vs 100KB/s)/Page Cache/sendfile 零拷贝
可靠性配置:acks=all+min.insync.replicas=2+unclean.leader.election=false
幂等与事务:幂等=PID+seq(单分区);事务=transactional.id+read_committed;Kafka 4.0 KRaft 唯一
一致性哈希:普通取模迁移全部数据 vs 一致性哈希 1/(N+1);虚拟节点防倾斜
时钟与因果:Lamport 偏序;向量时钟检测并发;HLC 混合时钟;nanoTime 仅同 JVM
事务演进:2PC→TCC→Seata AT→SAGA→可靠消息
幂等方案:唯一索引/Token/乐观锁/状态机/防重表——分布式锁不是幂等事实来源
Snowflake:1+41+10+12 位,4096/ms;必须处理时钟回拨
C10 微服务与云
注册中心 CAP:选 AP;Eureka 自我保护=15min 失败>85% 停剔除;Nacos Distro/Raft 双模
配置推送:Nacos 长轮询 29.5s;ZK Watch 毫秒级
事务吞吐量级:TCC ~3 万 TPS>本地消息表 ~2 万>Seata AT ~1 万(全局锁瓶颈);现代默认=Outbox+CDC
负载均衡链路:@LoadBalanced→LoadBalancerInterceptor→choose→URL 重写;Ribbon 已移除
限流四算法:固定窗口(临界双倍)/滑动窗口/漏桶(恒速)/令牌桶(突发)
熔断三态:Closed→Open→Half-Open;Hystrix 维护模式→Resilience4j 或 Sentinel
C11 中间件工程
Kafka EOS 三要素:幂等生产者+事务协调器+位移事务提交;跨外部系统退化=业务幂等+Outbox
副本一致性:leader epoch 防误导截断;ISR 滞后阈值 30s
副本三件套:replication.factor=3+min.insync.replicas≥2+unclean=false 缺一不可
定时任务公理:触发可以重复,处理必须幂等
幂等三件套:唯一索引+幂等表+分布式锁
分片任务:动态分片按 id%分片数;故障转移=心跳超时重派+补跑入口
分片数变更:重算后需补偿扫描防漏跑(区间边界漂移)
C12 AI 工程
Spring AI 定位:统一抽象+可插拔+Starter(2025 GA);ChatClient(Fluent+Advisor)vs ChatModel;2.0 硬约束 Java21+Boot4
Embedding 数学:归一化后余弦=点积=1−L2²/2 等价,实践中点积最快;检索演进暴力→LSH→IVF→HNSW
Function Calling:@Tool 生成 Schema→LLM 输出意图(不执行)→宿主反射执行→结果回填→循环;必设最大轮次
RAG 召回治理链:查询改写→混合检索 BM25+稠密(0.3:0.7,RRF)→Rerank top20→top5→引用溯源;chunk=512/overlap=64
幻觉三道防线:Grounding 强约束+引用溯源+LLM-as-a-Judge;RAGAS 四指标进 CI
LLM 稳定性:慢比错常见→慢调用比例熔断(RT>8s 占 50% 熔断);限流按 TOKEN/s;降级链大→小→语义缓存→规则
Prompt 注入:OWASP LLM01 本质=指令与数据未分离;最大威胁=间接注入;外部内容 untrusted 标签隔离
十亿级向量:1024 维×10 亿≈4TB;HNSW 千万级召回>98%;IVF_PQ 亿级压缩 8-32 倍;DiskANN 落盘
Agent 安全笼:失败上限 3 次/死循环状态去重/预算四维硬熔断/危险操作人工在环
语义校验网关:类型转换→Schema 强校验→业务规则→拒绝策略;验证器独立于模型,禁止裸解析原始文本
身份注入:网关写执行上下文、模型不拿身份参数;参数白名单 + 高风险参数快照 + 业务终审
语义 SRE:语义正确率与行为基线偏离为准,缓存 key 全维度哈希且命中后强制后置校验
C13 网络与高性能 IO
TCP 状态机:TIME_WAIT=2MSL 只在主动关闭方;CLOSE_WAIT 堆积 100% 是应用未 close
TIME_WAIT 参数:tcp_tw_reuse 仅客户端出站;SO_REUSEPORT 多进程监听;tcp_tw_recycle 已移除
拥塞控制:Reno→CUBIC(Linux 默认)→BBR(带宽×MinRTT);发送窗口=min(cwnd, rwnd)
HTTP 演进:1.1 队头阻塞→2 多路复用(TCP 层丢包阻塞)→3 QUIC 流独立恢复+0-RTT
TLS 1.3:握手 2-RTT→1-RTT/0-RTT;只留 ECDHE 前向安全;0-RTT 有重放风险非幂等禁用
NIO 核心:Selector 封装 epoll;Buffer 四属性 flip/clear;selectedKeys 必须 remove
Reactor 三模式:单线程→单 Reactor 多线程→主从(Nginx/Netty 默认)
Netty 内存:PooledByteBufAllocator jemalloc 分档;引用计数成对;泄漏检测 advanced
零拷贝阶梯:传统 4 拷贝→mmap 2 拷贝→sendfile 2 拷贝 2 切换→DMA gather 0 CPU 拷贝;TLS 让零拷贝失效
C14 数据库与存储
MongoDB 向量:文档+向量同库免双写;numCandidates=limit×10-20;百万-千万级,上亿迁专用库
Milvus 存算分离:数据全存对象存储,QueryNode 无状态;Growing→Sealed 建索引
三大向量索引:IVF 省内存亿级/HNSW 召回 95%+ 千万级/DiskANN 落盘十亿级
TiDB HTAP:TiKV 行存(Region 96MB)+TiFlash 列存(Learner 异步);Percolator 2PC;主键禁自增
PG vs MySQL:MVCC=堆多版本+VACUUM;必须把 autovacuum/长事务纳入 SRE;必须 PgBouncer
OLAP 选型:日志宽表极致吞吐→ClickHouse;实时数仓+JOIN+高并发→Doris/StarRocks;都不是 OLTP 替代
CDC 四要素:位点可信+分区保序+下游幂等+延迟对账可观测;Exactly-Once=至少一次+下游幂等
Outbox vs CDC:领域事件走 Outbox,行级镜像走 CDC,勿一种管道扛两种语义
C15 响应式编程
Reactive Streams 契约:Subscriber 主动 request(n) 拉取,Pull 模型背压是协议级约定(JDK9 Flow)
Mono vs Flux:0..1 vs 0..N;基数语义编码进类型
Cold/Hot:Cold 每订阅独立执行;Hot 用 Sinks;复用需 cache() 否则放大下游 QPS
背压四策略:BUFFER(OOM 风险)/DROP/LATEST/ERROR;无限流必设
线程模型:publishOn 影响下游、subscribeOn 只影响源;boundedElastic=IO(10×核数);block() 只许边界
Context 替代 ThreadLocal:随流传递;contextWrite 影响上游、deferContextual 见下游
WebFlux 前提:全栈非阻塞才有收益,任一环节阻塞=假响应式;迁移事务用 TransactionalOperator
R2DBC:背压可传导到 DB socket;连接池 r2dbc-pool,HikariCP 不适用
操作符选型:1-to-1 map;1-to-n flatMap(不保序);保序 concatMap;最新 switchMap
VT vs Reactive:VT 无背压——SSE/流式背压 Reactive 仍是唯一解
C16 AI 服务生产栈 · Python 侧
栈分工:推理与特征工程放 Python,接入层、鉴权限流、强一致写与业务编排留 Java,用 Protobuf / gRPC 边界解耦
运行时分层:FastAPI 做轻量封装与前后处理,vLLM 主打高吞吐 LLM 推理,Triton 做多框架统一推理与多模型编排
显存预算:常驻显存 ≈ 权重 + KV 缓存 + 激活;量化砍权重不砍 KV,并发上涨时 KV 才是瓶颈;启动即预热
批处理:连续批处理按 token 级调度提升显存利用率,按 P99 反推批大小,在线与离线流量分池
流水线:预处理 CPU 线程池、GPU 异步推理、后处理异步收尾三者重叠;慢请求瓶颈常在预处理与序列化
检索分层:Embedding 服务、向量库 ANN、重排三段式,重排只在 Top-K 上做以控制算力成本
并发模型:进程级多 worker 吃满多核多卡 + 协程级 asyncio 处理 IO 等待;同步阻塞会卡死整池
服务间通信:统一 IDL,跨语言调用带 deadline,Java 侧舱壁隔离与熔断降级,W3C trace 串联定位跨栈慢点
C17 测试体系与质量工程
测试成本曲线:单测快、稳定、定位准,E2E 慢、脆弱、定位难;按「缺陷成本 × 发生频率」给每层定预算
可测性三原则:依赖显式化、业务规则与 IO 分离成纯函数、输出可断言;单测禁止连真实库与网络
集成边界:覆盖模块契约 + 中间件真实语义(事务回滚、索引命中、消息顺序),用 Testcontainers 拉真实实例
消费者驱动契约:消费者定义所需字段与状态码,提供者 CI 校验,把接口耦合从运行时联调前移到提交时验证
E2E 少而精:按用户旅程组织,只断言业务可见结果,显式等待替代 sleep,稳定选择器与数据隔离
混沌闭环:定义稳态指标 → 假设 → 注入 → 观测 → 结论与改进;先在预发做,注入强度逐级升
性能四类:负载 / 压力 / 容量 / 疲劳,流量模型基于真实业务画像,结论产出是否达标 + 瓶颈 + 扩容建议
门禁分层:提交(单测+静态)、合并(集成+契约)、发布(E2E+性能+安全+Go/No-Go),规则进仓库且可本地复现
C18 跨语言运行时与工程选型
四维判据:工作负载特征 × 生态成熟度 × 团队能力 × 运维成本;每引入一种语言都要付构建、可观测、安全与值班的固定税
JVM 边界:JIT 靠预热换峰值吞吐、成熟 GC、虚拟线程与事务治理生态;落在接入层与强一致写
CPython 天花板:GIL 使并行单位是进程,事件循环只解决 IO 等待,对象内存开销大让 RSS 悄悄翻倍
Go / Rust / Node:网关与 Operator 用 Go 的 GMP 与静态二进制;Rust 只在延迟、内存或安全成硬指标时引入;Node 适合 BFF、SSR 与工具链
契约治理:Protobuf / OpenAPI 单源入仓,codegen 产出,字段只增不删编号不复用,CI 跑 breaking-change 检查
跨进程边界:跨主机默认 gRPC + deadline + 熔断;同机极低延迟才上共享内存;FFI 只暴露稳定 C ABI
序列化与可观测:跨语言数值、时间与时区语义统一;统一 traceId、指标命名与单位,跨栈拓扑可一眼看全调用链
演进治理:把语言数量当架构指标,用端到端基准含 GC / 序列化 / 冷启动 / RSS 做决策,定期复盘退役评估
四、原理速查(E01-E12)

底层原理是一切工程决策的根——选型查演进、排障查机制、优化查瓶颈,版本敏感点尤其要对准原理而非参数。

JVM 内存:运行时数据区五区域,OOM 类型按区域定位;Metaspace MaxMetaspaceSize 必设 256-512m
GC 原理:CMS JDK14 淘汰、G1 JDK9 默认、分代 ZGC JDK21 开启(-XX:+ZGenerational)、ZGC 染色指针读屏障
类加载:双亲委派=安全+类唯一性;SPI/OSGi/Tomcat 打破委派场景;类加载器泄漏是 Metaspace OOM 主因
并发:volatile 可见性+有序性不保证原子性;偏向锁 JDK15 废弃;CHM JDK7 Segment→JDK8 CAS+synchronized
虚拟线程:JDK21 GA N:M 调度;JDK24 JEP491 几乎消除 synchronized pinning;不池化
Spring:IOC 三级缓存只解 setter 注入循环依赖;Boot3 spring.factories→AutoConfiguration.imports;事务默认只回滚 RuntimeException
MySQL:MVCC Read View+undo log 版本链;B+ 树聚簇索引存全行二级索引存主键;RR 通过 next-key lock 防幻读
Redis:单线程命令执行+IO 多路复用;缓存穿透/击穿/雪崩防护组合;Redlock 多节点锁争议
分布式:CAP 三选二 P 必选;Raft 比 Paxos 易工程实现;Seata AT undo_log+全局锁 vs TCC Try-Confirm-Cancel
消息队列:Kafka 零拷贝顺序写 Exactly-Once=幂等+事务;RocketMQ 事务消息半消息二次确认;死信队列重试 16 次
网络安全:TCP TIME_WAIT 2MSL;TLS 1.3 1-RTT 握手前向安全;OAuth 2.1 废弃隐式/密码模式;JWT RS256 禁 none
数据结构:红黑树插入最多 2 次旋转删除最多 3 次;跳表比平衡树更易并发;一致性哈希+虚拟节点防数据倾斜;LRU 哈希表+双向链表
E01 Java 基础与集合
String 缓存:-128~127 默认,-XX:AutoBoxCacheMax 可扩上限
Integer 同 Long 异:Integer/Long -128~127 缓存;Short/Byte 全缓存;Long 需 -XX:AutoBoxCacheMax 手动启用
HashMap 扰动:高 16 位异或低 16 位;链表转红黑树阈值 8 + 数组长度 ≥ 64
Sequenced Collections:JDK21 新增 SequencedCollection/SequencedSet/SequencedMap,统一首尾元素操作
Records:JDK16 GA,不可变数据载体,自动生成 equals/hashCode/toString/访问器
Sealed Classes:JDK17 GA,封闭继承层级,permits 限定子类
GraalVM Native:封闭世界假设,反射/动态代理/资源需显式配置,Boot3 AOT 适配
E02 JVM 与内存
运行时数据区:线程私有=栈/程序计数器;共享=堆/元空间/直接内存;OOM 按区域定位
GC 演进:Serial→Parallel→CMS(JDK14 淘汰)→G1(JDK9 默认)→ZGC/Shenandoah
ZGC 分代:JDK21+ 需 -XX:+ZGenerational,新生代老年代独立收集,吞吐量+10~20%
类加载五阶段:加载→验证→准备→解析→初始化;双亲委派=安全+类唯一性
打破委派场景:SPI 线程上下文加载器、Tomcat 隔离、OSGi、Spring Boot LaunchedURLClassLoader
Metaspace OOM:MaxMetaspaceSize 必设 256~512m,否则无限吃本地内存;类加载器泄漏是主因
ZGC 染色指针:42 位堆寻址+2 位染色+读屏障并发标记转移重定位
E03 并发编程
volatile:可见性+有序性不保证原子性;写后 StoreLoad 屏障最贵;底层 MESI 缓存一致性
happens-before:8 条规则是 JMM 判断指令重排的准绳,volatile 写→volatile 读是跨线程可见
AQS:CLH 变体队列+独占/共享模式+volatile state+CAS 入队+park 挂起;非公平锁吞吐更高
CHM 演进:JDK7 Segment(每段一把锁)→JDK8 CAS+synchronized 桶头;树化=链表≥8 且数组≥64
线程池 7 参数:core/max/queue/keepAlive/TimeUnit/Factory/Handler;无界队列时 max 永不生效
锁升级:无锁→轻量级(CAS 自旋)→重量级;偏向锁 JDK15 废弃
Virtual Threads:JDK21 GA,N:M 调度栈存堆上;JDK24 JEP491 几乎消除 synchronized pinning
ThreadLocal 泄漏:ThreadLocalMap 弱引用 key+强引用 value,线程池场景用完必 remove
CAS 原子类:AtomicInteger→LongAdder 分段累加;VarHandle 替代 Unsafe;StampedLock 乐观读
E04 Spring 生态
循环依赖三级缓存:一级成品/二级早期引用/三级 ObjectFactory;AOP 代理只创建一次;Boot2.6+ 默认禁
refresh() 13 步锚点:第 5 步 BFPP 改图纸;第 11 步实例化非懒加载单例;第 12 步初始化(BPP/AOP 代理)
AOP 动态代理:JDK 代理(接口)vs CGLIB(继承);Advisor 链+MethodInterceptor 拦截
事务失效 7 场景:自调用/非 public/catch 吞异常/受检异常/非 Bean/MyISAM/传播配错
Boot 自动装配:Boot3 spring.factories→AutoConfiguration.imports;@ConditionalOn* 条件装配
事务传播三剑客:REQUIRED 共用;REQUIRES_NEW 独立连接;NESTED savepoint 子事务
默认回滚:只对 RuntimeException+Error 回滚,受检异常不回滚;rollback-only 连锁抛 UnexpectedRollbackException
Spring AI RAG:文档分块→Embedding→向量检索→重排序→落地面向非结构化知识场景
E05 MySQL 与数据库
MVCC:Read View 构造+undo log 版本链+trx_id 可见性判断;RC 每次 SELECT 新建 RR 同事务共用
B+ 树索引:聚簇索引存全行数据,二级索引存主键值;覆盖索引=查询列全在索引中
最左前缀:联合索引(a,b,c) → where a=? 走索引,where b=? where c=? 不走
Buffer Pool:命中率≥99% 正常;脏页刷盘触发条件=redo log 75% 满或检查点
事务隔离:读未提交→读已提交→可重复读→串行化;InnoDB 默认 RR,通过 next-key lock 防幻读
主从复制:binlog→relay log→redo log;半同步/异步/组复制 MGR;主从延迟治理看 Seconds_Behind_Master
E06 Redis 与缓存
单线程模型:命令执行单线程避免上下文切换耗时;IO 多路复用 Epoll 水平触发
缓存三误判:穿透(布隆过滤器+空值缓存)/击穿(互斥锁+随机过期)/雪崩(过期时间打散+降级)
缓存一致性:Cache Aside 旁路模式写操作先更新 DB 后删缓存;延迟双删/Canal 订阅 binlog
分布式锁:Redisson 看门狗续期 vs RedLock 多节点争议;必须设置过期时间+唯一值+Lua 原子释放
热 key / 大 key:热 key 本地缓存+集群分片;大 key 拆分+Redis Cluster slot 均匀分布
持久化:RDB 快照(恢复快)/AOF 日志(数据安全)/混合模式;AOF 重写 fork 阻塞需监控
E07 分布式与微服务
CAP:Consistency/Availability/Partition tolerance 三选二;分布式系统 P 必须选,CP vs AP 取舍
一致性协议:Paxos/Multi-Paxos(Leader)+Raft(Log Matching+Leader Election);Raft 更易工程实现
分布式事务:2PC(阻塞)/TCC(三阶段)/Saga(长事务补偿)/Seata AT(undo_log+全局锁);选型看业务补偿能力
熔断限流算法:令牌桶(允许突发)/漏桶(恒定速率)/滑动窗口/计数器;Sentinel 自适应
Nacos:注册中心 AP(Distro)/配置中心 CP(Raft);动态刷新 @RefreshScope
Spring Cloud Gateway:路由+断言+过滤器+限流;自适应熔断 Resilience4j
Dubbo:服务导出/引用/SPI 扩展/负载均衡/集群容错;高性能 RPC 框架
高并发架构:限流降级+缓存架构+数据库扩展(分库分表/读写分离)+异步化+无状态化
Outbox / CDC:本地事务同库落箱→Debezium 捕获→投递幂等→对账修复
E08 消息队列
Kafka 高性能:顺序写+页缓存+零拷贝 sendfile+批量压缩;Consumer 从 Leader 分区读
Kafka 分区有序:单分区有序多分区无序;需有序性时单分区或按键分区
ACK 语义:Producer 0(不等)/1(Leader 写成功)/all(ISR 副本全写成功);Consumer 手动提交更安全
Exactly-Once:Producer 幂等(PID+序列号)+事务(跨分区原子写);Consumer 幂等消费或事务提交位移
RocketMQ:事务消息(半消息→本地事务→二次确认)/延迟消息(18 级)/顺序消息/CommitLog 顺序写
消息积压:临时扩容 Consumer+新建临时 Topic 转储;根因分析消费逻辑慢还是上游突发
死信队列:消费失败重试达阈值(默认 16 次)自动进 DLQ;人工介入后转储
E09 网络 IO 与安全
IO 模型:BIO(同步阻塞 1:1)/NIO(多路复用 1:N)/AIO(异步 1:N);Netty NIO Reactor 线程模型
Epoll 触发:水平触发(事件未处理反复通知)/边缘触发(只通知一次需读完);LT 简单 ET 高效
TCP 三次握手:SYN→SYN-ACK→ACK;TIME_WAIT 主动关闭方 2MSL 等待(默认 60s)
零拷贝:sendfile/mmap/DirectBuffer;Netty 通过 FileChannel.transferTo 实现
HTTPS/TLS 1.3:减少 RTT 握手 1-RTT;证书链验证+密钥交换+前向安全 PFS
OAuth 2.1 + PKCE:授权码+PKCE 流程;废弃隐式/密码模式;Refresh Token 轮换防泄露
JWT 安全:RS256 非对称签名必选;声明校验 exp/nbf/iss/aud;密钥轮换;黑名单注销
E10 搜索与 AI
ES 倒排索引:分词→倒排表(postings list)→Skip List 跳表加速合并;BM25 打分 k1=1.2 b=0.75
ES 分片路由:主分片路由 hash(_routing) % numPrimaryShards;副本同步主分片段;段合并 IO 密集
HNSW vs IVF:分层小世界图召回高内存大 vs 倒排聚类内存小召回低;RAG 场景选 HNSW+BM25 混合
RAG 架构:文档分块→Embedding→向量存储→检索→重排序→LLM 生成;双写一致性重建切换
ES Mapping:text(分词)/keyword(不分词);动态模板防字段爆炸;disable_dynamic
AI 制品门禁:Prompt 黄金法则(角色+数据+格式+约束)+评测集(准确率/幻觉率/时延)+版本化
E11 云原生与运维
Docker:Namespace(pid/net/uts/mnt/ipc)/Cgroups(cpu/mem/io)/联合文件系统 Overlay2;镜像分层复用
K8s Pod 调度:NodeSelector/NodeAffinity/PodAffinity/NodeToleration;HPA 基于 CPU/自定义指标自动伸缩
Service 与 Ingress:Service ClusterIP/NodePort/LoadBalancer;Ingress 路由+TLS 终止;CoreDNS 服务发现
可观测性三支柱:Logs(ELK/Loki)+Metrics(Prometheus)+Traces(OTel/Jaeger);W3C TraceContext 传播
OpenTelemetry:Collector 收集处理导出;尾部采样(高基数 Trace 全存低基数存 1%);三支柱关联
FinOps:计量归因+单位成本+预算告警+工程杠杆(Spot/Right-Sizing/预留实例)
E12 数据结构与算法
树选型:二叉搜索树→AVL(严格平衡)→红黑树(近似平衡 2-32倍)→B 树/B+树(磁盘友好);MySQL 用 B+树
红黑树规则:根黑+叶黑+红节点子必黑+每条路径黑节点数相同;插入最多 2 次旋转删除最多 3 次
跳表 SkipList:多层链表结构 O(log n) 查找;Redis ZSet 底层用跳表;比平衡树更易实现并发
布隆过滤器:bitmap+多个 hash 函数;可判不存在不可判存在;Redis 4.0 提供 module
LRU / LFU:LRU 哈希表+双向链表;LFU 计数器+频次桶;Redis 4.0 支持 LFU eviction
一致性哈希:hash 环+虚拟节点解决数据倾斜;分布式缓存/CDN/负载均衡标配
排序算法:快排平均 O(n log n)不稳定/归并 O(n log n)稳定/堆排 O(n log n)不稳定;Arrays.sort 对象用 TimSort
高频算法模板:反转链表/环形检测快慢指针/双指针/滑动窗口/二分查找/TopK 大根堆
五、场景设计框架(S01-S12)

所有场景共用一个骨架:漏斗思维——流量逐层拦截衰减,DB 永远只接最后一层;量化阈值——每个方案必答「当前量级用什么、超过什么阈值演进什么」。

漏斗分层数字:CDN/Nginx 拦大头→网关限流→Redis+MQ 削峰→DB 只接最后一层
防超卖:Redis Lua 原子扣减,DB UPDATE...WHERE num>0 兜底;库存分桶打散热点 key
热点治理:推送聚合批播、记账分离只写流水表、读走 Redis 集群分片
缓存一致性:先 DB 后删缓存、延迟双删/binlog 订阅、对账任务兜底;Cache Aside 是默认方案
高可用四件套:限流(令牌桶/漏桶)、熔断(Closed→Open→Half-Open)、降级、隔离(舱壁/信号量)
分布式事务:本地消息表/SAGA 优先,2PC 性能差是反面教材;Seata AT undo_log+全局锁
分布式锁选型:Redis AP 高性能、ZooKeeper CP 强一致,按场景定;必须设置过期时间+唯一值+Lua 原子释放
全链路压测:影子库表隔离+流量标记透传,找出瓶颈定安全水位;不能在生产硬压
搜索大数据:ES 分片路由 hash(_routing) % numPrimaryShards;HNSW vs IVF 向量索引选型看召回率 vs 成本
长连接场景:WebSocket 心跳 30s+断线重连指数退避;连接数监控+单机 FD 限制;Netty Epoll ET 模式
AI 生产场景:RAG=切分+向量检索+重排+引用溯源;评测集必须版本管理;幻觉兜底规则引擎前置
S01 高并发系统设计
漏斗模型:120 万 QPS 按 CDN/Nginx 拦 70%→网关限流拦 20%→Redis+MQ 削峰 9%→DB 仅放行 1%
防超卖:Redis Lua 原子脚本一次完成去重+扣减,禁先查后扣;DB UPDATE...WHERE num>0 兜底
库存分桶:1000 件拆 10 桶打散热点 key,单桶压力降 10 倍;Redis vs DB 定时对账
短链架构:发号器号段双 buffer+62 进制转码;BloomFilter(误判 0.01%)→Redis→DB 三级拦截 99% 穿透
短链存储:1024 库×4 表=4096 分片;防删除误判用 CuckooFilter
红包拆分:二倍均值法预拆存 Redis List,LPOP O(1) 原子弹出+MQ 异步入账
弹幕聚合:每 200ms 聚合一批(≤50 条)批量广播,推送量降 50 倍
在线统计:HyperLogLog 12KB 算亿级基数误差<1%,禁 SET;心跳 60s 随机抖动
热点账户:记账分离只写流水表,100ms 窗口聚合净额批量 UPDATE(3 万 TPS→约 10)
S02 分布式系统
分布式锁选型:性能优先 Redis(SET NX PX+Lua 释放+看门狗);强一致选 ZK/etcd(fencing token);Redlock 慎用
锁三要素:互斥、防死锁(必须持有时间)、可重入(Hash 记 threadId);释放 Lua 比对 value 防误删
事务选型:强一致 TCC/XA;最终一致 Seata AT/本地消息表/事务消息;TCC 防空回滚与悬挂
Seata 坑:RPC 未传 XID 回滚失效;TCC 未幂等重复扣
分布式 ID:雪花处理时钟回拨与 workerId 分配;号段双 buffer 防断供
雪崩三道防线:熔断降级+线程池隔离(舱壁)+入口限流;链路追踪定位最慢节点
缓存一致性:Cache Aside 写库后删缓存(非更新);延迟双删+Canal 订阅 binlog
幽灵通知:事务内禁直接发通知,用 afterCommit 提交后才发;强可靠上本地消息表
通知口诀:提交才发、回滚不发、参数闭包、强可靠上消息表
S03 数据库与存储
分库分表六步:容量评估(3 年量、2 的幂)→选分片键(user_id 基因法)→倍增扩容→影子双写→diff 校验→灰度切读
分片键红线:表数必须 2 的幂(否则扩容全量重分布);先单机挖尽再拆
慢 SQL 闭环:慢日志+APM 抓 Top10→EXPLAIN→优化优先级 SQL 重写>索引>表结构>架构
深分页:延迟关联或游标分页;LIKE 前导 % 失索引
主从延迟:区分 IO/SQL 线程延迟;强一致读走主库;8.0 WRITESET 并行复制
缓存三问题:穿透→布隆+空值;击穿→互斥+逻辑过期+预热;雪崩→TTL 随机+多级+降级
海量小文件:对象存储替代 HDFS;日志 128MB 合并 Parquet 入湖;生命周期分层
对象存储红线:公网直连有费用+安全风险须走网关收口
S04 微服务架构
拆分方法论:事件风暴识别限界上下文,按领域拆;绞杀者渐进+网关切流;同步链路不超 3 跳
拆分陷阱:共享 DB 未做访问隔离;拆完必须灰度切流不直接全量
网关选型:SCG(WebFlux 异步)+责任链+Sentinel+Nacos 动态路由;网关只做接入不做业务
MQ 积压四步:扩容(消费者≤分区数)→批量/异步化→应急跳过+扩分区→治理(手动 ACK)
灰度发布:X-Gray-Tag 全链路透传+Nacos metadata 路由+影子库隔离;回滚靠路由 30 秒切换
Service Mesh:Istio+Envoy;与 Spring Cloud 双注册共存渐进迁移
配置热更新事故:@RefreshScope 懒重建旧 target,单例强引用导致双实例/泄漏/定时任务重复
配置口诀:配置用 POJO、字段实时取、@RefreshScope 只救 @Value;线程池先 shutdown 旧再建新
S05 性能与稳定性
OOM 五步:现象→归因(泄漏 vs 溢出看 GC 斜率)→证据(Arthas)→根因(MAT Dominator Tree)→JFR 观测 24h
OOM 红线:预配 HeapDumpOnOutOfMemoryError;不摘流量直接 dump 触发长 STW
CPU 100% 四层下钻:top→top -Hp→线程 ID 转 16 进制→jstack 3 次快照 grep
接口优化 200ms→20ms:画链路找 Top3 瓶颈;缓存>并发>批量>索引;CompletableFuture 并行+超时
消息可靠性三段:生产本地消息表;Broker 同步刷盘+复制+分区保序;消费幂等表+手动 ACK
幂等坑:先删标记再执行业务会重复;幂等键禁易变参数;全局有序是伪需求
全链路压测:流量染色影子库+Mock 挡板;Little's Law+排队论;梯度加压+自动熔断
线程池选型:动态调参池做内核+Spring Bean 暴露;快慢任务分池;虚拟线程仍要背压
S06 云原生与 AI
虚拟线程落地:用户态调度只适合 IO 密集;synchronized 换 ReentrantLock 防 pinning;ThreadLocal 改 ScopedValue
LLM 网关:统一接入+每供应商独立熔断+回退链(主→备→小模型→语义缓存→兜底)
RAG 全链路:离线索引+在线(改写→混合检索→RRF 融合→Rerank→引用回答);分块禁一刀切
K8s+JVM:UseContainerSupport+MaxRAMPercentage;三探针分工不可混用;HPA+Cluster Autoscaler 两级弹性
向量库精排:差异化切分→BGE 编码→HNSW;混合召回→Cross-Encoder 重排→Top5 送 LLM
Boot 4 迁移:BOM 锁基线→边缘到核心波次推进→契约测试→CDS/Leyden/AOT 启动分档
S07 综合场景
订单全链路:核心强一致、非核心异步;三段式库存(预扣/确认/回补);支付回调用幂等键+唯一索引
金融风控:Kappa 流批一体;特征三层统一口径;规则短路+模型并行+仲裁合并,100ms 级决策
千万级推送:Netty 接入→Redis 路由→MQ 削峰扇出→多通道;推拉结合+读写扩散混合
零停机迁移:全量→双写(CDC 兜底)→灰度切流→旧库只读 N 天;校验用内容哈希非条数
跨境多租户:区域独立集群数据本地化+tenant_id 行级隔离+异步联邦结算
支付对账三层:Saga/TCC+本地消息表+定时对账;逐笔不能只对总账
订单超时关闭:ZSET/延时消息唤醒→CAS 状态机关单(防与支付回调竞态)→Outbox 回补库存
S08 高可用架构
异地多活:单元化按 userId 固定落单元+binlog 闭环+Fencing 租约防脑裂;RTO<1min、RPO=0
限流熔断体系:入口限流+链路熔断+依赖隔离(舱壁)+降级兜底;线程池配额按 Little's Law
混沌工程五原则:稳态假设/贴近真实/持续/自动化/最小爆炸半径
故障自愈:感知→决策→执行→恢复;宁可慢摘不可误摘;保留人工一键熔断
容量水线四级:安全 60%/预警 70%/限流 85%/熔断 95%;链路可用性是乘积
可观测三支柱:OTel 统一埋点→全程透传→关联分析→告警分级聚合(目标误报 -80%)
TraceId 断裂治理:W3C Trace Context+边界补全(线程池 TTL 装饰/MQ);头部+尾部采样
S09 安全架构
纵深防御四层:WAF→Nginx→应用层→数据层;仅靠 WAF 可绕过,应用层必须兜底
注入坑:MyBatis ${} 即使 ORDER BY 也可注入(白名单映射);富文本按字段差异化净化
API 安全:OAuth2+PKCE+refresh 轮换+JWT RS256+HMAC 签名+timestamp/nonce 防重放
信封加密:DEK/KEK 双层,KEK 存 KMS 永不离开;等值查询用确定性加密
权限双层:RBAC 功能权限+数据权限(拦截器自动注入 WHERE);默认拒绝
越权双防:垂直+水平都要防;禁信任前端 userId
数据合规:Privacy by Design 全生命周期;删除覆盖 ES/Redis/备份;测试禁生产快照
S10 网络 IO
Netty 网关:池化 ByteBuf+Boss/Worker 分工+一致性哈希分片;单机 10 万连接
Netty 坑:不关 TCP_NODELAY 延迟 40ms(Nagle);EventLoop 里执行业务逻辑假死
TCP 粘包:自描述帧(Magic+LengthField+CRC);LengthFieldBasedFrameDecoder;非法长度帧关连接
协议选型:HTTP/2(浏览器)→gRPC(内部)→QUIC(弱网试点);protobuf 字段号只增不改
WebSocket 推送:无状态集群+Kafka 广播+分级路由(tick/1s/5s);心跳 30s 与 Nginx 超时 90s 错开
连接池调优:三级超时分级、各下游独立配置;maxTotal 过大致下游连接暴涨
S11 搜索与大数据
ES 集群:时间拆索引+热温冷分层+Bulk 批量;深分页 search_after 替代 from+size
搜索推荐五层漏斗:意图识别→多路召回→粗排→精排→重排;防特征穿越
Flink 风控:按 userId 分区 KeyedState+规则热加载;Event Time+Watermark 乱序;State 必须设 TTL
ClickHouse:MergeTree+物化视图预聚合+RoaringBitmap 算 UV;TTL 必设;分区粒度不宜过细
湖仓一体:Iceberg+对象存储 Parquet+Trino ad-hoc;只建湖不治理=数据沼泽
FinOps:可见→优化→运营;统一标签归因;无标签先砍机器是错序
S12 AI 生产级场景
RAG 幻觉治理:止血(转人工+收紧)→诊断→根治(混合检索+Rerank+引用溯源+拒答)→长效(版本化+反馈回流)
Token 成本治理:网关 Token 级埋点+标签归因;优化=Prompt 瘦身+模型分级+缓存;限流须含 Token
Agent 死循环防护:总步数上限+单工具次数上限+循环检测+工具幂等+高危二次确认+沙箱
向量库迁移五步:存量导入→增量双写→一致性校验→灰度切流→旧集群热备 7 天;HNSW 建完才切
多模型高可用:主动探针+被动错误率双检测,健康分加权路由;禁全切打爆备选配额
RAG 投毒:输入检测(注入识别+入库审核)→输出过滤→系统指令与用户内容严格隔离
流式背压:按 GPU 并发槽位信号量限流;慢时丢中间 Token;短请求优先调度
MCP/多 Agent:工具供给+权限边界+协作编排三角;MCP 不是 Exactly-Once
六、AI 工程纵深(A01-A33)

AI 应用工程化的本质是把「不确定的概率系统」当作「确定性的传统服务」来治理:评估门禁先于发布、上下文与工具界定能力边界、检索与多 Agent 是规模化的两条主线、可观测与成本闭环是长期复利。

Agent 本质:Model + Harness 二分模型;ReAct 循环=推理→行动→观察;步数熔断防死循环;幂等防资损
上下文工程:Token 预算=System Prompt+History+Retrieval+Output;窗口滑动截断优先去旧摘要;上下文决定能力上限
RAG 全链路:切分(512/64 起步)→Embedding→向量检索→重排序→引用溯源;GraphRAG/LightRAG 补关系推理
MCP 协议:Client/Server 架构;Tools/Resources/Prompts 三类能力;A2A 对等协作;不是 Exactly-Once 要幂等
多 Agent 编排:职责拆(单 Agent 上下文收敛优先);Workflow 适合确定性链路,自主 Agent 适合动态决策
评测门禁:Golden Set 版本化;非确定性断言(nassert)+影子路由双轨;漂移监控→Bad Case 闭环
AI 安全:Prompt 注入(指令层级分隔符)+数据泄露(PII 脱敏)+越狱(系统提示护栏);红队自动化测试
可观测:LLM 三支柱=Prompt/Response/Token 用量追踪;成本归因;W3C TraceContext 传播
成本工程:单位成本(每请求/每 Token);缓存(语义缓存/Semantic Cache)降重复请求;配额限流公平排队
Spring AI:Boot 3.x 集成;ChatModel/Prompt/RAG/MCP Starter;Tool Calling 函数定义+JSON Schema
部署运行时:流式 SSE/WebSocket 防阻塞;并发控制+BPM 队列;GPU 资源池化 vLLM/TGI
规模化并发:请求合并(Adaptive Batching)+推测解码(Speculative Decoding)降首 token 延迟;本地限流失效切集中式
A01 Agent 本质与范式谱系
Agent 的本质:Model + Harness 二分模型 核心不在复述「Agent 是能自主干活的 AI」,而在回答:模型(Model)与驾驭环境(Harness)的职责边界在哪?
Agent 核心范式谱系(ReAct / Plan-Execute / Reflection / Multi-Agent) 能否给出「从最简单方案起步、明确需要才加复杂度」的选型纪律,并说明生产中为何多为混合架构。
Workflow 与自主 Agent 的边界与选型(1:4 判定) 这是 AI 应用架构选型的最高频决策点。
A02 上下文工程与记忆
上下文工程本质:Context Assembler 与 Token 预算 核心是能否讲清统一组装顺序(约束 → 目标 → 证据 → 记忆 → 工具 → 历史)、rank 与 Token 预算两步走,以及为什么「窗口越大 ≠ Agent 越聪明」。
Context Rot 与上下文压缩策略 压缩策略(滑动窗口 / 摘要 / 卸载 / 隔离)各自适用边界是什么?
记忆工程:分层 / 生命周期 / 存储三态 「编码 → 存储 → 提取 → 巩固 → 反思 → 遗忘」生命周期各环节的工程实现是什么?Mem0 / Letta / Zep 等方案按「管理复杂度放在哪一侧」如何选型?
记忆写入准入:写入按生产变更准入,判据是「未在别处制造退化」;谱系、盲集比对、拒绝策略与遗忘权缺一不可
A03 RAG 基础与图增强
RAG 两阶段范式与"RAG vs 微调"决策 「RAG vs 微调」的决策依据是什么(解决「不知」还是「不会」)?
RAG 进阶:切分 + 精排 + 多路召回 核心是建立「答非所问多在召回阶段」的排查直觉。
GraphRAG 与 LightRAG:图增强检索的边界 GraphRAG(社区摘要 + 图遍历)与 LightRAG(去社区层 + 双层检索)的机制与成本差异为何高达两个数量级(Token 成本约 $20–50 vs $0.15)?
A04 工具调用与 MCP 协议
工具调用分层:FC / MCP / Skills / A2A 能否用「打电话 / 通讯录 / 岗位手册 / 横向协作」的比喻体系讲清四者关系。
MCP 的本质:N×M → N+M 的连接协议 三类能力(Tools / Resources / Prompts)与三项进阶能力(Roots / Sampling / Elicitation)各自解决什么问题。
生产级工具接入 Checklist 与 Skills 渐进披露 三层渐进披露(广告层 → 指令层 → 资源层)如何解决「跨会话规则复用 + 上下文腐化」两大问题。
工具三层契约:零信任 Schema → 幂等加沙箱 → 错误分类加重试预算;同一业务请求只由一层负责重试
A05 多 Agent 编排
多 Agent 协作四要素与 Graph Engineering Graph 的 Node / Edge / State 三要素各自的设计原则是什么(好节点:只干一件事、可单测、可替换;边:能写死尽量写死;状态:字段固定的 JSON 存档)?
三种编排范式对比:Workflow / Graph / Loop 核心是能按任务形态(固定流程 / 多节点复杂分工 / 单点反复迭代)对号入座。
九种编排模式与 AgentTask 契约 / Checkpoint AgentTask 契约(子目标 / 依赖 / allowedTools / outputSchema / maxIters / deadline)如何把「约定俗成」变为「运行时强制」?
A06 AI 评测与发布门禁
评测 vs 监控:四类评测与设计 离线评测 / Trace 回放 / 线上灰度 / 回归 CI 四类评测各自解决什么盲区。
Golden Set + CI 门禁与 LLM-as-Judge 防偏差 Judge 的打分体系(规则拦硬错误 + LLM 评开放语义 + 人工复核高风险)如何设计?
灰度发布非劣效界值与 Java 落地 EvalRecord 评测 Harness 的职责边界与环境隔离要求是什么。
评估器独立性:评测集与调优样本隔离、盲集快照轮换;judge 与被测同源时「一致通过」不构成证据
A07 AI 安全风险与合规
AI 系统四大风险面与分层防护 核心认知是:模型输出不可信、一切外部输入不可信,安全是「执行侧」问题——靠 Harness 硬边界与后端强控制,而非靠提示词礼貌请求。
合规要求与 Java/Spring 落地(ExecutionContext / ToolAuditEvent) 核心是「合规不是文档,是可执行的代码结构」。
Spring AI 安全层与大模型网关 其六项核心能力与自研组件清单、演进顺序(先工程治理再智能路由)是什么。
路径级安全:逐工具鉴权拦不住组合越权;权限预算随值流动且组合只能收紧,发布前跑红队门禁
A08 Agent 工程化架构
Agent 四组件与三层结构设计 Tools / Agent / Workflow 三层的本质区别为什么是「控制流由谁掌握」而非节点类型?
任务拆分与 DAG 并行执行 依赖分析画 DAG 后「并行降低的是关键路径总时间而非每步时间」如何理解(端到端延迟降 40%–60% 的前提是什么)?
上下文压缩的预算公式与状态管理四层 对话历史 / 业务状态 / 任务状态 / 长期记忆四层为何不能混放(「这次报告用英文」是业务约束不是用户永久偏好)?
反思 / Multi-Agent Handoff / 容错(fencing token) Multi-Agent 容错为何必须分层(通信层:心跳 / 租约 / fencing token;一致性层:所有权 / worktree / 唯一 Integrator)。
A09 RAG 全链路工程
Chunking 五级策略与父子块 「语义截断」的本质为什么是「信息被拆散后每一半都不够强,检索全军覆没」而非「信息丢失」?
两阶段 Re-rank 与混合检索(BM25 + RRF) 精排的量化收益(多跳 +40–50%、模糊 +30–40%、简单事实 +18%、幻觉率降约 35%)与候选集控制(Top-50~100 → Top-5~10)如何设定?
Query Rewrite 四法与四代 RAG 范式 核心是「Query 质量决定后续所有环节的天花板」。
图增强与 Agentic RAG 组合工作流(向量入口定位实体 → 图接力遍历 → 合并上下文)怎么搭。
幻觉四层防线与检索门控 检索没召回要拒答,召回了还超发挥要溯源;更新与对账见 A21.03。
证据绑定:缓存 key 全维度哈希,命中后仍做引用支持性与业务规则后置校验,投毒样本隔离且不回灌基线
A10 MCP/A2A 协议与工具容错
Function Calling 本质与训练(SFT + RLHF) 为什么预训练学不会 FC、必须 SFT 教「怎么调」+ RLHF 教「什么时候调」,SFT 数据必须覆盖哪五个场景。
MCP 三角色 / 版本 / 传输(stdio vs Streamable HTTP) 协议从 2024-11 双端点 HTTP+SSE → 2025-03 单端点 → 2026-07-28 无状态化的演进脉络与动机?
A2A Agent Card 与 Task 状态机 Task 状态机(submitted → working → completed / failed / canceled,支持异步长任务与 Artifact 回传)如何治理超时 / 取消 / 重试?
工具容错五阶段 / 沙箱隔离 / Skill 三层加载 沙箱为什么必须「代码按不可信处理」——访问边界(三区)/ 资源预算(cgroup 归组)/ 运行器管理三层如何设防?
A11 AI 编程与 Coding Agent
AI 编程三模式与需求描述规范(Vibe vs Spec) 需求五段式(目标 / 现状 / 输入输出边界 / 约束 / 验收)为什么比角色扮演和「写得健壮一点」有效?
任务拆分(tasks.md)与代码质量 Oracle 独立审 Diff 验收 Checklist 五步(逐 hunk 看 diff / 先红后绿 / 回归 / 边界异常 / 安全规范)如何防「删断言让结果变绿」。
AI 排障:报错位置 ≠ 根因 / 测试覆盖变异测试 测试覆盖为什么「业务覆盖 ≠ 测试数量 ≠ 代码覆盖率」(实现漏权限检查则无代码可覆盖)?
Coding Agent 六件设施与 SDD 规约驱动 以及源码级认知(grep 而非 RAG 检索、文件而非向量库记忆)背后的设计取舍。
A12 AI 工程范式演进
四代演进:Prompt → Context → Harness → Loop → Graph 为什么四者是「层层包含」关系而非替代关系(Prompt ⊂ Context ⊂ Harness;loop 是最小 graph)?
生产装配对照:闸门、triage loop 与失败模式 定义见 A01 / A05;本卡只锁装配顺序和独立闸门。
A13 架构决策与能力边界
自建 vs 引入的决策边界:成熟度、锁定成本与退出路径 决策对象不是「整体自建或整体引入」,而是哪部分能力必须自己持有;真正的锁定发生在数据格式与评测资产里。
Agent 平台能力地图:编排内核、工具注册表与可观测基座 注册表必须是准入而非清单,执行与治理分离,每个能力可观测 / 可灰度 / 可回滚。
能力准入与生产分级 定级对象是「能力 × 场景」,放行条件须可判定,摘除必须比放行快。
边界重估与兼容治理 兼容是语义等价而非签名相同;评测集与提示词资产能否迁移,才是边界的硬门槛。
A14 框架内核与扩展点
Spring AI Advisor 链与扩展点:请求改写、记忆注入与审计横切 顺序即语义:改写在记忆注入之前,审计包住请求与响应两端,链序要有快照测试。
ChatModel / ToolCallback SPI:多模型方言适配与可替换实现 可替换性来自稳定的接口边界与能力协商,而不是把所有模型压到最小公共能力集。
观测扩展点:ObservationRegistry 与自定义 Node Span 生命周期成对、上下文只读、标签基数有界;取消路径最容易漏 close。
能力协商式自动配置 装配期把缺能力暴露成启动失败,能力矩阵与运行期探测必须共用一份声明。
A15 Spring AI 工程实践
ChatClient 多模型路由与 BeanOutputConverter 结构化输出 BeanOutputConverter 如何把自由文本收敛为「可校验的 I/O 契约」?
记忆四实现与 Tool Calling 生产范式 把 Java 方法暴露为 LLM 工具(Mistral / Ollama / OpenAI 三套实现)的生产要点是什么?
RAG 流变(Sequential/Branching/Conditional)与 Guardrails 文档入库侧的 splitters(分块)与 metadata 富化(摘要 / 关键词)如何共同决定召回质量?
A16 生产级 Agent 中间件
双链路 v1/v2 与三层执行器 MCP 边界为什么「客户端仅在 agent 模块装配、Workflow 不连 MCP」?
检索融合 RRF 与模型容错三态熔断 模型容错的「首包探测 + 三态熔断 + 多候选切换」如何设计?
Redis ZSET 公平排队与 RocketMQ 事务一致 海量文档分块入库为什么必须 RocketMQ 事务消息(半消息 + 本地事务 + 回查)+ 幂等 + 分布式锁状态机。
11 种设计模式与"调 API ≠ 生产级 Agent" 以及中间件 / 基础组件的 Starter 化交付范式(防重 Starter:AOP + 注解复用)如何提升工程复用度。
A17 AI 系统测试
非确定性断言与 Golden Set + RAGAS/DeepEval + CI 核心在于回答:哪些测试仍用传统手段、哪些必须换范式、回归门禁卡在哪一层。
工具契约 / 防死循环 / 并发压测 + 故障注入 核心在于:AI 系统的「异常路径」比「正常路径」更需要测试资产。
故障注入门禁:注入点在影子流量隔离执行,验证降级、告警与 kill switch,结果接入持续集成回归
A18 部署与运行时
GraalVM / K8s + HPA 与 Java×Python 推理 Sidecar 核心在于回答:每种部署决策背后的约束是什么。
入库流水线(Kafka/RocketMQ)与 Agent 六种部署形态 核心在于回答:不同形态各自的技术载体、Java 工程能力复用度与选型原则。
A19 AI 可观测性
三支柱:Micrometer+Prometheus / ELK / OTel+SkyWalking+LangFuse 核心在于回答:AI 应用可观测的重点为什么是链路质量——模型答得好不好、工具调没调对、检索是否召回——而非仅系统健康。
Run/Node 级 Trace、影子路由与告警 + Bad Case 闭环 观测、评测、修复三者由此串成环。
语义 SRE:语义正确率与行为基线统计偏离为准;告警同源聚合抑制,每条绑定可回放快照
A20 AI 安全治理
Sa-Token/Spring Security SSO 与输入净化 / 工具白名单 核心在于回答:AI 服务的安全不是另起炉灶,而是把权限 / 校验 / 最小权限原则延伸到模型与工具这一新增攻击面。
AOP 审计 / 多租户隔离 + 被遗忘权 / 网关治理 核心在于回答:治理如何从「有功能」变成「可追溯、可隔离、可计量」。
A21 知识工程与 RAG 运维
知识库 ETL 管线:切分 / 富化与 Embedding 选型版本治理 Embedding 选型为什么必须用业务数据自测而非信通用榜单?
向量索引生命周期与混合检索(BM25 + RRF)运维 混合检索互补的第一性:BM25 词频 × 稀缺度(精确强同义词弱——「退货 / 申请售后」零重叠检索不到);向量语义强精确词弱(「M4 Pro」被拉向「苹果最新处理器」反而找不到字面)。
知识库索引生命周期与对账巡检 刷新中查询打旧快照,多索引按 doc_id 对账,孤儿 chunk 必须为 0。机制证明见 A09.05。
A22 成本工程与 ROI
Token 预算 / 语义缓存命中率 / 按成本模型路由 核心在于回答:降本的第一杠杆是「少用贵模型」,第二杠杆才是「少传 Token」——排序错则事倍功半。
按租户计费配额与 ROI 度量模型 + 成本异常告警 核心在于回答:配额是「防失控」的闸,ROI 是「证明值」的尺——二者共同让 AI 项目从「烧钱实验」变成「可经营的业务」。
CPS 单位经济学:第一指标是每完成任务成本,重试、验证、监督税与精炼循环均计入,配预算硬顶
A23 模型与 Prompt 版本治理
模型 / Prompt 版本管理与回滚 核心在于回答:Prompt 与模型配置是一等资产,必须获得与代码同级的工程待遇。
A-B / 灰度非劣效界值与发布门禁 核心在于回答:AI 发布的风险不是「崩溃」而是「悄悄变差」——发布机制必须能感知渐变劣化并自动刹车。
生产漂移监测与幻觉缓解运营闭环 核心在于回答:上线不是终点,质量是运营出来的。
配置谱系:模型与 Prompt 版本、索引快照、工具契约入谱系;ModelSBOM、取证存证、退役销毁清单闭环
A24 规模化并发与流式
水平扩展 / 会话亲和 / 限流排队 / 多租户配额 QoS QoS 分级第一性:多租户下「先到先得」会被大客户突发挤占——配额按租户分级(付费 / 免费),排队按公平原则(ZSET 按入队时间),超限按租户策略分流(降级 / 排队 / 拒绝)。
流式保活 / 续传 / 中断恢复与 TTFT 优化 核心在于回答:流式体验的工程难点不在「能流」,而在「流得稳、断得起、等得不焦虑」。
A25 平台工程与交付
内部开发者平台 IDP / 脚手架 / Starter 化标准化交付 核心在于回答:对使用者隐藏复杂度,对运维者暴露可控性。
裸线程池 vs Starter 动态线程池 vs 虚拟线程选型 核心在于回答:AI 服务是 IO 密集型负载,执行基建的选型直接影响成本与稳定性。
SDD 规约驱动与 AI 原生研发流 核心在于回答:AI 编码的质量上限由规约质量决定,流程要把返工成本消灭在编码前。
A26 业务价值与组织 adoption
场景选型决策树与价值度量(北极星指标) )筛选值得做的场景;价值度量(北极星指标)让项目价值可量化可追踪;Workflow vs Agent、v1/v2 双引擎按场景路由的落地对应。
失败案例避坑与组织 adoption 路径 核心在于回答:决定 AI 项目存活的不是单点技术亮度,而是工程完整度与组织可复制性。
组织失效:技能梯子断裂与监督能力空心化是独立失效源;审计态与运行态按 TraceId 对账,影子 AI 先纳管再评估
A27 概率性系统与控制面
三条事实:推理概率性、复合相乘、状态累积偏差;五条机制按依赖顺序落地,评估可信度优先
收缩复合指数:确定性步骤移出模型、窄接口拆短链、每步交接强制校验;退化由步数驱动
闭合验证环:硬证据来自 schema / 返回码 / 校验和,验证器独立于生成方
A28 静默失效、反模式与落地路径
静默失效四型:返回成功但语义错、静默漂移、fail-plausible、用户静默放弃;监控全绿是风险信号
反模式判定问句:每条须能回答「怎么发现、怎么拦住」,按不可逆性与检出难度分级
三阶段路径:能跑(网关+版本化+Trace)→ 敢用(校验/幂等/审批+CI 门禁)→ 可持续(回流/告警/kill switch)
A29 数据生命周期与治理
数据集即代码:采集 → 版本化 → 训练 / 索引 → 服务 → 监控 → 退役是可靠性的隐藏主轴,治理缺失导致不可复现与静默劣化
版本三元组:数据 × Embedding × 模型可追溯;评测集与生产样本物理隔离
漂移是静默失效:生产数据分布监控用 PSI / KL,漂移超阈值阻断发布
血缘回放:数据版本注册表 + 血缘定位根因;评测集在 CI 锁定不可变快照
可复现:快照不可变、特征定义单一来源、实验 run 绑定数据 / 代码 / 模型全要素
陷阱:评测集吸收生产流量即被自身输出污染;悄悄替换评测集让通过率「上升」是典型自证循环
A30 端侧与边缘 AI
四约束:算力 / 内存 / 能耗 / 离线优先于效果;量化是 Pareto 权衡,必须评测兜底
量化路径:FP16 → INT8 → INT4 与混合精度;ONNX / TFLite 统一中间表示跨端部署
端侧失败模式:OOM、发热降频、精度塌与云端不同,不能复用云端指标
端云分工:端做低延迟与隐私本地决策,云做重训练与全局编排
反馈闭环:端侧结果回传 → 云端增量重训 → 模型下发带版本、签名与灰度
落地:量化前后评测对比、运行时封装、离线降级路径可用、端侧数据处理守住隐私边界
A31 算力 FinOps 深证
本质:算力是 AI 应用最大可变成本,FinOps 把不可控账单变成可归因、可优化的单位经济
主线:不计成本 → 资源监控 → 成本归因 → 调度优化(spot / 排队)→ 预算池化与单位经济
第一性:成本归因到场景 / 租户 / 模型;利用率与单价双优化;每千次调用成本优于绝对值
落地:GPU 利用率监控、成本归因看板、spot 抢占调度、预算池与配额、模型路由降本
判据:只报 Token 单价不算成本,须给单位任务成本与二阶成本(监督税、协议税、精炼循环)
A32 多模态工程深证
本质:文 / 图 / 音 / 视频扩展能力边界,但对齐与评测更难、失效更隐蔽
主线:独立单模 → 晚期融合 → 跨模态对齐(CLIP 类)→ 统一表征 → Agent 多模态工具
第一性:模态对齐是能力前提;跨模态评测不可复用文本指标;失效常源于模态间不一致
落地:多模态评测集、模态缺失降级、跨模态一致性校验、引用可追溯(图 / 视频出处)
陷阱:ASR / OCR 的错误会作为「事实」传给下游且无法靠下游纠正;转换层须输出置信度与候选
A33 生产纵深整合与治理
轨迹级评测:结果正确不等于过程可信,评步骤序列、路径偏差、恢复行为与权限边界;非确定性下评分布而非单次
LLMOps:一次线上行为由 prompt / dataset / eval / alias 等版本共同决定,发布单串起血缘、owner 与回滚目标
团队效能治理:度量必须成对:交付前置时间、变更失败率、缺陷逃逸率与采纳率、生成占比同时看;上下文供给是治理对象
私有化推理:显存约束核心是 KV Cache,按「显存预算 ÷ 单会话 KV」反推可承诺并发;量化有损须评测补偿
框架抽象边界:业务依赖自建窄接口,Spring AI / LangChain4j 放适配层,横切能力放平台而非框架
沙箱与 HITL:默认拒绝 + 显式白名单(identity / capability / resource / egress);审批点是风险函数,按可逆性 × 影响面 × 不确定度分级
成本延迟联合治理:目标函数是每完成任务成本;重复上下文、无缓存、静默重试与不必要的大模型调用比单价更贵
七、Java×Python 混合部署(H01.01-H01.08)

混部的核心矛盾是「共享资源带来的互扰」:容量、故障域、SLO、灰度、回滚、可观测、调度都要按跨栈口径重新定义。

第一判据:单栈达标不等于端到端达标,用户契约由关键路径决定
设计默认:邻居一定会挂;故障域隔离与资源隔离是同一枚硬币两面
地基:跨栈可观测打通是容灾、灰度与回滚的前提,没有它都是盲操作
回指:与 C16 Python 侧生产栈、C18 跨语言运行时、A33 私有化推理相互印证
H01.01 混部容量规划与峰值叠加模型
本质:Java 业务 + Python 推理共置时,容量不是两者基线相加;峰值资源争抢让整体吞吐远低于单测之和
主线:单栈求拐点 → 叠加估算 → 叠加压测实测 → 互扰系数建模 → 动态配额与容量档案
叠加模型:总容量 ≈ 业务基线 + 推理峰值 − 互扰损耗;损耗来自 GC 抢核、NUMA 跨节点访问与共享总线带宽竞争
落地:分别压测记录拐点,再做两栈同时加压的叠加压测,建容量档案(互扰系数、峰值倍数、预留缓冲),按业务时段调配额
陷阱:各测各的然后相加、忽略 Java STW 对邻居的传导、不预留缓冲、只按 CPU 算忽略内存带宽与 NUMA
H01.02 混部成本归属与 FinOps 治理
本质:一台机一张 GPU 卡同时跑两栈,归属不清会让降本退化成团队甩锅
主线:黑盒不分摊 → 按配额申请 → 按实际使用计量 → 按业务线归因 → FinOps 单位经济
归属三法:按资源配额(申请≠使用)、按实际计量(CPU·内存·GPU 时长)、按业务线(贴近 unit economics)
落地:namespace / team / cost-center 打标计量,GPU 利用率作为一级健康度,闲置回收与低峰降配,事前写定分摊规则
判据与陷阱:归属有效性 = 团队能否据此优化自身用量;只按申请不按使用、缺计量基建强行分摊都会激化矛盾
H01.03 混部容灾与故障域隔离
本质:推理进程 OOM 把同节点 Java 业务拖垮,就是故障域没隔离;混部难点是爆炸半径更难预测
主线:单栈各自高可用 → 识别共享故障域 → 物理 / 逻辑隔离 → cgroup 限额 → GPU 独占或 MIG + 跨可用区部署
第一性:节点、可用区、资源池都是故障域边界,共享即必然传导;默认应是「邻居一定会挂」
落地:关键业务与推理分节点池,栈间设熔断降级,定期做跨栈故障演练,爆炸半径预先写入容灾预案
深层辨析:单栈容灾追求「自身不挂」,混部容灾追求「邻居挂了我不死」,后者才是核心能力
H01.04 混部 SLO 定义与跨栈 SLI
本质:用户一次请求跨两栈,各栈自嗨的 SLO 对用户毫无意义;一栈达标一栈超时,整体算达标吗
主线:各栈自嗨 SLO → 端到端 SLO → error budget 切分 → 跨栈 SLI → 端到端告警 + 单栈下钻
第一性:端到端 SLO 由关键路径决定,取最严格的用户感知指标;跨栈 SLI 必须能归因到单栈预算
落地:统一 traceId 打通 SLI,按关键路径分摊 budget,告警按端到端触发、定位时关联单栈消耗
无效信号:各栈都达标但用户仍慢;取平均而非关键路径、告警按单栈触发,都是典型错法
H01.05 混部灰度策略与流量染色
本质:升级推理栈如何只灰度 AI 部分而不动 Java 业务?整机灰度等于拿另一个栈陪葬
主线:整机灰度 → 流量染色 → 独立灰度批次 → 跨栈端到端判定 → 固定一栈灰度降维
第一性:header / 标签按服务粒度路由;Java 与 Python 各有 Go/No-Go 判定,判定基于跨栈端到端指标
落地:网关或网格按染色标签转发,灰度期重点看跨栈端到端指标,控制维度避免版本组合爆炸
深层辨析:固定一栈、灰度另一栈,把二维版本矩阵降为一维,每次只动一个变量
H01.06 混部回滚判定线与部分回滚
本质:端到端指标劣化该回滚哪个栈?全量回滚代价大且误伤健康栈
主线:全量回滚 → 单栈回滚 → 状态补偿 → 部分回滚 → 根因闭环
第一性:回滚触发线须预设且透明(P99 连续越线、错误率越线);部分回滚前提是两栈可独立回退且状态可补偿
落地:判定线写进发布预案,支持一键回退单栈,Agent 会话与中间状态外置或幂等重放,回滚后做根因定位闭环
判据:回滚的有效性 = 恢复服务的速度与精准度;能只回退元凶栈才算成熟
H01.07 混部可观测打通(跨栈链路 / 统一指标)
本质:Java 一套 trace、Python 另一套,跨栈断链,根因定位只能靠猜;这是混部规模化的头号前提缺口
主线:各栈独立 trace → W3C tracecontext 统一 → 统一指标 backend → 跨栈拓扑视图 → 异常聚合与日志关联
第一性:Python 推理入口注入并透传 traceId;指标命名与单位一致、接入同一后端,日志结构化带关联键
落地:OTel SDK 透传,统一采集后端,同 traceId 异常自动聚合成一条事件,建跨栈拓扑定位慢在哪一栈
地基:没有它,容灾、灰度、回滚都是盲操作——不知道该隔离谁、该灰度谁、该回滚谁
H01.08 混部调度隔离(K8s 拓扑 / GPU 共享 / NUMA)
本质:K8s 默认调度不区分 Java 的 CPU 密集与推理的 GPU + 内存带宽密集,混放就是互拖的物理根因
主线:默认调度混放 → topologySpread 打散 → 节点池亲和隔离 → GPU MIG / 时间片共享 → NUMA 亲和 + QoS 分级
第一性:拓扑感知调度把两栈分到不同节点池;MIG 切分或时间片让多推理安全共享一卡;带宽敏感负载绑 NUMA
落地:AI 推理独占 GPU 节点池,共享 GPU 时加显存限额,cgroup 限额防饿死邻居,新负载默认按类型入池
判据:调度隔离的成熟度 = 物理上像两个集群,逻辑上是一个服务;隔离与利用率是同一枚硬币两面
八、工程化要点 + 生产踩坑(G01-G13 / K01-K12)

两条主轴贯穿全部门禁:卡点指标分层——L1 用户可感 > L2 依赖饱和 > L3 资源,L3 不能单独放行;回滚三维——镜像+配置+流量,任一不可退则整体不可退。

发布三要素缺一不合格:灰度比例表+卡点指标阈值+一键回滚命令
灰度节奏:1%→5%→25%→100%,档间停留观察窗,否决权归卡点指标
错误预算闸门:Error Budget=1−SLO,烧完即冻结非紧急发布
超时×重试必须有上限:否则调用放大打穿下游;指数退避+抖动防惊群
幂等键持久化+TTL:防重复扣款的第一道防线;唯一索引兜底+对账任务补偿
缓存三防:穿透(空值缓存+布隆过滤器)、击穿(逻辑过期+互斥锁)、雪崩(随机 TTL+降级)
容量对齐:连接池与 K8s limit 一致,不一致即假可用;HPA 基于 CPU/自定义指标
SQL 治理:禁止 SELECT *、深分页游标替代、慢查询阈值 5s 告警、DDL 在线变更 gh-ost
调用预算:每下游设独立并发配额;舱壁隔离防连锁故障;熔断阈值错误率 50%/P99 超时
AI 制品门禁:Golden Set 评测→非劣效发布;漂移监控(数据/模型/Prompt);Bad Case 闭环
安全运营:SBOM+SCA 扫描 CVSS≥7 构建失败;密钥轮转 90 天;供应链可信构建 SLSA Level 3
数据与模型资产:版本/血缘/合规留痕不可缺;PSI/KL 漂移超阈自动冻结下游训练与评测
资产台账与退役闭环:每个条目有唯一责任人;僵尸服务与孤儿配置比缺失更危险
测试与发布门禁:放行判据要可查询;降级路径须演练而非假设可用
G01/K01 发布回滚与变更门禁
✓ 门禁
  • 灰度比例表:1%→5%→25%→100%,档间停留观察窗,否决权归卡点指标
  • 发布三要素缺一不合格:灰度比例表+卡点指标阈值+一键回滚命令
  • 卡点指标分层:L1 用户可感> L2 依赖饱和> L3 资源,L3 不能单独放行
  • 回滚三维:镜像+配置+流量任一不可退整体不可退
  • 错误预算冻结:预算耗尽或窗口外非紧急变更默认冻结
  • 配置当发布:P0 配置项(鉴权/限流/路由)灰度+双人复核
  • 框架与依赖升级门禁:大版本升级走契约测试+金丝雀+回滚镜像;禁私锁雪花版、禁无最小回归的 CVE 快车道、禁只看 Release Notes
  • 流量染色端到端:灰度流量带染色标签贯穿网关→服务→MQ→任务,异步边界是断裂高发区;对照组被污染则金丝雀与全量指标差异失真
✗ 踩坑
  • 人工觉得没事扩全量,3 分钟后才靠业务投诉发现故障
  • 只演 kubectl rollout undo 留有毒配置=假回滚,镜像与配置不配对二次故障
  • 只看 CPU 健康就放量,业务错误率已炸
  • 紧急通道被滥用绕过比例表直推全量
  • 代码回滚≠数据回滚,半成功单仍需冻结写入跑补偿
  • 变更单缺灰度/卡点/回滚字段,混入发布流水线
  • 金丝雀阈值/信号误配:故障继续全量或正常流量被误杀;错误率越阈未触发先查阈值写绝对值还是相对基线
  • 预算已红或大促窗口仍强推功能:冻结须由平台自动阻断而非值班口头拦,查变更单时间戳与预算板余额坐实
G02/K02 可观测与证据链
✓ 门禁
  • 三支柱随脚手架默认交付禁上线后补:指标发现异常、追踪定位、日志给上下文
  • 业务指标优先放行:有下单成功数才谈 JVM 堆
  • 采样策略书面化(ADR):头部采样+错误必采+慢请求必采
  • TraceId 过 MQ/线程池/定时任务/Reactive 必须有传递方案
  • 告警可行动公式:责任人+首要动作+升级路径+Runbook;零处理告警季度删除
  • 变更单号进 Trace baggage,缺字段阻断发布
  • SLO 与错误预算看板:每关键服务必须有对外 SLO 与预算看板,发布前先看预算;预算耗尽时流水线是否真冻结是可证伪点
  • 日志脱敏与采样门禁:结构化日志默认脱敏,全量 Debug 采样禁常开;脱敏规则要有字段级单测,临时 Debug 须带自动失效时长
✗ 踩坑
  • 监控全绿但下单成功率掉到 80%,值班不知先看哪块板
  • 事故时段采样过低,只有日志碎片拼不出跨服务路径
  • Trace 过 MQ/线程池全断,跨服务排查盲飞
  • 低价值告警刷屏淹没致命信号
  • 临时开 Debug 忘关,磁盘与成本打满
  • 错误日志无变更单号,故障期无法关联最近发布
  • 仪表盘有图不能点到 Trace/日志,排障空转;随机抽异常点验证能否一步跳 Trace,下钻链接可达性须进季度巡检
  • 告警可行动字段指向失效 Runbook;链接平时零告警、故障才发现,应定期自动抓取校验状态码
G03/K03 容量与资源预算
✓ 门禁
  • 应用与编排同一容量模型:池/队列与 K8s limit/HPA 同源,先打满侧定容量
  • 池化可观测:拒绝次数/队列等待/活跃数进指标告警
  • 压测必打拒绝路径:触发方式/指标曲线/用户可感/是否可恢复
  • 虚拟线程用信号量把并发钉在下游可承受数上
  • 扩容单含下游容量确认;单副本依赖上峰值前必须有冗余
  • JVM 容器内存账:堆+元空间+直接内存+栈+sidecar+页缓存≤limit
  • 大促前演练清单:全链路压测/限流校验/降级演练/回滚演练/依赖容量函证,清单未勾完不上峰值;演练要像打仗用真实开关
  • 弹性伸缩冷却防抖:HPA/自适应扩缩必须设冷却与防抖;冷却窗口大于冷启动耗时,否则新实例未就绪又触发下一轮扩容风暴
✗ 踩坑
  • HPA 加副本吞吐不升——池仍按旧配额,Pod Ready 但全堵在池等待
  • 副本数×池大小打满 DB,集体超时
  • HPA 毛刺抖动频繁扩缩,连接重建风暴比不扩更糟
  • 单副本 DB/Redis 上峰值,一抖全站不可用
  • 限流阈值预发/生产不一致;集群限流≠单机×副本数
  • 无限队列是事故预告,拒绝率上升而成功率暂稳是雪崩前兆
  • 多副本≠高可用,逐个依赖标机架/可用区;两副本共用同一缓存或交换机则故障域实为一个
  • 弹性扩容触发风暴:冷启动慢+扩容正反馈,冷却窗口短于就绪时间则先限扩容速率再优化启动
G04/K04 数据变更与 SQL 治理
✓ 门禁
  • DDL/修复可回滚或可补偿:影子表/双写/分批/回填校验
  • 大表只用 gh-ost/pt-osc 白名单工具,禁裸 ALTER
  • 执行熔断量化:锁等待/复制延迟/影响行数偏差/错误率,超即停
  • 回滚 SQL 与前向同等评审+类生产验证
  • 数据修复双人审批:可回放脚本+工单+窗口+回滚包
  • 副本延迟门禁:先定义读己之写策略,超阈切主读;季度恢复演练出 RTO/RPO 实测数
  • SQL 审核与慢 SQL 闭环:新增 SQL 有 explain 结论;慢 SQL 闭环(发现→归因→修复→回归)而非只调大超时;索引也是数据变更须评估写入放大
  • 备份恢复演练门禁:备份存在≠可恢复,RTO/RPO 必须演练出数并与业务目标比对;未达目标即冻结高危变更
✗ 踩坑
  • 高峰锁表改列写入堆积,误删只能从昨日冷备恢复
  • 未演练的回滚 SQL 加错条件,二次损坏
  • 紧急控制台手改无工单,状态不可追溯
  • 大表一条 UPDATE 扫全表锁表
  • 主从延迟大仍读从库做资金判断→错账
  • 真要恢复时才发现权限/空间不够
  • 在线 DDL/修复不可回滚:高峰锁表改列致写入堆积;修复 SQL 无备份窗口误删只能从昨日冷备恢复,RPO 不可接受
  • 回滚 SQL 未在类生产验证:加错条件二次损坏;必须在同构数据分布演练验 WHERE 影响行数,空库跑通≠安全
G05/K05 缓存一致与热点
✓ 门禁
  • 先分型再动手:穿透=空值短 TTL/布隆;击穿=互斥重建/逻辑过期;雪崩=随机 TTL/预热
  • 空值必须缓存(短 TTL)或布隆过滤器
  • 双写顺序契约化:写路径顺序统一约定,变更=发布走灰度
  • 逻辑过期异步刷新失败须有告警与降级路径
  • 一致性窗口写进契约:最大脏读窗口≤契约窗口
  • 热 key 治理递进:本地缓存→副本→拆 key→改模型;多级缓存必须失效广播+对账兜底
  • 多级缓存失效广播:本地+分布式必须有失效广播与版本策略;丢弃一次消息看各节点是否收敛同一版本,节点间旧值造成诡异脏读
  • 缓存容量与淘汰评审:容量/淘汰策略/大 key 限制进容量评审;内存打满比 CPU 更突然,maxmemory 策略与大 key 扫描是门禁
✗ 踩坑
  • 把击穿当穿透处理,雪崩时关缓存直打 DB 二次放大
  • 空值未缓存,不存在 key 打爆 DB
  • 双写顺序反了,长期脏读
  • 逻辑过期刷新失败无告警,长期读脏数据
  • 单 key 打满分片(热 key);大 value 阻塞单线程
  • 本地 TTL 过长,发布后节点间读到旧价
  • 缓存与 DB 对账缺失:长期脏数据无人知;定期抽样按业务键比对统计差异率,对账任务自身须有成功率告警
  • 大 key 导致慢查询与阻塞:大 value 阻塞单线程、迁移阻塞;bigkey 扫描与延迟毛刺对齐,删除大 value 须异步分批
G06/K06 调用预算与服务治理
✓ 门禁
  • 超时预算可加总:各跳之和<用户超时留余量,评审现场表格加总
  • 重试预算显式化:超时×重试×扇出可算;前置=幂等+jitter,禁无限重试
  • 幂等键平台规范:格式/存储/过期统一,落库不只内存
  • 双写用 Outbox/CDC:同事务记录意图+至少一次投递+幂等消费
  • 对账任务进值班看板,超窗告警,差异修复有工具
  • 熔断半开观察窗:探测流量受限+成功阈值;治理参数按发布管控
  • 治理参数可回滚:限流/熔断/降级参数按发布管控可回滚;错误阈值会自攻挡正常流量;集群限流≠单机×副本数,扩容会自动放松
  • 超时预算表强制入库:同步链路超时须可加总并入库为契约表而非只写文档;抽链路逐段核实际生效超时,验上游剩余>下游总时限
✗ 踩坑
  • 重试 3 次×扇出 5=15 倍流量打穿下游
  • 幂等键只存内存,重启后重复扣款
  • 上游超时短于下游倒挂,重试风暴层层放大
  • 先发消息再写库无补偿=经典陷阱;对账挂了无人知差异累积
  • 半开流量过大刚恢复又被打穿;熔断过敏全站降级过久
  • cancellation 不向下传递,上游超时下游继续烧资源
  • 幂等缺失导致重试重复扣款:超时重试成功但业务无幂等,重复扣款/下单;重试前提是幂等,否则重试是事故放大器
  • 双写无顺序约定:缓存/搜索/DB 多写方无统一顺序契约,终态取决于到达时序各存储版本不一致;收敛为单一写入源
G07/K07 AI 制品与评测门禁
✓ 门禁
  • 制品全版本化:Prompt/模型 ID/检索配置/工具/编排/路由;审计字段进每条回答日志
  • 无黄金集不上线:固定评测集回归+版本冻结;安全用例零容忍
  • Prompt 回归绑定发布:文案小改无回归按生产事故定级
  • 索引变更双跑或影子对比+黄金集卡点
  • 评测集防漂移防刷分:集外抽样+影子流量+线上反馈同向校验
  • 工具副作用三级:只读/可重试写/不可逆写;不可逆默认关闭或人工确认;成本配额进门禁
  • 工具副作用分级表:Agent 工具按只读/写/资金或不可逆分级;高级别默认二次确认或人工闸,分级是门禁不是装饰
  • 模型降级开关演练:模型超时/质量降级开关必须演练到用户可感路径(文案/兜底/回滚点);只验配置存在故障仍找不到开关
✗ 踩坑
  • 无黄金集上线,答非所问工单翻倍靠人工偶然发现
  • 全量切索引召回率骤降,工单滞后才发现
  • 黄金集高分但线上塌方——过拟合/刷分
  • 线上热改 Prompt 无版本无法回滚
  • 只读工具与下单工具同权,误触发不可逆操作
  • 模型用浮动别名被供应商静默换版,输出漂移而发布记录全绿
  • 成本突增无熔断:账单异常才发现;单位任务 token 成本做实时指标并绑配额,耗尽应切小模型或限流而非事后申请
  • 影子流量对比缺失:灰度无对照,质量变化无法归因版本;同一批请求并行跑新旧链路比对要点覆盖与拒答率
G08/K08 安全运营与供应链
✓ 门禁
  • 威胁建模先行:STRIDE 一页纸(资产/边界/缓解/残余风险),高风险未关闭不上线
  • 密钥双密钥窗口:新旧并行校验→切主→吊销旧钥,禁单钥硬切
  • 证书到期告警绑 Runbook+责任人,轮换流程演练跑通
  • CVE 分级 SLA+自动催办+到期阻断;快车道仍需最小回归集
  • 豁免必须有截止日+负责人,过期自动转阻断
  • 供应链可追溯:SCA+SBOM 归档+镜像签名;生产禁 latest;临时授权自动回收
  • 密钥最小权限审查:密钥与令牌必须最小集并季度审查过权;过权密钥泄漏爆炸半径由权限而非密钥强度决定
  • 生产访问审计抽检:生产人工访问必须审计可抽检,禁共享超级账号常态化;会话录制与工单一一对应才能追责
✗ 踩坑
  • CVE 紧急升级跳过最小回归,启动失败
  • 密钥轮换无双密钥窗口,全球鉴权失败
  • 告警响了无人知如何轮换,临期才发现流程不通
  • 豁免过期未收回,带病运行数月
  • 共享超级账号无法追责到人
  • 密钥进仓库历史即泄露,轮换也堵不住
  • 临时防火墙规则忘记收回:无到期字段则攻击面长期扩大;规则表带创建人/用途/到期,平台到期自动删
  • CVE 豁免无到期自动阻断:漏洞单长期「已接受风险」且豁免过期无升级;修复时限绑严重级别,到期即阻断发布
G09/K09 数据生命周期治理 + 数据/边缘/多模态事故
✓ 门禁
  • 数据集版本与漂移门禁:入库即版本指纹;Embedding/模型版本绑定;训练/评测/生产三集隔离;PSI/KL 漂移监控门禁;评测集 CI 锁快照
  • 数据血缘与可复现:特征库线上线下一致;实验 run 绑定数据+代码+模型;评测集独立不可变;防特征穿越与时间点切片(point-in-time)
  • 受监管合规:append-only 审计覆盖成功/拒绝/降级/人工放行四路径;PII 存储边界脱敏;consent 闸门;决策依据可回放;监管报送自动化
✗ 踩坑
  • 数据漂移无人值守:评测指标连续数周缓降无人告警,旧向量语义漂移模型静默劣化,缺 PSI/KL 监控即失明
  • 端侧模型版本错配:端云 Embedding/模型版本不一致,端侧用旧向量云端用新模型,预测系统性偏倚;下发无签名与灰度难回收
  • 多模态对齐失效:图文问答"图上没有却言之凿凿",纯文本指标全绿但物体计数/空间关系错误,引用不可追溯放大误导
G10/K10 边缘·多模态·退役·人在环 + 合规/退役/人在环事故
✓ 门禁
  • 端侧与边缘部署:量化前后评测对比;真机低内存验证;模型下发版本+签名+灰度;离线降级兜底;端云版本一致性校验
  • 多模态评测与引用:多模态专项评测集;模态缺失降级;跨模态一致性校验;图/视频出处引用可追溯;服务期对齐校验
  • 模型退役与人在环:退役标准作业(入口关闭+权重归档+回滚保留);灰度切流验证;高风险动作强制人工确认;人在环审计留痕;降级路径可触发
✗ 踩坑
  • 合规留痕缺失:监管要决策依据只能导出成功路径日志,拒绝与依据全缺;PII 脱敏只做展示层库内仍裸,被认定违规
  • 模型未退役幽灵服务:旧模型"下线"仍有隐藏入口调用;退役只删文档没关入口,回滚点已丢;账单/别名/定时任务仍活跃
  • 人在环缺失自动驾驶翻车:高风险动作(大额/外发)全自动执行,一次错误批量外发;无人工确认,出事无法追责拦截
G11 组织治理与架构决策清单
✓ 门禁
  • MTTR/事故复盘 SOP:发现→定位→止损→恢复→验证五段各自可测量;预防项写成检测/阻断/演练并带 owner+截止日;度量 MTTD/MTTR/同类 90 天复发率
  • 技术债与架构评审门禁:ADR 最小字段(decision_id/context/tradeoff/owner/review_date);分层依赖与禁用 API 静态检查阻断;例外登记有效期与回收责任人
  • 跨团队推动与团队赋能:让正确做法成平台默认路径而非加审批;服务模板/门禁规则库/runbook/ADR 模板带 owner 与版本;按采用率与例外率反馈修正默认
✗ 典型失效
  • 复盘只写报告不产阻断机制;只优化定位段忽略告警延迟与验证缺失,MTTR 虚高
  • 技术债决策留痕缺失:没人记得当初为何选此边界/例外,每次改动靠猜,重构成高风险
  • 规范靠一份文档不落地,推动靠考核而非改默认路径;例外持续上升仍不调默认
G12 资产台账与生命周期
✓ 门禁
  • 资产台账:名称/类型/责任人/环境/依赖/状态/退役日期;发布与监控反向核对,线上有台账无列为待补缺陷;责任人变更走交接
  • 依赖清单与 SBOM:每次构建产出 SBOM 与镜像摘要入库,禁发无清单制品;覆盖直接+传递依赖,能按包名反查制品
  • 配置资产与漂移治理:配置统一存放版本化,禁登录实例手工改值;运行态与声明值比对,差异进变更工单
  • 密钥与凭证闭环:集中托管,应用持短期票据,禁长期密钥写镜像/仓库;按使用方登记轮换周期,半年吊销演练
  • 模型与数据资产:上线绑定权重版本+数据快照+特征处理版本;数据回填记录来源/时间窗/执行人,保留回滚
  • 制品仓库与版本:标签禁覆盖,发布以不可变摘要为准;构建记录含源码/依赖锁/工具链,仓库按环境晋级
  • 退役与归档:先摘流量设观察期监控调用量,非零即回退;归档保留配置/契约/最后可运行制品,退役后同步台账监控文档值班
✗ 典型失效
  • 台账靠记忆回答"谁在管",线上有台账无成待补缺陷;责任人变更直接改字段不交接
  • 配置漂移不报错只让同代码不同环境表现不同;登录实例手工改值不回写
  • 密钥过期无人知晓/离职仍可用/散落脚本无法清点;标签被覆盖、构建未锁定致线上不可复现
  • 僵尸服务/废弃域名/孤儿队列混在资产里干扰判断;退役只删文档没关入口成幽灵服务
G13 测试工程化与质量门禁
✓ 门禁
  • 测试分层:纯逻辑进单元,边界契约进集成,跨服务留少量端到端;端到端只控关键主链路;用逃逸缺陷统计反推分层失衡
  • 契约测试:消费方生成契约用例,提供方流水线回放失败即阻断;覆盖字段/类型/可空性/枚举/错误码;不兼容先兼容期双写
  • 故障注入与混沌:注入前写明假设/观测指标/一键终止条件;从单实例单依赖逐步扩大,失效预案转门禁或自动化
  • 压测基线与容量回归:固定场景与数据规模记录吞吐/P99/资源基线;每次发布前跑同场景超阈即阻断;压测环境配置与生产可比
  • 测试数据治理:合成数据或脱敏快照,禁生产明文入测试库;用例自带数据准备与清理或按租户隔离;固定种子可重放
  • Flaky 治理:标记重跑率超阈自动隔离建缺陷单;优先排查共享状态/隐式时间依赖/异步等待/外部未打桩;修复后连续多次无失败才恢复
  • 质量门禁:放行=静态检查+测试分层通过率+契约回放+容量回归+制品清单齐备;每次发布归档门禁结果链接;豁免写明理由/范围/到期自动失效
✗ 典型失效
  • 所有问题端到端测一遍反馈慢定位难,只单元测又抓不到契约与部署差异
  • 集成环境才发现的字段不兼容修复代价最高;没被演练过的降级策略不能算可用
  • 一次压测通过不代表下次成立,容量随代码数据漂移;测试数据互相污染结果随机、生产明文入测试库合规风险
  • 偶发失败被默许"重跑就好"流水线失拦截;"测试通过"只是口头结论,事故后无法回答验了什么
K11 Java×Python 边界生产事故
✓ 门禁
  • 边界显式契约与拒绝路径:跨语言中立契约定义,每端各自校验;字段类型/单位/精度/可空性写进 IDL 生成各端代码,禁手写结构体各解
  • 编码与规范化:显式编码固定 Unicode 归一化形式,参与签名/哈希/去重前先规范化;换行/BOM 同样改变字节序列
  • 时刻与本地日期区分:存储带时区时刻,聚合用明确业务时区与日切规则;接口只传带偏移 ISO 时刻/UTC 毫秒,日切规则单测覆盖边界
  • 统一超时预算:重试属整条链路不在单客户端;下游超时小于上游剩余;重试只最外层带抖动退避,禁每层各自重试乘开
  • 并发按共享资源核算:线程/协程/进程池语义不同,容量换算到连接数/FD/内存统一核算;连接数作一等监控与扩容约束
  • 统一错误码与可重试标记:区分业务拒绝/可重试/不可恢复并跨语言映射同一枚举;契约定义后各端按表映射,禁靠异常类名判断
✗ 踩坑
  • 序列化语义不一致:Java 长整型分 vs Python 浮点元四舍五入,对账差额散在大量小额订单
  • 字符编码与换行:Python 按系统默认编码读,换容器后变乱码,同主键两端哈希不同出两套记录
  • 时区与时间戳:Java 带偏移上报,Python 按本地时区日切,跨时区订单算进相邻日期对不上
  • 超时与重试叠加:两端各设一层重试,下游抖动实际请求量被乘开,线程池占满健康检查超时
  • 连接池与进程模型:Python 多进程×每进程池,Java 按线程数估算扩容,实际连接数打满 DB 报零星超时
  • 异常语义与错误码:Java 业务拒绝映射异常,Python 捕获记失败丢弃,可重试限流被静默丢致数据缺失
K12 AI / 模型服务生产事故
✓ 门禁
  • 就绪探针区分存活与可服务:模型类就绪须含依赖加载完成+轻量推理通过;预热完成前返回未就绪;扩容预留缓冲副本
  • 模型版本化灰度:权重/提示模板/后处理阈值打进同一版本标识;灰度按业务指标判定放量而非只看技术健康度
  • 请求维度成本护栏:按请求记录输入/输出长度/重试次数/估算成本,超阈实时告警并熔断;上下文×重试×并发三者相乘必设上限
  • 溢出显式可观测:关闭静默截断,超限返回明确错误并要求上层摘要或分段;记录上下文长度/保留策略/被丢弃片段,溢出率纳入监控
  • 降级链独立健康探测:每层降级配独立超时与最终默认响应,保证一定有界返回;定期注入主链路故障实际走降级链验证兜底
✗ 踩坑
  • 冷启动与权重加载:新实例进程就绪但权重仍在加载,就绪探针只看端口就放行,请求迟迟不返上游超时重试推高负载
  • 模型版本漂移:灰度切新版权重接口未变但阈值附近样本大量改判,下游规则误拒率升却无发布记录可查
  • Token 计费失控:上游超时触发重试且每次携带完整历史上下文,单会话消耗放大数倍,月末才发现的成本异常
  • 上下文溢出:超窗静默截断丢弃关键约束,模型给矛盾答案;服务端日志只正常返回无任何溢出痕迹
  • 降级与兜底失效:主模型超时切备用规则但其依赖缓存已下线,两级都失败无默认响应,用户侧长时间无返回
九、垂直领域范式(D01-D12)

领域题破题四步:复述业务闭环 → 立领域模型 → 讲关键范式 → 端到端场景 + 合规兜底。第一失分点是说错业务语言,不是技术。

领域模型:限界上下文划边界、聚合根守不变量、状态机驱动流程、领域事件解耦——先立模型再谈架构
资金安全:复式记账有收必有付;分录不可变(红字冲正禁改删);对账是最后兜底;T+0/T+1 清分时效
幂等处:支付/核销/扣款全靠幂等键(业务单号)+ 状态机前置校验 + 唯一索引
库存守恒:现货 = 预扣 + 占用 + 可用,任何转移可对账;防超卖 Redis Lua + DB 乐观锁兜底
电商交易:订单状态机(待付款→待发货→待收货→已完成);履约链=拆单→分仓→波次→拣货→物流
SaaS 多租户:隔离三方案(独立库/共享库独立 Schema/共享库共享 Schema+tenant_id);行级隔离 TenantDataSource
物联网:设备影子(desired/reported)+MQTT QoS 0/1/2;时序数据 InfluxDB/TDengine;边缘计算下沉
内容社区:UGC 审核(机器初筛+人工复审)+流量池推荐;反作弊设备指纹+行为画像;敏感词过滤 Aho-Corasick
广告商业化:RTB 实时竞价(100ms SLA)+PMP 私有交易;素材审核+曝光/点击归因;防刷点击欺诈检测
游戏实时:帧同步 vs 状态同步;房间服务器+匹配算法;断线重连状态恢复;外挂检测内存哈希+行为模式
合规红线:KYC/名单筛查/监管报送时效/等保三级/审计不可篡改——合规是设计输入不是补丁
D01 金融 · 支付与清结算
支付状态机:待支付→已支付→已关单/已退款,转移表驱动,异常流(超时未付/渠道掉单)靠关单+轮询补偿
幂等三件套:幂等键取业务单号、状态机前置校验(已支付禁重复支付)、DB 唯一索引兜底
复式记账:每笔交易借贷双腿且收付相等;余额由流水汇总而非直接改字段;分录只增不改
清结算 T+1:日切切断在途,清分按渠道汇总、结算按账户出款;长款挂账、短款催收,差异不过夜
热点账户:只写流水表,100ms 窗口聚合净额后批量 UPDATE 余额,队列化保序
渠道路由:成功率/成本双目标动态权重;单渠道故障熔断切换,对账任务兜底资金安全
跨境支付:多币种记账+汇率快照,原路原币退款,汇兑损益独立科目,牌照与监管报送先行
D02 金融 · 风控与合规
决策链路:特征服务→规则引擎/模型→决策(通过/挑战/拒绝)→处置→反馈闭环,全程百毫秒级
规则引擎:DSL 化规则配置热更新;名单本地缓存+定时同步;实时与批量两条链路分离
误杀与召回:权衡误杀率与召回率;模型可解释、每次决策留痕可回放
反欺诈:设备指纹 + 关系图谱识别团伙;异常聚类(同设备多账户/共享WiFi)
AML:KYC 分级准入、名单筛查(实时+批量)、可疑交易评分模型、监管报送时效 SLA
合规四件套:数据分类分级、敏感字段脱敏(查询/导出/日志三处)、审计不可篡改、等保三级
贷后催收:DPD 推进案件状态机;动作策略化 + 通信合规前置(时段/频次/禁呼);还款按费用→利息→本金分配留痕
D03 电商 · 交易与履约
订单状态机:正向(待支付→已支付→已发货→已完成)与逆向(退款/退货/换货/取消)同一张转移图,逆向流程先行设计
库存三态:可用/预扣/占用守恒,预扣设超时释放;防超卖 Redis Lua 原子扣 + DB WHERE num>0 兜底 + 对账
仓间调拨:缺仓触发调拨或拆单,就近履约与成本权衡;调拨单也是状态机
价格时效:下单生成报价快照(商品+券+运费),活动改价不影响在途订单
商品模型:SPU 统一定义、SKU 定义交易;类目属性与价格分离,错价防控靠改价审批+监控
购物车试算:试算与下单分离,试算不一致以下单页实时计算为准;事务边界到「扣库存+建单」为止
商家结算:三户模型(待结算/可提现/保证金);明细级复式记账;结算单驱动打款;逆向冲抵可见
D04 电商 · 营销与定价
券生命周期:模板→批次→领取→核销→过期回收;领取限领(用户级)、核销幂等(核销单号唯一)
防超领:券库存原子扣减(Redis Lua + DB 兜底),防刷靠频率限制+黑名单
价格引擎:满减/折扣/券按优先级栈式叠加,取最优价;试算接口与下单同源保证一致性
积分账务:与资金账务同源(流水驱动余额),过期走批处理任务,冻结/解冻双分录
价保差价:规则匹配生成价保单,差价原路退回,与退款流程共用幂等键
投放治理:预算可控(先扣预算再发券)、限速发放(令牌桶)、过期自动回收、ROI 归因闭环
消息触达:Push 优先失败降级短信;疲劳度前置拦截;末次点击归因口径统一;大促错峰限速
D05 企业级 · SaaS 多租户
隔离模型:共享 DB(tenant_id 行级)/ 独立 Schema / 独立 DB 三档,按租户规模与合规要求选,路由层统一收口
租户上下文:ThreadLocal + 过滤器强制注入,禁无租户查询(防串租户);大租户物理分库
计费订阅:计量事件幂等去重 + 窗口聚合;订阅状态机(试用→生效→欠费冻结→恢复),欠费停服不停数据
IAM 行级权限:查询强制追加数据范围条件(ALL/ORG/SELF/自定义谓词);SSO 先绑定后授权
配置分层:默认值→套餐→租户覆盖逐层深合并;插件沙箱加载 + 版本矩阵校验
私有化交付:一套代码多形态;灰度按批次推进,健康检查失败即熔断回滚本批
数据生命周期:迁移五阶段(拷/追/校/切/观)可回切;PITR = 全量+binlog;销毁四步留证
D06 本地生活 · 派单与 LBS
派单评分:距离 + 顺路度 + 压力 + 公平性权重取最优;乐观锁抢占防双重派单,失败转下一候选
LBS 网格:GeoHash 精度 6 查九宫格;ETA 用实测中位数衰减校准,承诺 = 预测 + 安全余量
计价引擎:规则按优先级顺序求值、每步留痕可解释;溢价上限是合规红线
供需均衡:热区预测→奖励杠杆 + 调度单引流;预约单时间盒分配运力,不与实时单抢骑手
骑手风控:轨迹瞬移/悬浮/绕路三类特征打分;处置分级(观察/限单/封禁)+ 全程留痕供申诉
运力预测:网格×时间片预测;供需比分层;引导提优先级不承诺;激励挂缺口防套利
D07 物联网与车联网
接入网关:百万长连接按租户/设备限流;一机一密(HMAC + 时间戳防重放),密钥存 KMS
消息总线:规则引擎热更新路由;广播按租户分片 + 令牌桶,防一条指令打爆所有连接
设备影子:desired/reported 分离,离线也能下发;命令 ACK 超时指数退避重发,上限转人工
OTA 升级:差分包 + 按批次灰度(1%→5%→25%→100%),失败率超阈即全量回滚;双分区防断电变砖
时序数据:按设备 + 时间分片批量写;抽样 + 关键帧补偿回放;冷热分层控成本
设备生命周期:注册激活绑定车辆;影子追平配置;批量灰度熔断;自愈设退出;退役吊销
D08 内容社区与 UGC
Feed 推拉结合:大V 写扩散(推),普通用户读扩散(拉);热度分时间衰减防老内容霸屏
内容审核:先机审后发,疑点/高危类目进人审先审后发;申诉插队优先审(误杀成本高)
计数一致性:本地累加 + 定时合并落库,禁每赞一次一次写;弹幕按视频分片房间广播
创作者生态:可结算 = 已确认 − 已提现 − 冻结;信用分多维衰减,低分降权 + 禁提现
版权安全:感知哈希 + 帧间差分指纹抗压缩匹配;通知-删除 + 反通知 + 留痕(避风港)
推荐系统:多路召回动态配额;粗排双塔/精排深度;重排打散+负反馈;新内容保底曝光
D09 物流与供应链
履约寻源:候选仓按库存覆盖 + 距离过滤,成本函数 = 运费 + 时效惩罚 + 拆单惩罚
TMS 调度:离线 VRP 启发式带时间盒(超时出可行解);动态插单算边际成本;装载重不压轻、后送先装
面单轨迹:号段发号 + 校验位 + 随机步长防遍历;隐私面单虚拟号;静默检测主动告知异常
补货计划:安全库存 = z × √(提前期×需求方差 + 提前期方差×均值²);可售 + 在途低于阈值触发采购
逆向理赔:定损标准件自动 + 疑件人工;赔付幂等(claimId 唯一);状态机全程留痕防骗保
供应链协同:分层预测偏差周内纠偏;ATP = 在库+在途+在制-安全-承诺;S&OP 变更单
D10 广告与商业化
检索投放:倒排 + 位图混合索引,人群包位图求交毫秒过滤;频控按用户 × 广告 × 时间窗
竞价计费:GSP 二价(下一名竞价 + 最小增量);pacing = 剩余预算/剩余时长比动态调价
归因回传:归因窗口内末次点击归因;回传幂等(convertId 去重),防广告主侧重复计数
结算报表:Kafka 流式聚合 + 分钟级宽表;平台 vs 客户口径 diff,容差内抹平、差异挂账
反作弊:GIVT 已知库 + SIVT 行为模型双层;设备/IP/账号聚类识别刷量团伙整簇降权
创意优化:bandit 探索利用;素材模板化生成;落地页价格结构化比对;衰退相对基线监测
D11 游戏与实时互动
游戏网关:无状态连接层 + 可靠/不可靠双通道;广播本地扇出优先,跨网关按 roomId 分区保序
帧同步:定点数 + 固定步长 + 输入全集同序执行 + 逐帧哈希校验;只存输入流即可回放
房间匹配:评分 = 实力差 + 等待惩罚 + 延迟惩罚,超时逐级放宽;房间状态机 + 超时踢出
经济系统:货币账务三件套(条件更新 + 流水 + 幂等);ZSet 分赛季分桶;交易行价格区间防洗钱
战斗结算:公式参数化版本化;BUFF 互斥组 + 堆叠 + 帧事件;结算 Saga 幂等 + 对账补偿
游戏内社交:seq 消息流;世界频道读扩散抗峰;私聊信箱兜底;先审后发/后审分频道
D12 强合规与政企交付
医疗:集成引擎星型收敛异构协议;EMPI 患者主索引;病历版本链留痕;调阅授权 + 审计
教育:大小流分离(CDN 扛规模 + RTC 保互动);白板 op 流保序重演;旁路录制双流打标
信创:方言适配层 + native 能力矩阵;国密三层(传输 SM2 / 存储 SM4 / 签名 SM2);CI 合规门禁
数据合规:数据地图为索引;删除编排全链路(备份标记到期);跨境网关路由;同意版本化
审计追溯:四层采集(应用/网关/数据库/堡垒机);WORM + 哈希链防篡改;血缘影响分析;口径 SSOT 报送
一网通办(政务):共享目录分级治理;授权链网关;隐私计算不出域;流程时限看板不默认放行
十、服务端安全检查(OWASP Top 10:2025)

一条总纲统领全部检查点:默认不信任——输入走白名单校验、权限最小化、密钥不出 KMS、出口一律加密与脱敏。

口令与令牌:Argon2id/scrypt 慢哈希禁 MD5/SHA1;JWT 用 RS256 禁 none
会话:ID≥128 位随机;Cookie 三标志 HttpOnly/Secure/SameSite;登录后换 ID 防固定
注入四防:SQL 一律 PreparedStatement;XSS 按上下文编码;XXE 禁外部实体;反序列化白名单
SSRF:封内网段与 169.254.169.254;校验重定向链+防 DNS 重绑定
密码学:AES-GCM(AEAD);RSA≥2048 或 ECC P-256;TLS≥1.2 启用 ECDHE 前向保密
日志与审计:生产错误脱敏禁堆栈/SQL;审计记录 Who/When/What/Result 防篡改
API:每端点强制鉴权防 IDOR;CORS 禁 *;生产关 GraphQL introspection
供应链与建模:SBOM+SCA 扫描、CVSS≥7 构建失败;STRIDE 建模→DREAD 定级
SEC01 认证与授权
口令哈希:Argon2id 首选/scrypt/bcrypt(cost≥10)/PBKDF2(≥210000),禁 MD5/SHA-1
salt:每用户唯一随机,禁全局共享或无 salt
口令策略:NIST 800-63B 长度优先(≥8,高敏感≥12),不强制复杂组合;接泄露黑名单
防枚举:失败提示统一用户名或密码错误,响应时间恒定
防爆破:尝试限制+指数退避+锁定;禁 URL 传凭证
OAuth2:授权码+PKCE 强制;校验 state/nonce;redirect_uri 白名单;禁 implicit
JWT:显式指定算法拒绝 alg=none;校验 exp/nbf/iss/aud;access≤30min 可撤销
授权:默认拒绝+对象级归属校验防 IDOR;禁信任前端 role
SEC02 会话管理
会话固定:登录成功必须轮换 sessionId
令牌生成:SecureRandom 熵≥128 位,禁 Random/时间戳
Cookie 三属性:HttpOnly+Secure+SameSite 缺一不可
超时:绝对 8h+空闲 30min,禁永不过期
登出:服务端真正失效令牌,禁仅清前端
权限提升:切管理员必须轮换令牌;敏感操作 step-up 重认证
CSRF:状态变更非 GET;SameSite+anti-CSRF token 双重
Redis 会话:requirepass+网络隔离+TTL;禁 URL 传令牌
SEC03 输入输出安全
输入校验:白名单优于黑名单;验证失败直接拒绝而非净化
SQL 注入:一律 #{} / PreparedStatement,禁 ${} 拼接
命令注入:禁 Runtime.exec 拼接,用参数数组;SpEL/OGNL 禁动态求值用户输入
XXE:XML 解析禁外部实体
XSS:输出按 HTML/JS/URL/CSS 上下文分别编码;富文本白名单净化库+CSP
SSRF:封禁 127/10/172.16/192.168/169.254.169.254;校验重定向链+防 DNS 重绑定
文件上传:魔数校验非扩展名;重命名+独立存储+禁可执行权限;解压防 ZipSlip
反序列化:禁 ObjectInputStream 处理不可信数据;ObjectInputFilter 白名单;关注 Jackson/Fastjson/XStream 通报及时升级
SEC04 密码学应用
对称加密:AES-128/256+GCM(AEAD);禁 DES/3DES/RC4/ECB/无认证 CBC
IV/Nonce:每次随机唯一,禁固定复用;GCM 校验失败必须拒绝
非对称:RSA≥2048(推荐 3072)+OAEP/PSS 填充,禁 PKCS#1 v1.5;DSA 弃用
签名:ECDSA 确定性签名(RFC 6979)防 k 泄露;ECDHE 保前向保密
哈希:SHA-2/SHA-3,禁 MD5/SHA-1
HMAC 比较:MessageDigest.isEqual() 常量时间,禁 ==;Encrypt-then-MAC
随机数:SecureRandom,禁 setSeed 固定种子
密钥管理:存 HSM/KMS,禁硬编码;byte[] 用后清零;用途分离
TLS:≥1.2 优 1.3;ECDHE+GCM;HSTS;证书严格校验禁 trustAll
SEC05 错误处理与日志
Fail-Secure:异常时默认拒绝;加密/签名校验失败必须中止禁降级明文
统一封装:全局异常处理器,生产返回通用信息,详情留服务端
禁泄露:响应禁含堆栈/SQL/路径/框架版本
异常纪律:禁 empty catch、禁 catch(Exception) 过宽、禁异常做流程控制
日志四要素:who/what/when/result;失败操作必须记录
脱敏:禁记口令/密钥/完整卡号;卡号留后四位
防篡改:日志独立存储或 WORM
调试端点:生产关闭/鉴权 Actuator/Swagger/Druid
SEC06 API 安全
端点鉴权:每端点强制鉴权+对象级防 IDOR
API Key:禁前端代码/URL,用 Header 传输
限流:令牌桶多维度(用户+IP+接口),禁仅按 IP;429+Retry-After
响应最小化:字段按角色裁剪,敏感字段脱敏
批量查询:强制分页禁全量
版本管理:API 版本化,旧版本有下线计划
GraphQL:生产关 introspection;深度≤7/复杂度≤1000;per-field 授权
SEC07 供应链与第三方
SCA 扫描:CI/CD 集成 Dependency-Check/Trivy
阻断阈值:CVSS≥7 构建失败;Trivy --exit-code 1 --severity CRITICAL
SBOM:每次构建生成归档(Syft 生成/Grype 按 SBOM 匹配 --fail-on high)
依赖治理:Enforcer dependencyConvergence+bannedDependencies(排除 Log4j 1.x)
来源可信:禁不信任源拉依赖;产物校验签名/哈希
第三方调用:严格 TLS 校验禁 trustAll+超时重试控制
漏洞响应:禁已知高危不升级
配置口径:NVD API Key 免申请;Trivy 无需联网,Build 与部署前各扫一次
SEC08 威胁建模
STRIDE 六类:伪装/篡改/抵赖/泄露/拒绝服务/提权,逐组件提问
建模时机:设计阶段执行;架构变更必须更新,禁做完即弃
工作流:DFD→信任边界→STRIDE→DREAD→消减→定期复审
DREAD 评分:5 维各 1-10 取均值;8-10 阻断发布/4-7 本迭代/1-3 后续
组件重点:网关防 alg=none、应用防反序列化 RCE、Redis 防 CONFIG SET、CI/CD 防凭证泄露
威胁面:内部威胁同样建模,禁只关注外部
频率:每 Epic 30 分钟轻量;大版本 2-4 小时工作坊
四原则兜底:最小权限/纵深防御/Fail-Secure/零信任