高可用系统,就是说要保证系统在几乎任务时候都要有正常运行,功能正常。 我们来看下哪些情况会造成系统不可用。
- 单机系统下的可用性问题,从nginx->tomcat->db/soa来看,单点问题会影响系统高可用,比如要是这个这个链路上其中一个单点挂了,那么整个系统都不可用了。所以引申出来主备/集群模式,防止单点问题。
- 高并发场景下,请求过多也会因为后端瓶颈点引起整个系统down掉,所以一般情况下应对高并发场景我们会限流,比如英雄联盟抢票,周杰伦抢票。
- 通过采用mq等队列形式削峰,保证后端系统不会down掉。
- 熔断机制。 - 容灾机制,多机房部署。
综上所述:
1. 主备/集群模式,防止单点故障;
2. 限流,削峰,防止后端压力过大;
3. 熔断机制,类似与限流;
4. 容灾机制,多机房/异地部署。