超时和重试机制详解:超时设置、指数退避、随机抖动、重试风暴与幂等
围绕“超时和重试机制详解:超时设置、指数退避、随机抖动、重试风暴与幂等”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“超时机制、什么是超时机制、为什么需要超时机制、超时时间应该如何设置”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 超时为资源占用设上界;重试只适合瞬时、可识别且幂等的失败。指数退避、随机抖动、次数上限和重试预算可避免故障期流量被成倍放大。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡...
冗余设计详解:RTO/RPO、高可用集群、同城灾备与异地多活
围绕“冗余设计详解:RTO/RPO、高可用集群、同城灾备与异地多活”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“什么是冗余、容灾核心指标:RTO 和 RPO、冗余架构方案对比、高可用集群”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 冗余覆盖实例、数据、机房和访问路径;冷备、热备、同城双活与异地多活对应不同 RTO、RPO 和成本。切换、回切及恢复校验必须一并演练。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤...
性能测试和压力测试入门:RPS、QPS、TPS、P99 与压测工具
围绕“性能测试和压力测试入门:RPS、QPS、TPS、P99 与压测工具”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“不同角色看网站性能、用户、开发人员、测试人员”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 压测模型应接近真实读写比例、数据分布与缓存命中,并提前设置隔离和停止条件。平均值会掩盖长尾,应关联 P95、P99、错误率和各层资源指标。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡与边界...
服务限流详解:固定窗口、滑动窗口、令牌桶、漏桶与分布式限流
围绕“服务限流详解:固定窗口、滑动窗口、令牌桶、漏桶与分布式限流”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“常见限流算法有哪些、固定窗口计数器算法、滑动窗口计数器算法、漏桶算法”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 固定窗口简单但有边界突刺,滑动窗口更平滑,漏桶稳定输出,令牌桶允许突发。限流要选用户、租户或接口维度,并为被拒请求提供明确结果。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡...
接口幂等性设计详解:幂等键、Token、唯一索引、去重表与支付回调
围绕“接口幂等性设计详解:幂等键、Token、唯一索引、去重表与支付回调”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“什么是幂等(idempotency)、如何保证接口幂等性、悲观锁、乐观锁”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 幂等的关键是为业务动作建立稳定身份,并用唯一约束、状态机或去重记录保证重复执行得到同一结果。分布式锁和 Token 只是手段,还要覆盖并发、超时重放与消息重复。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异...
高可用系统设计详解:SLA、限流熔断、降级容灾、缓存与灰度发布
围绕“高可用系统设计详解:SLA、限流熔断、降级容灾、缓存与灰度发布”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“什么是高可用?可用性的判断标准是啥、哪些情况会导致系统不可用、有哪些提高系统可用性的方法、注重代码质量,测试严格把关”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 理解该主题应从问题背景、核心机制、典型失效和验证方法四层推进。先用最小模型解释原理,再把假设放入真实流量、数据与团队约束中检验。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察...
服务降级与熔断详解:Fallback、熔断器状态机与 Sentinel / Hystrix / Resilience4j 选型
围绕“服务降级与熔断详解:Fallback、熔断器状态机与 Sentinel / Hystrix / Resilience4j 选型”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“什么是降级、降级一般在什么情况下触发、降级可以降到什么粒度、降级方式有哪些”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 降级主动缩减非核心能力,熔断则依据失败率或慢调用切断下游。关闭、打开、半开状态负责恢复探测,兜底结果必须可识别,不能把异常伪装成成功。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变...
高可用系统知识体系:SLA、限流、熔断、降级、重试、幂等、冗余与压测
围绕“高可用系统知识体系:SLA、限流、熔断、降级、重试、幂等、冗余与压测”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“适合谁看、学习重点、建议阅读顺序、核心文章”几个切面建立自己的判断框架。 核心认识高可用关注的不是消灭故障,而是限制故障影响并在承诺时间内恢复。分析时先定义成功率、延迟、RTO、RPO 等指标,再识别单点、资源上限和依赖传播路径。 总览的作用是建立知识地图和阅读顺序。先掌握核心问题与术语之间的关系,再按项目瓶颈深入专题;只记目录而缺少实验和复盘,无法形成工程能力。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践落地时应为关键链路配置容量、超时、隔离和兜底,配合分层监控、小流量发布与可回滚变更。预案必须经过压测或故障演练,备份也只有恢复成功后才可信。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡与边界副本...
常见SQL优化手段总结
围绕“常见SQL优化手段总结”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“避免使用 SELECT \、深度分页优化、建议不要使用外键与级联、选择合适的字段类型”几个切面建立自己的判断框架。 核心认识性能问题要同时观察吞吐、长尾延迟、错误率与资源饱和度。真正瓶颈可能位于入口分发、应用锁竞争、数据库访问、网络或异步消费,不能仅凭平均响应时间判断。 SQL 优化从执行计划和真实数据分布出发,目标是减少扫描、回表、排序与锁等待。索引提升读取也会增加写放大,每次调整都要复测并检查最终制品。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践工程上先建立生产相近的负载与数据基线,再用执行计划、剖析和链路指标定位热点。每次只验证少量变量,复测收益并持续观察异常路径。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡与边界缓存、分片和消息队列常...
深度分页介绍及优化建议
围绕“深度分页介绍及优化建议”,本文不按原目录复述,而是把内容整理为问题、机制、实践和取舍四层。阅读时可从“什么是深度分页?怎么导致的、深度分页优化建议、范围查询(游标分页)、子查询”几个切面建立自己的判断框架。 核心认识性能问题要同时观察吞吐、长尾延迟、错误率与资源饱和度。真正瓶颈可能位于入口分发、应用锁竞争、数据库访问、网络或异步消费,不能仅凭平均响应时间判断。 深分页需要扫描或跳过大量记录。连续翻页优先用稳定且唯一排序键做游标;必须随机跳页时,可先用覆盖索引取主键再回表,并限制最大页深。 学习这类主题时,应先写清对象、边界和衡量指标,再讨论具体组件或技巧。同一方案放在不同流量、数据规模与团队能力下,结论可能相反;设计说明必须保留前提。 工程实践工程上先建立生产相近的负载与数据基线,再用执行计划、剖析和链路指标定位热点。每次只验证少量变量,复测收益并持续观察异常路径。 实施建议采用小步验证:记录变更前基线,一次只调整少量关键变量,通过日志、指标和测试判断收益。上线后继续观察长尾与异常路径,并把操作步骤沉淀成可执行预案。 权衡与边界缓存、分片和消息队列常以一致性、实时性和复...