1. 概述
- 容错设计又叫弹力设计,分布式系统的各种容忍能力。
- 容错能力(服务隔离,异步调用,请求幂等性)
- 可伸缩性(有/无状态的服务)
- 一致性(补偿事务,重试)
- 应对大流量的能力(熔断,降级)
2. 常见设计
- 隔离设计
- 异步通讯设计
- 幂等性设计
- 服务的状态
- 补偿事务
- 重试设计
- 熔断设计
- 限流设计
- 降级设计
3. 系统可用性测量
-
对于分布式系统的容错设计,也叫弹力设计
- 意思是,系统在不健康,不顺,甚至出错的情况下有能力hold住,能在这种逆境下力挽狂澜的能力。
-
要做好一个设计,我们需要设计目标,通过这个目标来指导我们的设计,否则在没有明确目标的指导下,设计会变得非常不明确,并且不可预测,不可测量。
- 可测试,可测量是软件设计中非常重要的事情。
3.1 计算系统可用性
- 一个工业界 使用的公式
可用性 = MTTF/(MTTF+MTTR)
- MTTF(Mean Time to Failure) 平均故障前的时间。
- 系统能够正常运行多长时间才发生一次故障。
- 系统的可靠性越高,MTTF 越长。
- MTTR(Mean Time to Recovery) 平均修复时间
- 即从故障出现到故障修复的这段时间。
- 这段时间越短越好。
- 常说多少个9
系统可用性% | 宕机时间/年 | 宕机时间/月 | 宕机时间/周 | 宕机时间/天 |
---|---|---|---|---|
90%(1个9) | 36.5天 | 72小时 | 16.8小时 | 2.4小时 |
99%(2个9) | 3.65天 | 7.20小时 | 1.68小时 | 14.4分 |
999%(3个9) | 8.76小时 | 43.8分 | 10.1分 | 1.44分 |
9999%(4个9) | 52.56分 | 4.38分 | 1.01分 | 8.66秒 |
99999%(5个9) | 5.256分 | 25.9秒 | 6.05秒 | 0.87秒 |
网友评论