高可用学习

 

高可靠和高可用的区别
Reliability和Availability分别对应可靠性和可用性, 这两个概念既有区别也有联系:
Reliability定义为一个服务连续无故障运行的时间,无故障运行的时间越长,可靠性就越高。Availiability定义为在足够长的时间里,比如一年的时间里,一个服务可用的时间,服务可用时间越长越好。一般用可服务时间除于总时间算出一个百分比,用百分比作为度量。比如一个服务如果有5个9的可用性,指的就是一年里99.999%时间里服务都是可用的。

有两个极端的例子可以很好的说明这两个概念的区别:
假想一个服务,可靠性很高,平均来说可以稳定运行10年,但是一旦服务中断,要用一年的时间来恢复,那么它的可用性只有90%。假想另一个服务,可靠性很差,运行10秒就会宕机,但是恢复服务只需要1ms, 那么它的可用性是99.99%
从这两个极端的例子可以看出,提高可用性有两条路:
一是提高可靠性,当然影响可靠性的原因有很多,包括硬件,软件,网络,运维等。但是有人做过统计,软件的bug是影响可靠性的最主要的因素。并且提高软件质量相较于使用更可靠的硬件也算成本较低的方式了,二是减少恢复时间,一旦出现宕机,如果能在秒级恢复,那对业务影响是很小的。

高可用架构应具备但不限于以下特征:
主从切换
很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,从服务升级为主服务,这种切换速度应当控制在秒级别(几秒钟)。
当宕机的服务恢复之后,自动变为从服务,主从服务角色切换。主从切换一定是要付出代价的,所以当主服务恢复之后,也就不再替换现有的主服务。
负载均衡
当服务的请求量比较高的时候,一台服务不能满足需求,这时候需要多台机器提供同样的服务,将所有请求分发到不同机器上。
高可用架构中应该具有丰富的负载均衡策略和易调节负载的方式。
甚至可以自动化智能调节,例如由于机器性能的原因,响应时间可能不一样,这时候可以向性能差的机器少一点分发量,保证各个机器响应时间的均衡。
易横向扩展
当用户量越来越多,已有服务不能承载更多的用户的时候,便需要对服务进行扩展,扩展的方式最好是不触动原有服务,对于服务的调用者是透明的。

高可用进阶
1、服务高可用
 

2、后期业务增加后我们再根据需要逐步扩容,例如数据库读写压力大了,我们用Redis、数据库读写分离等手段。这样扩容不用复杂的操作,不用长时间的停服迁移重要的数据信息。


3、根据地域高可用,横向扩展

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值