Skip to content

高可用架构设计

双十一零点,订单量是平时的 100 倍。

你的系统稳稳地扛住了洪峰。用户下单流畅,支付秒完成,物流实时更新。

而隔壁部门的系统就没这么幸运了——数据库被打爆,支付服务宕机,用户投诉电话被打到爆。

差距在哪里?差距在于架构设计。

高可用架构不是「不宕机」,而是在故障发生时,系统还能继续提供服务。一个设计良好的高可用系统,能够在部分组件故障时自动切换、限流降级、快速恢复,让用户几乎感知不到故障的存在。

本模块从负载均衡讲起,涵盖限流熔断、降级容错、高可用架构设计,助你构建稳固可靠的系统架构。


模块速览

负载均衡

文档简介
四层与七层负载均衡L4 vs L7 的区别与选型
Nginx 负载均衡Nginx 配置与算法
Nginx 高可用方案Keepalived 双机热备
DNS 负载均衡DNS 轮询与智能解析
负载均衡算法轮询、加权、最小连接、一致性哈希
客户端负载均衡Ribbon、Spring Cloud LoadBalancer

限流与熔断

文档简介
限流算法对比计数器、滑动窗口、令牌桶、漏桶
Sentinel 限流流控规则与效果
Sentinel 熔断降级熔断策略与恢复
分布式限流方案Redis 令牌桶、滑动窗口
限流器实现限流器的工程实践

高可用架构

文档简介
服务降级方案熔断器模式原理
服务隔离策略线程池隔离、信号量隔离
健康检查机制主动探测与被动上报
限流与熔断对比两者区别与组合使用

高可用的核心指标

可用性计算

可用性年故障时长适用场景
99%3.65 天普通系统
99.9%8.76 小时企业级系统
99.99%52.6 分钟金融系统
99.999%5.26 分钟电信级系统

每提高一个 9,难度呈指数级增长。

故障处理的黄金时间

时间目标
1 分钟内发现故障
5 分钟内定位根因
10 分钟内止血恢复
24 小时内问题根治

高可用的三大护法

护法一:限流

限流是系统的第一道防线。

当流量超过系统处理能力时,通过限流丢弃部分请求,保证整体可用。

限流算法对比:

算法优点缺点适用场景
计数器简单不平滑简单限流
滑动窗口平滑实现复杂API 限流
令牌桶支持突发实现复杂流量整形
漏桶恒定速率不能突发流量整形

护法二:熔断

熔断是系统的第二道防线。

当下游服务持续故障时,通过熔断快速失败,避免雪崩效应。

熔断器三状态:

Closed(关闭)——> Open(打开)——> Half-Open(半开)
   |                |                |
   | 失败率超阈值    | 超时后尝试     | 成功则关闭
   v                v                v

护法三:降级

降级是系统的最后一道防线。

当系统压力过大时,通过关闭非核心功能,保证核心功能可用。

降级策略:

策略说明
页面降级展示静态页面或缓存数据
功能降级关闭非核心功能
读降级读缓存而非数据库
写降级异步写入而非同步

高可用架构设计原则

原则一:消除单点

每个关键组件都必须有备份:

  • 负载均衡器:双机热备
  • 应用服务器:集群部署
  • 数据库:主从复制
  • 缓存:Redis Cluster
  • 消息队列:集群模式

原则二:故障隔离

通过舱壁模式,防止故障蔓延:

  • 线程池隔离:不同业务用不同线程池
  • 进程隔离:核心和非核心进程分离
  • 机房隔离:多机房部署

原则三:快速恢复

故障不可避免,关键是快速恢复:

  • 自动故障转移
  • 灰度发布与回滚
  • 定期演练与预案

学习路径建议

入门:理解负载均衡

建议从负载均衡基础开始,理解四层和七层负载均衡的区别。

然后学习Nginx 负载均衡配置,这是最常见的负载均衡实践。

进阶:掌握限流熔断

深入学习限流算法Sentinel

限流和熔断是高可用架构的核心组件。理解各种算法的优缺点,能够根据场景选择合适的方案。

高级:高可用架构实践

学习服务隔离健康检查故障转移等高级主题。

这是架构师必备的技能。能够设计出一套完整的高可用方案,是高级工程师和架构师的分水岭。


延伸思考

高可用架构有个「不可能三角」:

一致性、可用性、分区容错性——三者不可兼得。

在分布式系统中,我们必须在这三者之间做出权衡。大多数互联网系统,选择的是可用性和分区容错性,接受最终一致性

所以,设计高可用系统时,要问自己三个问题:

  1. 哪些是核心功能,哪些可以降级?
  2. 故障时,用户能接受什么样的体验?
  3. 我们的 SLA 承诺是什么?

想清楚这三个问题,你的高可用架构设计就有了方向。

好的高可用架构,不是防止所有故障,而是让故障发生时,用户无感知。

愿你在架构设计的道路上,构建出稳如磐石的系统。

基于 VitePress 构建