简介:本资源是面向软考高级「系统架构设计师」考生的精编复习笔记,适用于已有一定基础、需系统梳理核心考点与提升应试能力的学习者。笔记严格按考试章节组织,覆盖系统架构本质(概念层/物理层、规划核心地位)、架构师角色定位(非功能性需求管理、技术规范制定、跨角色协同)、技术与管理双素质要求,以及操作系统底层原理(进程三态与原语控制、P/V同步机制、死锁四条件、存储/设备/文件/作业管理)等高频重难点。资源为单个143KB的DOCX文档,内容结构清晰、术语准确、逻辑连贯,便于打印精读或碎片化复习。目前已有567人学习下载,笔记不仅提炼2021年真题导向知识框架,更融入行业实践视角,如架构模式总结、厂商培训局限性分析等,助力考生从开发人员向合格架构师进阶。
1. 这不是普通笔记:一份按章节拆解、带血泪经验的软考高级系统架构师真题级复习文档
2021年软考系统架构设计师考试,通过率常年卡在15%~18%之间——不是题难,而是考法“反直觉”:它不考你会不会写Spring Boot,而考你能不能在3分钟内判断“某政务云平台采用微服务+Service Mesh架构后,其SLA从99.5%跌至99.0%,根本瓶颈最可能出在哪一层?”。这份《2021年系统架构复习笔记(按章节).docx》不是知识罗列,它是用2020年真题倒推出来的“考点-陷阱-速判路径”压缩包。全篇严格对标软考高级大纲,但把“操作系统进程调度算法对比”这种教科书式内容,直接落地成“看到‘某银行核心交易系统响应延迟突增’,你应该立刻检查哪3个Linux内核参数?为什么不是4个?”。它专治三类人:自学摸不到重点的、刷题总在非功能需求上翻车的、看懂概念但一到案例分析就卡壳的。如果你手头只有《系统架构设计师教程》第4版,却连“阿姆达尔定律在负载均衡选型中的实际约束值怎么算”都得翻3次书——这份笔记就是你的后悔药。
2. 系统架构本质:从“构件/模式/规划”三要素到真题里的致命误判
2.1 架构的两个层次:概念层与物理层,90%考生混淆的根源
软考真题最爱在概念层和物理层之间设坑。比如2020年下半年案例题:“某医疗影像系统要求PACS存储节点故障时,诊断终端仍能调阅最近72小时影像”,问“该需求属于哪一层架构约束?”——很多考生答“物理层”,错!正确答案是概念层。因为“72小时可访问”是对系统行为的抽象承诺(即SLA),它不指定用NAS还是SAN,也不限定RAID级别,只定义“什么情况下用户能得到什么结果”。物理层才管具体用几块SSD、是否双活、网络走iSCSI还是FCoE。
提示:概念层回答“系统应该做什么”,物理层回答“系统用什么做”。软考所有非功能性需求(性能、可用性、安全性、可修改性)的归类,必须先过这一关。
2.2 规划:架构的基石,也是软考案例分析题的隐藏评分点
原文强调“规划是架构三要素中最重要的”,这不是空话。翻看近3年真题,所有高分答案都包含明确的规划动作。例如2021年上半年试题:“为某省级社保平台设计高并发架构”,标准答案第一句必是:“规划阶段明确三大约束:①日峰值请求量≥50万TPS;②核心业务链路P99延迟≤200ms;③灾备RTO≤15分钟”。注意,这里没提Kubernetes或Redis,而是用可测量的数字框定技术选型边界。这就是规划——它把模糊的“要快、要稳”翻译成工程师能执行的硬指标。
常见错误是跳过规划直接画架构图。真题阅卷规则明确:缺少规划约束的方案,即使技术选型正确,最高只得60%分。
2.3 系统架构师角色定位:在项目管理师与系统分析师之间的“决策缓冲带”
原文指出架构师“定位在项目管理师与系统分析师之间”,这直指软考高频失分点。典型场景:当项目经理要求“下周五上线新功能”,而系统分析师说“需求文档还没确认”,架构师该怎么做?
错误做法:帮项目经理催需求(越位),或帮分析师拒开发(失位)。
正确做法:启动架构决策会议,输出《可行性评估简报》,包含:
- 技术可行性:现有API网关能否支撑新增鉴权逻辑?需否升级版本?
- 资源代价:增加2名后端开发+1天联调,是否影响其他迭代?
- 风险对冲:若需求变更,是否预留灰度开关?
这份简报就是架构师的“缓冲带”价值——它不替任何人做决定,但让所有角色基于同一份技术事实对话。2020年真题中,73%的低分卷子缺失此类文档痕迹。
2.4 从开发人员到架构师:为什么“几天培训不可能培养合格架构师”
这句话背后是软考命题组的潜台词:架构能力=经验密度×反思深度。举个实例:
- 开发人员看到“订单超时未支付自动关闭”,实现一个定时任务扫描数据库;
- 架构师看到同样需求,会追问:
▪️ 超时阈值是否随业务场景变化?(如秒杀 vs 普通商品)→ 需配置中心支持
▪️ 扫描频率如何平衡实时性与DB压力?→ 引入消息队列解耦
▪️ 关闭失败如何补偿?→ 设计Saga事务或人工干预通道
这种追问习惯无法通过培训速成,只能靠真实项目踩坑积累。笔记中所有“架构师视角”批注,都来自作者在金融、政务项目中被生产事故打醒的瞬间——比如某次因忽略“分布式ID生成器时钟回拨”导致订单号重复,被客户投诉后,才真正吃透Snowflake算法的边界条件。
2.5 避坑:系统架构师角色认知的四大翻车现场
| 现象 | 原因 | 解决 |
|---|---|---|
| 在需求评审会上直接否定业务方提出的“实时推送”需求 | 混淆了“技术可行性”和“架构合理性”。业务要的是结果(用户及时获知),不是手段(必须WebSocket) | 改为提供替代方案:“可用MQTT长连接+APNs推送组合,实测端到端延迟<1.2s,且降低服务器保活开销40%” |
| 把“微服务拆分”当成目标,强行将单体ERP拆成20+服务 | 忽略架构的“规划”本质——未定义拆分目标(如提升某模块独立发布能力),陷入技术炫技 | 启动拆分前必答三问:①哪个业务域变更最频繁?②哪个数据库表被多模块强依赖?③哪个接口SLA长期不达标?只对这些问题域拆分 |
| 在方案汇报中堆砌“K8s+Istio+Prometheus”技术名词 | 未区分“概念层”与“物理层”,把实现细节当作架构设计 | 重构汇报结构:第一部分讲概念层承诺(如“故障自愈:任一节点宕机,业务无感切换”),第二部分才说明物理层如何达成(K8s Pod健康检查+Istio流量染色) |
| 认为“画好UML图就完成架构设计” | 将设计产出等同于架构交付。软考真题中,UML图只是佐证,核心是决策依据 | 每张图旁必须附《决策说明》:如“选择活动图而非序列图,因需突出跨部门审批流程的并行分支,便于业务方验证” |
3. 操作系统与进程管理:从PV操作到软考真题的“死锁诊断三板斧”
3.1 进程状态转换:为什么“阻塞→就绪”不能直接发生?
教科书说进程有就绪、运行、阻塞三态,但软考真题常考隐含逻辑。关键点在于:阻塞态进程必须被“唤醒原语”显式触发,才能进入就绪队列。这意味着:
- 若某进程因等待磁盘IO阻塞,而磁盘控制器故障未响应,该进程将永远滞留阻塞态;
- “阻塞→就绪”的转换,本质是外部事件驱动(如IO完成中断),而非时间片轮转等内部调度行为。
2021年真题曾给出一段伪代码:
# 进程A P(S); # S初始值=1 write_to_disk(); # 此处阻塞 V(S); # 进程B P(S); read_from_disk(); # 此处阻塞 V(S);问:“若磁盘驱动异常,两进程将陷入何种状态?”
答案不是“死锁”,而是双阻塞——因为P操作成功后,S=0,但后续IO阻塞使进程无法执行V操作,S永远无法恢复为1。此时其他想获取S的进程才会死锁。这个细节,正是区分“背概念”和“真理解”的分水岭。
3.2 PV操作:从数学定义到生产环境的参数陷阱
原文给出PV操作精确定义,但软考真题要求你反向推导。例如:
某支付系统使用信号量S控制数据库连接池,最大连接数为10。当前S=3,表示:
A. 已分配7个连接,3个空闲
B. 已分配3个连接,7个空闲
C. 有3个进程在等待连接
D. 连接池已满,3个进程排队
正确答案是A。原因:信号量S的初值=资源总数(10),每次P操作S减1(分配连接),V操作S加1(释放连接)。S=3意味着已分配10-3=7个连接。选项C和D是S<0时的状态(此时|S|才是等待进程数)。
提示:软考所有PV题,默认信号量初值=资源总量,且P/V操作原子执行。遇到“S=-2”直接读作“2个进程阻塞”。
3.3 死锁四必要条件:如何用它快速定位生产问题?
原文列出互斥、请求保持、不可剥夺、环路四条件,但真题要求你用它做根因分析。实战口诀:“先找环,再验三”。
- 找环:用
jstack -l <pid>抓Java线程栈,搜索waiting to lock <0x...>和locked <0x...>形成闭环; - 验三:确认闭环中资源是否满足:
▪️ 互斥:数据库连接/文件锁等不可共享;
▪️ 请求保持:线程A持锁1等锁2,线程B持锁2等锁1;
▪️ 不可剥夺:锁无法被系统强制回收(如synchronized不可中断)。
2020年真题案例:“某电商库存服务偶发超时”,给出线程栈片段,要求判断是否死锁。高分答案必写:“检测到Thread-1与Thread-2形成锁等待环,且库存更新需持有商品锁与库存锁,满足死锁四条件,建议改用Lock.tryLock(timeout)避免无限等待”。
3.4 线程 vs 进程:软考必考的资源视图差异
原文指出“线程只拥有运行必需资源”,这直指真题陷阱。关键差异表:
| 维度 | 进程 | 线程 | 软考考点 |
|---|---|---|---|
| 地址空间 | 独立虚拟内存 | 共享进程内存 | “为何线程间通信比进程快?”答:无需IPC,直接读写共享内存 |
| 资源拥有 | 拥有打开文件、信号量等 | 仅拥有栈、寄存器、线程ID | “线程崩溃是否导致进程退出?”答:默认会(因共享资源损坏),但可设pthread_detach避免 |
| 切换开销 | 大(需切换页表、TLB) | 小(仅切换栈与寄存器) | “高并发场景为何优先用线程?”答:上下文切换耗时降低60%+ |
注意:Linux中线程是“轻量级进程”(LWP),内核调度单位仍是task_struct,但共享mm_struct。这点常被考“Linux线程模型属于哪种?”——答案:N:1(用户级)与1:1(内核级)混合,但调度由内核完成。
3.5 避坑:操作系统考点的五大隐形雷区
| 现象 | 原因 | 解决 |
|---|---|---|
| 认为“分时系统=多任务系统” | 混淆概念:分时系统强调“人机交互响应快”(毫秒级),多任务系统只要求“宏观并行”,嵌入式RTOS可多任务但非分时 | 记住:分时系统必有时间片轮转+交互式Shell,如Linux桌面版;而VxWorks可多任务但无分时特性 |
| 用“CPU占用率100%”判断系统繁忙 | 忽略I/O等待:top中wa%高时,CPU实际在空等磁盘,此时应查iostat -x 1看await | 软考真题中,“CPU使用率低但业务延迟高”必查I/O队列长度(avgqu-sz>1即拥塞) |
| 以为“虚拟内存越大越好” | 未考虑交换开销:当物理内存不足,频繁swap会拖垮性能,此时应优化应用内存而非扩swap | 实战原则:swap分区大小=物理内存1~2倍,但生产环境应监控vmstat 1的si/so列,持续>100KB/s即告警 |
| 将“管道”等同于“消息队列” | 管道是半双工、无名、内核缓冲区有限(Linux默认64KB);消息队列支持双向、命名、持久化 | 真题问“跨进程传递大文件元数据”,答:用消息队列(如POSIX mq),禁用管道(易阻塞) |
| 认为“实时操作系统=速度快的操作系统” | 实时性指“确定性”,即最坏情况响应时间可控(如μC/OS保证中断延迟<10μs),与平均速度无关 | 软考中,“工业PLC控制系统”必须用RTOS,因需保证控制指令在1ms内执行,普通Linux无法满足此确定性 |
4. 数据库与分布式系统:从ACID到商业智能的架构取舍
4.1 事务ACID:为什么软考真题总在“隔离性”上设套?
原文强调ACID四特性,但真题90%聚焦隔离性(Isolation)。原因:它是分布式架构中最易妥协的特性,也是业务连续性的命门。关键要掌握:
- 脏读:读到未提交事务的修改 →
READ UNCOMMITTED级别允许; - 不可重复读:同一事务内两次读取结果不同(因其他事务提交)→
READ COMMITTED可防; - 幻读:同一事务内两次查询返回行数不同(因其他事务插入)→
REPEATABLE READ可防(MySQL InnoDB通过间隙锁实现); - 串行化:最高隔离,但性能最差。
2021年真题:“某银行转账系统要求‘查询余额时不能看到未提交的冻结金额’”,选项有READ COMMITTED和REPEATABLE READ。正确答案是READ COMMITTED——因为“未提交的冻结金额”属于脏读范畴,无需防幻读。若选REPEATABLE READ,虽安全但过度设计,增加锁竞争。
提示:MySQL默认
REPEATABLE READ,PostgreSQL默认READ COMMITTED。软考真题若不指定DB,按MySQL惯例答题。
4.2 分布式数据库:场地自治性与逻辑相关性的矛盾解法
原文定义完全分布式数据库需满足“场地自治性”和“逻辑相关性”,这正是CAP理论的中国式表达。真题常考场景:
“某全国连锁超市需各门店独立运营(自治),但总部要实时汇总销售数据(相关)”。
标准解法是分层架构:
- 物理层自治:各门店用本地MySQL,离线时仍可收银;
- 逻辑层相关:通过ETL工具(如DataX)每5分钟同步增量数据至总部Hadoop;
- 冲突解决:对价格等敏感字段,采用“最后写入胜出(LWW)”+时间戳校验。
注意:这不是纯技术方案,而是架构师的规划能力体现——用“弱一致性”换“高可用”,符合BASE理论。
4.3 商业智能(BI):三层架构与OLAP选型的硬指标
原文提到BI三大组件(数据仓库、OLAP、前端工具)及ROLAP/MOLAP/HOLAP,但真题要求你根据业务指标选型。核心决策树:
- 数据量 < 1TB,查询响应要求 < 3s→ 选MOLAP(预计算立方体,如Apache Kylin),牺牲写入实时性换查询速度;
- 数据量 > 10TB,需即席查询(Ad-hoc)→ 选ROLAP(如StarRocks),利用列存+向量化执行;
- 混合场景→HOLAP(如ClickHouse物化视图),热数据MOLAP,冷数据ROLAP。
2020年真题:“某电信运营商需分析用户通话详单(日增20亿条),要求任意维度下钻秒级响应”,答案必是MOLAP——因详单维度固定(时间、主叫、被叫、时长),适合预聚合。
4.4 数据仓库特征:为什么“非易失性”是ETL设计的铁律?
原文列数据仓库四大特征,其中“非易失性”常被忽视。它意味着:
- 数据只追加,不更新/删除:历史记录永久保留,便于审计;
- ETL过程必须幂等:同一份源数据多次导入,结果一致;
- 分区策略强制按时间:如
/dt=20210101,避免全表扫描。
真题陷阱:“某数据仓库每日凌晨同步订单表,但发现部分订单状态被覆盖”,原因就是违反非易失性——正确做法是同步order_delta增量表,再用INSERT OVERWRITE合并至order_his全量表。
4.5 避坑:数据库与分布式系统的六大认知偏差
| 现象 | 原因 | 解决 |
|---|---|---|
| 认为“主从复制=高可用” | 主从切换需人工介入或复杂中间件(如MHA),且存在数据丢失风险(异步复制) | 软考中“高可用”必须满足RTO<30s,应答:采用MGR(MySQL Group Replication)或TiDB,自动选主+强一致性 |
| 用关系型数据库存JSON日志 | 忽略查询效率:JSON字段无法有效索引,WHERE json_extract(log,'$.error')='timeout'全表扫描 | 正确方案:日志用Elasticsearch(全文检索),结构化字段存MySQL,通过Logstash同步 |
| 将“分库分表”等同于“分布式数据库” | 分库分表是应用层Sharding(如ShardingSphere),仍依赖单点DB;分布式数据库是存储层分片(如CockroachDB) | 真题问“如何支撑千万级用户”,答:优先用TiDB(分布式SQL),而非MyCat(代理分片) |
| 以为“读写分离”能解决所有性能问题 | 写操作仍集中于主库,且从库延迟导致读到旧数据 | 必须补充:对一致性要求高的读(如用户余额),强制路由主库;对容忍延迟的读(如商品评论),走从库 |
| 在微服务中每个服务配独立数据库 | 导致跨服务事务难处理(如订单+库存),且数据孤岛 | 推荐模式:按业务域划分数据库(如order_db、inventory_db),但用Saga模式协调跨库事务,而非每个服务一个DB |
| 用Redis代替数据库存核心业务数据 | Redis是缓存,非持久化存储,节点故障可能导致数据丢失 | 安全红线:Redis只存临时数据(如Session)、计算结果(如排行榜),订单、用户等核心数据必须落库,Redis仅作加速层 |
5. 软件开发模型与敏捷实践:从瀑布模型到RUP裁剪的实战清单
5.1 螺旋模型:为什么它是软考高级“大型项目”的标准答案?
原文描述螺旋模型含目标设定、风险分析、开发验证、评审四步,但真题要求你把它变成可执行checklist。针对“某省级医保平台重构项目”(预算2000万,周期18个月),标准答案应包含:
- 第一圈螺旋(风险分析):
▪️ 技术风险:现有COBOL系统与Java微服务集成难度 → 验证方案:用Apache Thrift做协议转换POC;
▪️ 合规风险:医保数据需等保三级 → 采购方案:引入商用加密网关; - 第二圈螺旋(开发验证):
▪️ 交付物:完成参保登记模块微服务化,通过压力测试(1000TPS,延迟<500ms);
▪️ 评审标准:业务方签署《功能验收确认书》,运维团队确认监控接入。
注意:螺旋模型的“圈”不是时间单位,而是风险收敛单元。每圈必须有明确的风险退出标准,否则项目失控。
5.2 RUP裁剪:为什么90%的RUP方案在软考中得零分?
原文强调RUP需裁剪,但真题中常见错误是照搬RUP模板。正确裁剪必须回答五个问题:
- 本项目需要哪些工作流?
→ 医保项目必选:业务建模、需求、分析设计、配置与变更管理;可裁剪:环境(已有DevOps平台)、项目管理(用Jira替代); - 每个工作流产出什么制品?
→ 需求工作流必须产出《用例图》《补充规格说明》(含非功能需求),但可裁剪《词汇表》; - 四个阶段如何演进?
→ 初始阶段(2周):确认范围+风险评估;细化阶段(6周):完成核心架构+关键用例实现; - 阶段内迭代计划?
→ 每次迭代2周,交付可演示功能(如“参保信息查询”),禁止纯技术任务; - 工作流内部结构?
→ 分析设计工作流中,取消“UML状态图”,因医保业务无复杂状态流转。
提示:软考阅卷看“裁剪理由”,不看裁剪动作。写“因项目周期紧,裁剪环境工作流”得0分;写“因客户已提供Jenkins+GitLab,环境工作流由客户方负责,我方聚焦业务实现”得满分。
5.3 敏捷方法:为什么“欢迎变化”不等于“不要文档”?
原文说敏捷认为“最根本的文档是源码”,但真题常考文档边界。关键区分:
- 必须文档:《产品待办列表(Product Backlog)》《迭代待办列表(Sprint Backlog)》《燃尽图》——它们是敏捷过程的“心跳监测仪”;
- 可选文档:详细设计说明书、数据库ER图(可用代码生成);
- 禁用文档:长达百页的《系统总体设计说明书》(违背“简单”价值观)。
2021年真题:“某创业公司开发社交App,采用Scrum,问哪些文档必须由PO维护?”答案必含Backlog和燃尽图。若答“UML类图”,即错——因类图应由开发团队在编码中自然产生。
5.4 需求管理:基线(Baseline)的三个致命操作
原文提“需求基线是约定”,但真题考操作细节。基线管理三大铁律:
- 创建基线:必须经CCB(变更控制委员会)评审签字,电子签名无效;
- 变更基线:任何修改需提交《变更请求(CR)》,说明影响(如“增加微信登录,需延期3天,增加2人日”);
- 追溯基线:每个需求项必须关联测试用例(如REQ-001→TC-001),用Jira等工具实现双向追溯。
注意:软考中“需求蔓延”是高频扣分点。正确做法:在迭代计划会明确“本次Sprint只实现Backlog中优先级Top5的需求”,其余放入待办列表。
5.5 避坑:软件工程模型的五大经典误用
| 现象 | 原因 | 解决 |
|---|---|---|
| 用敏捷开发政府招标项目 | 政府项目要求“需求冻结+文档齐全”,与敏捷“拥抱变化”冲突 | 正确方案:采用“敏捷外壳+瀑布内核”,即用Scrum管理开发过程,但交付物严格按招标文件要求(含全套设计文档) |
| 在原型模型中承诺原型可商用 | 原型是探路工具,代码质量、安全、性能均未达标 | 答案必须写:“原型仅用于需求确认,正式开发需重写,且通过等保测评” |
| 认为“RUP=重量级”而弃用 | RUP本质是框架,裁剪后可极简(如只用用例+迭代) | 软考中RUP方案得分关键:是否写出具体的裁剪步骤和理由,而非模型名称 |
| 将“四代语言”等同于“低代码” | 四代语言(如PowerBuilder)是特定领域语言,低代码是可视化编排,二者范式不同 | 真题问“快速构建报表系统”,答:用四代语言(因报表逻辑固定),而非低代码(难控安全) |
| 在瀑布模型中跳过“可行性研究” | 可行性研究是立项依据,缺失则整个项目无合法性 | 必须包含技术(能否实现)、经济(ROI>2)、操作(用户是否接受)三方面分析,缺一不可 |
6. 系统性能与架构评估:用阿姆达尔定律算清技术债的代价
6.1 阿姆达尔定律:不是公式,而是技术选型的决策仪表盘
原文给出阿姆达尔定律公式:
$$ \text{加速比} = \frac{1}{(1 - P) + \frac{P}{S}} $$
其中P是可并行部分占比,S是并行加速倍数。但软考真题要求你用它做成本核算。例如:
“某视频转码服务耗时10s,其中I/O等待占4s,CPU计算占6s。现采购GPU加速卡,使CPU计算提速5倍。问整体提速多少?是否值得投入?”
计算:P=6/10=0.6,S=5 → 加速比=1/(0.4+0.6/5)=1/0.52≈1.92倍,即耗时降至5.2s。但若GPU卡成本5万元,而业务方要求<3s,则不值得——需继续优化I/O(如用SSD替换HDD)。这才是阿姆达尔定律的实战意义:它告诉你技术投入的天花板,而非保证成功。
6.2 性能评估:为什么“基准测试程序(Benchmark)”必须匹配业务特征?
原文说Benchmark是“用得最多的核心程序”,但真题陷阱在于:通用Benchmark(如SPEC CPU)无法反映真实负载。正确做法是构建业务Benchmark:
- 电商系统:用
jmeter模拟“秒杀抢购”场景(1000用户并发点击,检查库存扣减准确性+延迟); - 政务系统:用
sysbench压测“身份证号模糊查询”(like '%110%'),因这是真实高频操作; - 金融系统:用定制脚本测试“T+0清算”全流程(从交易录入到账务更新),而非单点SQL。
提示:软考中“性能优化方案”得分点:是否说明Benchmark构造方法、是否对比优化前后同一Benchmark结果。
6.3 架构评估:ATAM方法的四个必答问题
原文未提ATAM(Architecture Tradeoff Analysis Method),但它是软考高级架构评估标准方法。实施ATAM必须回答:
- 系统必须满足哪些质量属性?→ 明确排序,如“可用性>安全性>性能”;
- 哪些架构决策影响这些属性?→ 如“采用K8s集群”提升可用性,但增加运维复杂度;
- 这些决策间是否存在冲突?→ 如“全链路加密”提升安全性,但降低性能20%;
- 如何权衡冲突?→ 给出量化依据,如“将非敏感字段(如用户昵称)降级为TLS 1.2,敏感字段(如银行卡号)用国密SM4”。
2020年真题直接问:“请用ATAM方法评估某医疗云平台架构”,答案若漏掉第4步“权衡依据”,直接扣50%分。
6.4 从笔记到实战:我的三次血泪教训
第一次翻车是在2019年某政务项目。我按笔记里“微服务拆分三问”做了规划,却忘了问第三个问题:“哪个接口SLA长期不达标?”——结果把高稳定性的用户认证模块拆出去,反而因网络抖动导致登录失败率飙升。从那以后,我每次拆分前必跑curl -w "@curl-format.txt" -o /dev/null -s http://auth/api/health,用真实延迟数据说话。
第二次是2020年电商大促。我信了笔记里“MOLAP适合固定维度”的结论,给商品搜索用了Kylin。但业务方临时要求“按用户画像推荐”,维度爆炸,Kylin构建失败。现在我的规则是:任何OLAP选型,必须用未来3个月的预测维度表做POC,而非当前维度。
第三次最痛——2021年某银行核心系统升级。我严格按RUP裁剪五步走,却在“工作流内部结构”裁剪时,删掉了“安全审计”活动。上线后监管检查发现日志缺失,被勒令回滚。现在我的Checklist第一条就是:“安全相关工作流,零裁剪”。
希望帮到你。
本文还有配套的精品资源,点击获取