- 对等节点的故障迁移,nginx和服务治理框架都支持一个节点失败后,访问另一个节点;
- 非对等节点的故障转移,通过心跳检测并实施主备切换,比如redis的哨兵模式或者集群模式,MySQL的主从切换等;
- 接口层面的超时设置、重试策略、幂等设计;
- 降级处理,保证核心服务,牺牲非核心服务,必要时进行熔断;或者核心链路故障时,有备选链路;
- 限流处理,对超过系统处理能力的请求直接拒绝,或者返回错误码;
- MQ场景的消息可靠性保证,包括producer端的重试机制,broker的持久化,consumer侧的ack机制;
- 灰度发布,能支持按机器维度小流量部署,观察系统日志和业务指标,等运行平稳后再切全量;
- 监控报警,全方位的监控体系,包括最基础的CPU、内存、磁盘、网络的监控,以及web服务器、JVM、数据库、各类中间件的监控和业务指标的监控;
- 灾备演练,对系统进行一些破坏性操作,观察局部故障是否会引起可用性的问题。
高可用的方案,主要从冗余、取舍、系统运维3个方向考虑,同时需要有配套的值班机制和故障处理流程,保证线上出了问题后,可以及时的处理。。