简述软件不可用性及解决办法
引起一个软件系统不可用的原因有很多,归纳起来主要是以下这几种情况:
硬件故障。
软件存在 bug.
系统发布。
高并发场景引起系统崩溃。
网格攻击/故障。
外部灾害。
针对上述情况,可以通过分布式扩展、隔离、解耦、限流、降级、熔断、自动化测试、自动化运维、灰度发布进行解决。
扩展技术主要是解决通过冗余部署,避免单点故障。
隔离技术解决避免业务之间的相互影响,机房隔离避免单点故障。
解耦解决减少依赖、减少相互之间的影响。
限流解决遇到突发流量时,保证系统稳定。
降级解决在资源有限的前提下牺牲非核心业务,保证核心业务的高可用。
熔断解决减少不稳定的外部依赖对核心服务的影响。
自动化测试解决通过完善的测试,减少发布引起的故障。
灰度发布是速度与安全性作为妥协,能够有效减少发布故障。
自动化运维解决出现故障时,通过自动化运维来进行解决,减少有效减少故障时间。
事件系统快速定位故障原因。
评论