大多数情况,在测试自己电脑能否上网时,我们都会用浏览器打开百度首页,如果不能打开百度首页,那就是我们电脑的网络没有连通,如果能够打开百度首页,那说明我们电脑的网络是连通的。之所以我们会拿百度首页来测试网络的连通性,是因为百度网站做到了高可用,我们相信只要网络正常就一定能打开百度首页。
同时,对于百度来说,每次搜索查询都可以创造广告收入,服务不可用就意味着金钱的损失,意味着用户的流失。同理,服务不可用对于其他网站而言,也是公司的损失。网站的可用性这么重要,那我们怎么来衡量网站的可用性呢?有哪些措施可以用来提高网站的可用性?
网站可用性衡量指标一个高可用网站不能频频出现故障,只要发生故障,即使是很短时间的中断,都会影响业务运营。其次,高可用网站,即使出现故障,也应该能很快恢复。如果一个网站一年不出一次故障,但一次故障需要几个小时,甚至几天才能恢复,那么这个网站也算不上一个高可用网站。
网站可用性(availability)也即网站正常运行时间的百分比,业界用N个9来量化可用性,最常说的就是类似“4个9(也就是99.99%)”的可用性。百度网站的可用性号称是5个9,即99.%。下表是N个9的具体说明。
描述通俗叫法可用性级别年度停机时间基本可用性2个%87.6小时较高可用性3个.9%8.8小时具有故障自动恢复能力的可用性4个.99%53分钟极高可用性5个.%5分钟
如何提高网站的可用性?对于大型网站来说,网站可用性越高越好。互联网架构的高可用设计可以从以下方面去考虑:
1)基于负载均衡的故障转移
对于业务逻辑服务,一般会设计成无状态化的服务,无状态化也就是服务模块只处理业务逻辑,而无需关心业务请求的上下文信息。所以无状态化的服务器之间是相互平等和独立的。
故障转移就是在某一个应用服务器不能服务用户请求的时候,通过一定的技术实现用户请求转移到其他应用服务器上来进行业务逻辑处理。
如上图所示,用户请求通过负载均衡器分发到具体的应用服务器上,应用服务器进行业务逻辑的处理。当应用服务器1出现故障不能对外提供服务时,负载均衡器可以探测到应用服务器的状态,然后将业务请求负载均衡到应用服务器2和应用服务器3上去,进而达到应用服务器故障时,不影响服务的使用。
2)冗余备份
冗余备份就是针对某一个服务通过服务器集群或多机房部署来达到服务器冗余和相互备份的目的。
在上一小节中的基于负载均衡器的失效转移方案,其实也一种冗余备份容灾的方式。同时有三台服务器组成一个集群来对外提供服务,三台服务器之间是相互备份的关系,只是三台服务器是在同一机房。
为了达到更高的可用性,我们还可以考虑通过多机房的冗余备份,如上图所示。正常情况下,负载均衡器将请求都分发到机房1的服务器上去,在机房1处理故障,或者处理性能比较高时,负载均衡器可以将请求切换到机房2上来,从而达到机房之间的容灾备份。
冗余备份可以达到避免单点,系统容量备份,多方式容灾等目的。
4)超时设置
一般网站服务都会有主调服务和被调服务之分。超时设置就是主调服务在调用被调服务的时候设置一个超时等待时间Timeout,主调服务发现超时后,主动进入超时处理流程。
例如:主调服务A调用被调服务B时,设置超时等待时间为3秒,可能由于B服务宕机、网络情况不好或程序BUG而导致B服务不能及时回复A服务的调用,此时A服务在等待3秒后,将触发超时逻辑而不再关心B服务的回复情况。A服务的超时逻辑可以依据情况而定,比如可以采取重试,或到另一个对等的B服务去请求,或直接放弃直接对外进行回包。
超时设置的好处在于当某个服务不可用时,不至于整个系统发生连锁反应。
5)异步调用
采用异步调用的方式调用被调服务,有利于将主调服务和被调服务进行解耦,同时提高系统的处理性能。
例如:当你在北京去白癜风最好的医院治疗白癜风哪家医院