系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
高可用的常用手段
可用,指的是系统对外能够提供服务,系统的可用时间 / 系统的总运行时间,所得的比值就是表征系统的可用的度量指标,用几个九来表示,99.99%就是四个九。
互联网架构实践中,实现高可用通常使用以下两种方式:
- 集群化(冗余)
- 故障自动转移
微服务的架构有很多层,每一层之间都要实现高可用
也就有了:端到反向代理、反向代理到站点、站点应用到微服务、微服务到缓存、微服务到读库、微服务到写库的多个层面高可用
端到反向代理的
自上而下,先来看端到反向代理
在前面章节反向代理的内容中已经提及,反向代理的高可用使用虚VIP + Keepalived的方式来实现的,keepalived机制会检测主nginx的存活状态,当其不可用时会用从nginx顶上,虚IP使其二者对外是一个整体,流量迁移对调用方是透明的。
但是当主nginx挂掉的时候,当时连接的流量还是会有影响,不过用户只要进行刷新操作就可以恢复了。
之前有一个预留问题,就是这种方案nginx的利用率只用50%,解决方案就是双主互备,两个nginx使用两个虚IP,nginx之间互为主从,