什么是高可用
高可用(High Availability) 是分布式架构设计中必须要考虑的因素之一。 通常指通过设计减少系统不可用的时间。
假设系统能一直提供服务,我们则说该系统的可用性100%。
业内常规标准一般是4个9,即可用率99.99%。系统的年停机时间为8.76个小时。
如果保障系统的高可用
冗余+故障转移
单点系统是不具备高可用的,即使做的近乎完美。
把服务做成集群、分布式是提高可用性的常规思路。其中几个挂了只会影响一部分用户, 如果有冗余备份能及时恢复,服务宕机几乎对用户无感。高可用以对用户 或对自身业务的伤害大小来衡量。
常见的互联网分层架构
常见的互联网分布式架构:
- 客户端层: 典型调用方是浏览器browser或者手机APP
- 反向代理层:系统入口,反向代理
- 站点应用层(APIGateway):实现核心应用逻辑,返回html或json
- 服务层(RPCServer): 微服务
- 数据-缓冲层:缓冲加速访问存储
- 数据-数据库层:数据库固化数据存储
基于上述架构的论述
系统宏观上的高可用以横向扩展为主。
client --> nginx
nginx --> apiGateway
apiGateway --> RPCService
RPCService --> master-slave DB
扩展:
扩展, 一是为了避免单点故障;二是通过扩展来成倍的提升系统能力;
扩展,分为水平扩展和垂直扩展
- 垂直扩展:
- 能提升系统处理能力,不能解决单点故障。
- 优点:扩展简单。
- 缺点:扩展能力有限。
- 水平扩展: