系统架构师知识:高可用系统设计
高可用系统设计,常见于大中型互联系统架构设计。下面为大家整理了一些关于高可用系统设计的知识,一起来了解一下!
1、系统可用性
系统可用性定义:MTTF/(MTTF+MTTR) * 100%
MTTF: mean time to failure,平均失效前时间,也就是正常运行的时间
MTTR: mean time to restoration, 平均恢复前时间,也就是故障时间
系统高可用性(High Availability)通常来描述一个IT系统经过专门的设计,减少计划和非计划停工时间,保持其服务的高度持续可用性。
影响系统可用性的因素很多,包括硬件、软件、网络和环境(比如机房温度)等,除了常见的CPU、内存、IO、网络、锁等因素,还需要考虑各种支持设备和系统、非技术的因素,总之,系统可用性是一个综合因素影响的结果。
2、高可用的模式
系统高可用性的常用设计模式包括三种,包括:
(1)、主备(Active-Standby)
工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动(热备)或手动(冷备)方式将服务切换到主机上运行。一般需要人工干预才能回复初始状态。
(2)、互备(Active-Active)
工作原理:两台主机(A标记为主,B标记为备)同时运行各自的服务工作且相互监测情况,当任一台主机(A)宕机时,另一台主机(B,启用并标记为主)立即接管它的一切工作,保证工作实时可用
(3)、集群(Cluster)
工作原理:多台具有相同能力的服务同时对外提供透明服务,所有服务之间都是Active-Active关系,并分担处理服务请求,一般通过总控节点或集群软件(例如zookeeper等)进行高可用的控制。
3、高可用的设计
高可用的设计没有完美的标准答案。但是根据工程经验,我们可以总结出高可用设计的一个重要指标:
不要有单点。
不要有单点。
不要有单点。
如果是在设计开发实现和维护大中型web系统,通常我们会从互联系统中最容易出现问题,同时也最不容易横向扩展的.节点下手(包括网络和存储系统),排查并解除系统中的薄弱环节,争取保证整个系统中绝不出现单点这一死角,或者出现单点,但也可以通过成熟的优化手段(缓存、队列、sharding、负载均衡和异地容灾等)实现高可用。
你可能还是会有疑问:是不是系统中没有单点了保证高可用了就一定不出事情了呢?
答案是,还是可能会出事,而且可能都是大事。今年的黑色五月份的几起重大IT事故,无情地告诉我们,再高明的设计,碰到物理破坏或者权限控制不当而误操作或者DDoS都有可能让开发和设计人员的所有心血付之东流。