万无一失:网站的高可用架构
高可用的应用
应用的一个显著特点是应用的无状态性。所谓无状态的应用是指应用服务器不保存业务的上下文信息,而仅根据每次请求提交的数据进行相应的业务逻辑处理,多个服务实例之间完全对等,请求提交到任何服务器,处理结果都是完全相同的。
1、 通过负载均衡进行无状态服务的转移。
2、 应用服务器集群的Session管理:Session复制(不适合集群规模大,用户信息多的情况),Session绑定(通过Hash算法绑定Session和服务器,但不符合高可用需求),利用Cookie记录Session(记录在客户端,简单易用,但是大小受限而且每次都需要传输影响性能),Session服务器(实际上是将应用服务器的状态分离,分为无状态的应用服务器和有状态的Session服务器)。
高可用的服务
1、 分级管理。核心应用和服务优先使用更好的硬件。
2、 超时设置。因为应用程序的对服务端的调用失去响应时占用应用程序的资源,一旦超时,应用程序应根据服务调度策略选择继续重试或将请求转移到提供相同服务的其他服务器上。
3、 异步调用。
4、 服务降级,包括拒绝服务和关闭服务。
5、 幂等性设计,即服务重复调用和调用一次产生的结果相同。
高可用的数据
1、 CAP原理:一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availability)、分区耐受性(Patition Tolerance,系统具有跨网络分区的伸缩性)这三个条件。大型网站中,通常会选择强化可用性和伸缩性,所以某种程度上放弃一致性。
2、 数据备份。
3、 失效转移,包括失效确认、访问转移、数据恢复。
高可用网站的软件质量保证
自动化测试,预发布验证,代码版本控制,灰度发布。
网站运行监控
1、 监控数据采集。用户行为日志收集、服务器性能监控和运行数据报告。
2、 监控管理。系统报警、失效转移和自动优雅降级。