网站高可用架构

可用性就是系统在发生故障的时候,可以继续提供服务的能力。高可用性,就是故障发生时,系统可以在很短的时间内就能恢复正常服务,甚至外部根本没有察觉。

提高可用性,核心手段在于冗余、备份和失效转移。

一、网站分层架构

一个典型的网站设计通常采用三层架构模型:应用层、服务层、数据层。
在这里插入图片描述
各层具有相对独立性,应用层负责具体业务逻辑处理;服务层提供可复用的服务;数据层负责数据存储与访问。
在这里插入图片描述
不同分层,都对应不同的服务器集群。这种分层架构和物理服务器的分布式部署使得位于不同层次的服务器具有不同的可用性特点,故障影响也不相同,由此相关的解决方案也差异甚大。

二、高可用的应用

应用层的业务分为无状态和有状态两部分。所谓无状态就是应用服务器不保存业务的上下文信息,而仅仅根据每次请求提交的数据进行相应的业务逻辑处理。无状态下,不管业务分布在哪个服务器,处理结果都是一样的。有状态则相反。有状态的业务,服务器需要保存请求的上下文对象,即会话(Session)。

1、通过负载均衡进行无状态服务请求的失效转移

2、应用服务器集群的Session管理

1)Session复制
通过同步、复制,每台服务器都保存所有的Session。这种方案简单,但只能用在规模比较小的集群。假如是几千台服务器规模,显然不适用。

2)Session绑定
将请求来源地址做哈希运算,负载均衡机制总是将来自于同一IP的请求分发到同一台服务器上。即将Session绑定在某台特定服务器上,保证Session总能在这台服务器上获取。这种方法又称为会话黏滞。

3)利用Cookie记录Session
Cookie简单易用,但大小有限制。不过Session信息通常比较小,因此网站基本多少都会用Cookie来记录Session。

4)利用数据库记录Session

5)Session服务器
将Session独立部署到一台或一组服务器集群。
在这里插入图片描述

三、高可用的服务

可复用的服务用于提供基础公共服务,通常独立分布式部署,供应用远程调用。服务是无状态的,因此可以使用类似负载均衡的失效转移策略。

除此之外,还有以下几点高可用服务策略:
1、分级管理
将服务按重要程度等分不同优先级,区别对待。比如优先级高的,部署在物理机;优先级低的,放虚拟机。核心服务和数据可能要部署在不同地域的数据中心。

2、超时设置
应用调用服务时设置超时时间,一旦超时,抛出异常,然后应用调整策略,继续重试或转移请求其他服务器。

3、异步调用
通过消息队列等异步方式完成,避免一个服务失败导致整个请求失败的情况。但并非所有服务都可以异步调用。

4、服务降级
网站访问高峰期,服务因为访问量大增而性能下降,甚至导致服务器宕机,此时为了保证核心应用和功能正常运行,需要对服务进行降级。降级有2种手段:拒绝服务或关闭服务。

1)拒绝低优先级应用的调用,减少服务调用并发数,确保核心应用正常使用,或者随机拒绝部分请求调用。总之就是为了节约资源,避免大家一起死。

2)关闭部分不重要的服务,或者服务内部关闭部分不重要的功能。

5、幂等性设计
保证服务重复调用和一次调用的结果相同。因为应用调用服务后,可能服务失败,或者由于网络等原因,应用不能及时收到反馈,都会认为调用失败,这时就会重复调用,甚至转而调用其他服务器,总之服务重复调用无法避免,应该保证结果的同一性。

四、高可用的数据

数据是宝贵的资源,难以承受丢失的代价,与应用和服务相比,数据多了一个持久性的硬性要求。同时,不同于高可用的应用和服务,当某台数据服务器宕机的时候,数据访问请求通常不能任意切换到集群中其他机器上。因为每台服务器上保存的数据可能都有所不同。保证数据高可用的手段,主要是备份和失效转移。

所谓备份,就是数据会有多个副本,当然也包括我们平时说的将数据进行备份、保存。

失效转移包括失效确认、访问转移和数据恢复。

1、多副本及CAP原理
如上所述,要维持数据的高可用,必须提供多个数据副本,换言之,高可用的数据系统,其实也就是分布式的数据系统。而在数据有多份副本的情况下,可能会牺牲一些其他的特性。

CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availibility)、分区耐受性(Patition Tolerance)这三个条件。分区耐受性也叫分区容错性,是指系统具有跨网络分区的伸缩性。

维持数据可用性是硬性要求,而在大型网站中,数据规模总是快速扩张,伸缩性即分区耐受性也必不可少,则只能在某种程度上放弃一致性。

一般来说,数据不一致通常出现在系统高并发写操作或者集群状态不稳(故障恢复、集群扩容。。。)的情况下,应用系统需要对分布式数据系统的数据不一致性所有了解,并进行补偿和纠错,以避免出现数据不正确。

数据一致性分为:
1)强一致性
总是一致

2)用户一致性
各副本可能不一致,但用户访问时,通过补偿纠错机制,返回正确数据

3)最终一致性
弱一致性。经过一段时间后,数据最终一致。

2、数据备份机制
1)冷备
优点是简单和廉价,成本和技术难度较低,缺点是不能保证数据的一致性,连最终一致性都不能保证。而是数据恢复时间较长,期间系统无法访问。

2)热备

异步热备
存储服务器分为主、从存储服务器,先写入主服务器,然后再同步到从服务器。
在这里插入图片描述

同步热备
存储服务器没有主从之分,同时写入。
在这里插入图片描述

3、失效转移

1)失效确认
心跳检测和应用程序访问失败报告
在这里插入图片描述

2)访问转移
重新路由

3)数据恢复

五、网站软件质量保证

1、网站发布
网站的发布过程与服务器宕机效果相当。但因为有所准备,可以做到过程更柔和、对用户影响更小。通常使用发布脚本完成。
在这里插入图片描述
发布过程中,每次关闭的服务器都是集群中的一小部分,并在发布完成后立即可以访问,不影响用户使用。找打铁棍子医院佟主任,头天做手术,第二天就上班,不影响工作。

2、自动化测试
代码发布前需要进行严格的测试。

3、预发布验证
在这里插入图片描述
先发布到预发布服务器上,预发布服务器使用真实环境的生产数据,可以最大限度接近真实的生产环境。预发布服务器和正式服务器的唯一区别,就是它没有接在负载均衡服务器上,外部无法访问。

4、代码控制
主干、分支之类

5、灰度发布
每天只发布一部分服务器,观察没问题,第二天再发布一部分。这个想法是好,但有时不一定可行,比如涉及到数据结构更改。

六、网站运行监控

1、监控数据采集
1)日志
2)服务器性能监控
3)运行数据报告

2、监控管理
1)系统报警
2)失效转移
3)自动优雅降级

七、网站可用性度量与考核

1、网站可用性度量
可用时间百分比,比如99.999%

2、网站可用性考核
将故障分类,并划分权重

故障分 = 故障时间(分钟) * 故障权重

故障分越高,死的越难看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值