一、核心方法论(道法术势,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 AI 工程纪律
变更必回归黄金集:≥50 题固定评测集,任何 Prompt/模型/工具变更全量跑
放量四闸门:要点覆盖≥基线−2%;安全拒答 100%;P99 延迟≤基线×1.1;成本≤基线×1.1
灰度节奏:1%→10%→50%→100%,每档≥30 分钟
工具七要素契约:鉴权主体/幂等键/超时/最大重试/可写否/HITL/配额
四方版本化:Prompt/索引/模型/工具全部版本化才能复现与回滚
模型 pin snapshot:别名会被静默换版;识别信号=输出指纹偏离/成本变化/changelog
失败归因标签:模型/检索/提示词/工具/数据/评测本身,无归因禁再调一下
M15 排障与复盘
止血优先序:回滚>降级>限流>扩容>重启>切流量;先保留现场再离线分析
证据链标准:错误率看 5 分钟粒度;火焰图采样≥60s;堆转储取 OOM 前+现场两份
对照实验:观察≥30 分钟;样本量 n≥(1.96σ/Δ)²
四步闭环:止血→定位→根因(5Whys)→复盘(blameless,改进项带 owner+期限)
5Whys 红线:根因指向流程/系统缺陷,不许落在人疏忽
自愈边界:网络抖动/OOM/依赖超时可自愈;DB 主从切换/数据损坏必须人工
可观测分工:Metrics 答发生了什么、Tracing 答在哪里、Logging 答为什么
时间线硬指标:3 分钟响应→止血→留现场→24h 复盘→混沌演练验证;盯 MTTD/MTTR
M16 势定律
90-9-1 法则:90% 潜水/9% 偶尔贡献/1% 持续创造——冷启动先服务好前 1%
邓巴数 ~150:超出后靠制度不靠信任;单服务认知半径上限
Hype Cycle:热门与生产可用错峰 1-3 年,核心链路只用 plateau 期技术
梅特卡夫定律:价值∝n²,爆炸半径与协调成本同样∝n²
里德定律:可分组群体价值∝2ⁿ——社区型生态增长判断依据
摩尔定律:18-24 个月性能翻倍是历史趋势;延迟敏感路径不赌硬件改善
普特南定律:交付速率∝规模^α(α<1),人月不可线性相加
死海效应:强者流失弱者沉淀——用成长通道对冲
彼得原理:员工会被提拔到不胜任层级——设技术 IC 双通道晋升
二、技术栈深度(C01-C15)
每篇先记两类「硬结论」,再记机制原理:参数硬规则与版本锚点是排障与选型最先要用、最不能记错的部分。
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 主因
版本锚点: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 次/死循环状态去重/预算四维硬熔断/危险操作人工在环
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 仍是唯一解
三、核心原理速查(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-A26)
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 与上下文压缩策略 压缩策略(滑动窗口 / 摘要 / 卸载 / 隔离)各自适用边界是什么?
记忆工程:分层 / 生命周期 / 存储三态 「编码 → 存储 → 提取 → 巩固 → 反思 → 遗忘」生命周期各环节的工程实现是什么?
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 渐进披露 三层渐进披露(广告层 → 指令层 → 资源层)如何解决「跨会话规则复用 + 上下文腐化」两大问题。
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 的职责边界与环境隔离要求是什么。
A07 AI 安全风险与合规
AI 系统四大风险面与分层防护 核心认知是:模型输出不可信、一切外部输入不可信,安全是「执行侧」问题——靠 Harness 硬边界与后端强控制,而非靠提示词礼貌请求。
合规要求与 Java/Spring 落地(ExecutionContext / ToolAuditEvent) 核心是「合规不是文档,是可执行的代码结构」。
Spring AI 安全层与大模型网关 其六项核心能力与自研组件清单、演进顺序(先工程治理再智能路由)是什么。
A08 Agent 工程化架构
Agent 四组件与三层结构设计 Tools / Agent / Workflow 三层的本质区别为什么是「控制流由谁掌握」而非节点类型?
任务拆分与 DAG 并行执行 依赖分析画 DAG 后「并行降低的是关键路径总时间而非每步时间」如何理解(端到端延迟降 40%–60% 的前提是什么)?
记忆系统选型:Mem0 / Letta / Zep-Graphiti 以及知识图谱增强记忆如何补向量检索的短板(多跳推理)、「记忆整合」四步(去重 / 冲突消解 / 抽象提炼)如何从碎片到知识。
上下文压缩的预算公式与状态管理四层 对话历史 / 业务状态 / 任务状态 / 长期记忆四层为何不能混放(「这次报告用英文」是业务约束不是用户永久偏好)?
反思 / 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。
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 开源平台选型与对照
RuoYi AI vs JEECG AI 双平台对照与选型 核心在于把「平台路线」与「自研路线」放进同一条光谱,而非当作非此即彼。
平台 vs 自研决策树与 Ragent/Nexus 模块划分 Ragent 7 模块与 Nexus 6 模块的分层意图是什么——为什么「切换模型 / 向量库 / 对象存储时核心问答流程不重写」是架构的第一验收标准。
A14 平台落地与产品化差异
RuoYi ruoyi-chat vs JEECG airag 逐包对照 核心结论:平台包结构 ≈ 自研分层表的产品化。
产品化 vs 自研差异(公平排队 / 事务 / 证据短路 / 11 种设计模式) 核心命题:「调 API ≠ 生产级 Agent」。
A15 Spring AI 工程实践
ChatClient 多模型路由与 BeanOutputConverter 结构化输出 BeanOutputConverter 如何把自由文本收敛为「可校验的 I/O 契约」?
记忆四实现与 Tool Calling 生产范式 把 Java 方法暴露为 LLM 工具(Mistral / Ollama / OpenAI 三套实现)的生产要点是什么?
RAG 流变(Sequential/Branching/Conditional)与 Guardrails 文档入库侧的 splitters(分块)与 metadata 富化(摘要 / 关键词)如何共同决定召回质量?
A16 生产级 Agent 中间件
Ragent 双链路 v1/v2 与 Nexus 三层执行器 MCP 边界为什么「客户端仅在 agent 模块装配、Workflow 不连 MCP」?
检索融合 RRF 与模型容错三态熔断 模型容错的「首包探测 + 三态熔断 + 多候选切换」如何设计?
Redis ZSET 公平排队与 RocketMQ 事务一致 海量文档分块入库为什么必须 RocketMQ 事务消息(半消息 + 本地事务 + 回查)+ 幂等 + 分布式锁状态机。
11 种设计模式与"调 API ≠ 生产级 Agent" 以及中间件 / 基础组件的 Starter 化交付范式(防重 Starter:AOP + 注解复用)如何提升工程复用度。
A17 AI 系统测试
非确定性断言与 Golden Set + RAGAS/DeepEval + CI 核心在于回答:哪些测试仍用传统手段、哪些必须换范式、回归门禁卡在哪一层。
工具契约 / 防死循环 / 并发压测 + 故障注入 核心在于:AI 系统的「异常路径」比「正常路径」更需要测试资产。
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 闭环 观测、评测、修复三者由此串成环。
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 项目从「烧钱实验」变成「可经营的业务」。
A23 模型与 Prompt 版本治理
模型 / Prompt 版本管理与回滚 核心在于回答:Prompt 与模型配置是一等资产,必须获得与代码同级的工程待遇。
A-B / 灰度非劣效界值与发布门禁 核心在于回答:AI 发布的风险不是「崩溃」而是「悄悄变差」——发布机制必须能感知渐变劣化并自动刹车。
生产漂移监测与幻觉缓解运营闭环 核心在于回答:上线不是终点,质量是运营出来的。
A24 规模化并发与流式
水平扩展 / 会话亲和 / 限流排队 / 多租户配额 QoS QoS 分级第一性:多租户下「先到先得」会被大客户突发挤占——配额按租户分级(付费 / 免费),排队按公平原则(ZSET 按入队时间),超限按租户策略分流(降级 / 排队 / 拒绝)。
流式保活 / 续传 / 中断恢复与 TTFT 优化 核心在于回答:流式体验的工程难点不在「能流」,而在「流得稳、断得起、等得不焦虑」。
A25 平台工程与交付
内部开发者平台 IDP / 脚手架 / Starter 化标准化交付 核心在于回答:对使用者隐藏复杂度,对运维者暴露可控性。
裸线程池 vs Starter 动态线程池 vs 虚拟线程选型 + SDD 核心在于回答:AI 服务是 IO 密集型负载,执行基建的选型直接影响成本与稳定性。
A26 业务价值与组织 adoption
场景选型决策树与价值度量(北极星指标) )筛选值得做的场景;价值度量(北极星指标)让项目价值可量化可追踪;Workflow vs Agent、v1/v2 双引擎按场景路由的落地对应。
失败案例避坑与组织 adoption 路径 核心在于回答:决定 AI 项目存活的不是单点技术亮度,而是工程完整度与组织可复制性。
六、工程化要点 + 生产踩坑(G01-G08 / K01-K08)
两条主轴贯穿全部门禁:卡点指标分层——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
G01/K01 发布回滚与变更门禁
✓ 门禁
- 灰度比例表:1%→5%→25%→100%,档间停留观察窗,否决权归卡点指标
- 发布三要素缺一不合格:灰度比例表+卡点指标阈值+一键回滚命令
- 卡点指标分层:L1 用户可感> L2 依赖饱和> L3 资源,L3 不能单独放行
- 回滚三维:镜像+配置+流量任一不可退整体不可退
- 错误预算冻结:预算耗尽或窗口外非紧急变更默认冻结
- 配置当发布:P0 配置项(鉴权/限流/路由)灰度+双人复核
✗ 踩坑
- 人工觉得没事扩全量,3 分钟后才靠业务投诉发现故障
- 只演 kubectl rollout undo 留有毒配置=假回滚,镜像与配置不配对二次故障
- 只看 CPU 健康就放量,业务错误率已炸
- 紧急通道被滥用绕过比例表直推全量
- 代码回滚≠数据回滚,半成功单仍需冻结写入跑补偿
- 变更单缺灰度/卡点/回滚字段,混入发布流水线
G02/K02 可观测与证据链
✓ 门禁
- 三支柱随脚手架默认交付禁上线后补:指标发现异常、追踪定位、日志给上下文
- 业务指标优先放行:有下单成功数才谈 JVM 堆
- 采样策略书面化(ADR):头部采样+错误必采+慢请求必采
- TraceId 过 MQ/线程池/定时任务/Reactive 必须有传递方案
- 告警可行动公式:责任人+首要动作+升级路径+Runbook;零处理告警季度删除
- 变更单号进 Trace baggage,缺字段阻断发布
✗ 踩坑
- 监控全绿但下单成功率掉到 80%,值班不知先看哪块板
- 事故时段采样过低,只有日志碎片拼不出跨服务路径
- Trace 过 MQ/线程池全断,跨服务排查盲飞
- 低价值告警刷屏淹没致命信号
- 临时开 Debug 忘关,磁盘与成本打满
- 错误日志无变更单号,故障期无法关联最近发布
G03/K03 容量与资源预算
✓ 门禁
- 应用与编排同一容量模型:池/队列与 K8s limit/HPA 同源,先打满侧定容量
- 池化可观测:拒绝次数/队列等待/活跃数进指标告警
- 压测必打拒绝路径:触发方式/指标曲线/用户可感/是否可恢复
- 虚拟线程用信号量把并发钉在下游可承受数上
- 扩容单含下游容量确认;单副本依赖上峰值前必须有冗余
- JVM 容器内存账:堆+元空间+直接内存+栈+sidecar+页缓存≤limit
✗ 踩坑
- HPA 加副本吞吐不升——池仍按旧配额,Pod Ready 但全堵在池等待
- 副本数×池大小打满 DB,集体超时
- HPA 毛刺抖动频繁扩缩,连接重建风暴比不扩更糟
- 单副本 DB/Redis 上峰值,一抖全站不可用
- 限流阈值预发/生产不一致;集群限流≠单机×副本数
- 无限队列是事故预告,拒绝率上升而成功率暂稳是雪崩前兆
G04/K04 数据变更与 SQL 治理
✓ 门禁
- DDL/修复可回滚或可补偿:影子表/双写/分批/回填校验
- 大表只用 gh-ost/pt-osc 白名单工具,禁裸 ALTER
- 执行熔断量化:锁等待/复制延迟/影响行数偏差/错误率,超即停
- 回滚 SQL 与前向同等评审+类生产验证
- 数据修复双人审批:可回放脚本+工单+窗口+回滚包
- 副本延迟门禁:先定义读己之写策略,超阈切主读;季度恢复演练出 RTO/RPO 实测数
✗ 踩坑
- 高峰锁表改列写入堆积,误删只能从昨日冷备恢复
- 未演练的回滚 SQL 加错条件,二次损坏
- 紧急控制台手改无工单,状态不可追溯
- 大表一条 UPDATE 扫全表锁表
- 主从延迟大仍读从库做资金判断→错账
- 真要恢复时才发现权限/空间不够
G05/K05 缓存一致与热点
✓ 门禁
- 先分型再动手:穿透=空值短 TTL/布隆;击穿=互斥重建/逻辑过期;雪崩=随机 TTL/预热
- 空值必须缓存(短 TTL)或布隆过滤器
- 双写顺序契约化:写路径顺序统一约定,变更=发布走灰度
- 逻辑过期异步刷新失败须有告警与降级路径
- 一致性窗口写进契约:最大脏读窗口≤契约窗口
- 热 key 治理递进:本地缓存→副本→拆 key→改模型;多级缓存必须失效广播+对账兜底
✗ 踩坑
- 把击穿当穿透处理,雪崩时关缓存直打 DB 二次放大
- 空值未缓存,不存在 key 打爆 DB
- 双写顺序反了,长期脏读
- 逻辑过期刷新失败无告警,长期读脏数据
- 单 key 打满分片(热 key);大 value 阻塞单线程
- 本地 TTL 过长,发布后节点间读到旧价
G06/K06 调用预算与服务治理
✓ 门禁
- 超时预算可加总:各跳之和<用户超时留余量,评审现场表格加总
- 重试预算显式化:超时×重试×扇出可算;前置=幂等+jitter,禁无限重试
- 幂等键平台规范:格式/存储/过期统一,落库不只内存
- 双写用 Outbox/CDC:同事务记录意图+至少一次投递+幂等消费
- 对账任务进值班看板,超窗告警,差异修复有工具
- 熔断半开观察窗:探测流量受限+成功阈值;治理参数按发布管控
✗ 踩坑
- 重试 3 次×扇出 5=15 倍流量打穿下游
- 幂等键只存内存,重启后重复扣款
- 上游超时短于下游倒挂,重试风暴层层放大
- 先发消息再写库无补偿=经典陷阱;对账挂了无人知差异累积
- 半开流量过大刚恢复又被打穿;熔断过敏全站降级过久
- cancellation 不向下传递,上游超时下游继续烧资源
G07/K07 AI 制品与评测门禁
✓ 门禁
- 制品全版本化:Prompt/模型 ID/检索配置/工具/编排/路由;审计字段进每条回答日志
- 无黄金集不上线:固定评测集回归+版本冻结;安全用例零容忍
- Prompt 回归绑定发布:文案小改无回归按生产事故定级
- 索引变更双跑或影子对比+黄金集卡点
- 评测集防漂移防刷分:集外抽样+影子流量+线上反馈同向校验
- 工具副作用三级:只读/可重试写/不可逆写;不可逆默认关闭或人工确认;成本配额进门禁
✗ 踩坑
- 无黄金集上线,答非所问工单翻倍靠人工偶然发现
- 全量切索引召回率骤降,工单滞后才发现
- 黄金集高分但线上塌方——过拟合/刷分
- 线上热改 Prompt 无版本无法回滚
- 只读工具与下单工具同权,误触发不可逆操作
- 模型用浮动别名被供应商静默换版,输出漂移而发布记录全绿
G08/K08 安全运营与供应链
✓ 门禁
- 威胁建模先行:STRIDE 一页纸(资产/边界/缓解/残余风险),高风险未关闭不上线
- 密钥双密钥窗口:新旧并行校验→切主→吊销旧钥,禁单钥硬切
- 证书到期告警绑 Runbook+责任人,轮换流程演练跑通
- CVE 分级 SLA+自动催办+到期阻断;快车道仍需最小回归集
- 豁免必须有截止日+负责人,过期自动转阻断
- 供应链可追溯:SCA+SBOM 归档+镜像签名;生产禁 latest;临时授权自动回收
✗ 踩坑
- CVE 紧急升级跳过最小回归,启动失败
- 密钥轮换无双密钥窗口,全球鉴权失败
- 告警响了无人知如何轮换,临期才发现流程不通
- 豁免过期未收回,带病运行数月
- 共享超级账号无法追责到人
- 密钥进仓库历史即泄露,轮换也堵不住
七、垂直领域范式(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/零信任