读书笔记:网站架构之可用性篇

目录:

一、高可用的网站架构

二、高可用的应用

三、高可用的服务

四、高可用的数据

五、网站的软件质量保证和运行监控


PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记


// =======================================================================================


高可用的网站架构


一、网站可用性度量(多少个9)

*:网站不可用时间(故障时间):故障修复时间点 - 故障发生时间点,即这段时间网站不能提供正常服务

*:网站可用性指标:(1 - 网站不可用时间 / 总时间)*100%,可用性4个9即表示网站99.99%的时间是没有故障的


二、网站可用性考核

*:网站可用性对外是用户服务承诺,对内是考核指标,故障分 = 故障时间 * 故障影响权重


三、高可用的网站架构

*:硬件故障是常态,故网站高可用架构设计的主要目标是保证服务器故障时服务依然可用,数据以让保存并能访问

*:实现高可用的主要手段:数据和服务的冗余备份和失效转移

*:大型网站分层架构使得不同层次的服务器(应用、服务、数据),实施可用性的具体解决方案差异甚大


// ===========================================================


高可用的应用


一、通过负载均衡进行无状态服务器的失效转移

*:无状态服务:无状态给高可用架构带来巨大便利,无状态服务则所有服务器完全对等,其中一台服务器宕机了,请求提交给集群其他服务器就好

*:在网站应用中,当集群中的服务是无状态的,负载均衡则起到了高可用的作用(失效转移)


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

*:事实上,网站应用总有些业务是有状态的,如购物网站中的用户购物信息等

*:Web应用中将这些多次请求修改使用的上下文对象称为会话,即Session,其保存着请求的状态信息,其管理主要有以下方法

1、Session复制:应用服务器间通过Session复制同步Session信息,开销巨大

2、Session绑定:负载均衡服务器通过Hash将来源统一IP的请求路由到相同服务器,会话粘滞,服务可用性差

3、利用Cookie记录Session:有服务端记录Session转移到客户端,简单易用,可靠性好,但是Cookie信息太多会影响传输消耗

4、Session服务器:独立部署的Session服务器(集群)专门管理Session => 无状态的应用服务器 + 有状态的Session服务器


// ===========================================================


高可用的服务


一、高可用服务的几个策略

*:可复用的服务,如用户登陆模块等等,为业务产品提供基础公共服务,同样也为无状态服务,故负载均衡的失效转移也为其中一种

*:分级管理:运维上的策略,核心应用和服务优先使用更好的硬件

*:超时设置:请求设置超时时间,防止请求得不到响应还占用应用程序资源

*:异步调用:应用对服务的调用通过消息队列等方法异步化,避免一个服务失败导致整个应用请求失败

*:服务降级:在访问高峰期,通过拒绝部分用户访问,以及关闭部分非核心功能来服务降级

*:幂等设计:在服务层保证服务重复调用和调用一次产生的结果相同(请求编号)


// ===========================================================


高可用的数据


一、CAP原理

*:CAP原理:一个提供数据服务的存储系统,无法同时满足数据一致性C、数据可用性A、分区容错性P(系统跨网络分区的伸缩性)

*:故大型网站一般会强化分布式存储系统的可用性和伸缩性,而某种程度牺牲一致性

1、数据强一致:各个副本数据在物理存储中总是一致

2、用户数据一致:各个副本数据在物理存储可能不一致,但用户请求通过应用的纠错和校验,返回一个确定正确的数据给用户

3、数据最终一致:一致性较弱,返回用户请求的数据可能不一致,但一段时间后会自我修复使数据最终一致


二、数据备份

1、数据冷备

*:定期将数据复制到某种存储中,并物理归档保存。

*:缺点是不能保证数据最终一致(备份点后的数据会丢失),且不能保证数据可用性(恢复时间较长)

2、异步数据热备

*:指多份数据副本写入操作异步完成,即一台主存储服务器(Master)写入完成就返回

*:关系型数据库热备机制就是常说的Master-Slave同步机制

3、同步数据热备

*:指多份数据副本写入操作同步完成,即全部存储服务器写入完成才返回


三、失效转移

*:失效转移通过将宕机服务器的操作重新路由到其他服务器,保证数据访问不会失败

1、失效确认:通过维护心跳检测,或者应用程序的访问失败报告

2、访问转移:若存储对等,则直接切换到对等服务器;若存储不对等,则重新计算路由来选择存储服务器

3、数据恢复:定期检测,将副本数目恢复到系统设定的值


// ===========================================================


网站的软件质量保证和运行监控


一、高可用网站的软件质量保证

1、网站发布:遵循规范的发布流程,先验证服务起来了,再打开负载均衡这个服务器的路由

2、自动化测试:对于发布频繁的网站,使用自动化测试来降低人工测试的成本和时间

3、预发布验证:发布到和现网一样的服务器上,但是不接收用户请求,开发和测试进行预发布验证

4、代码控制:通过Svn/GitHut进行代码管理,保证代码发布版本稳定,以及团队间开发互补影响

5、自动化发布:实现整个发布流程自动化,人工操作越少,引发发布故障的可能性越小

6、灰度发布:先灰度发布现网小部分用户,持续几天观察稳定再全量发布


二、网站的运行监控

1、监控数据

*:用户行为日志收集,用于数据平台统计分析用户行为

*:应用运行数据收集,平均延时、Cache命中率等,用于应用程序性能逻辑监控

*:服务器性能数据收集,CPU、内存、磁盘、网卡,用于监控服务器性能指标

2、监控管理

*:通过对监控数据的分析,做到自动告警、失效转移和优雅降级等

你可能感兴趣的:(linux,架构设计,大型网站,可用性)