一:高可用的网站架构:
主要目的:保证服务器硬件故障时,服务依然可用,数据已然能够被保存,访问。
主要手段:数据和服务的冗余备份及失效转移,一旦某些服务器宕机,将服务切换到其他可用服务器上,若磁盘损坏,则从备份磁盘读取。
分层模型:应用层,服务层,数据层 分别部署在不同的服务器集群上。
应用层:为应对高并发访问请求,通过负载均衡设备将一组服务器组成一个集群。
服务层:也通过集群的方式
数据层:写入数据时惊醒数据同步复制,写入多台服务器上,实现数据冗余备份。
二:高可用的应用:
应用层处理网站业务逻辑,是无状态的,不保存业务上下文信息,请求提交到任意服务器,结果都一样。
1.通过负载均衡:应用无状态性,请求提交到任意一台服务器都一样,通过负载均衡实现实时监测,自动转移失效任务。
2.应用服务器集群的session管理
session复制:及群众的服务器同步session对象。
session绑定:利用负载均衡源地址Hash算法实现,总将来自同一ip的请求发布到同一台服务器上。
利用cookie记录session:受cookie大小限制,每次请求响应都需要传输cookie,影响性能。
session服务器:利用独立部署的sesssion服务器集群统一管理session
三:高可用的服务:
可复用的服务模块独立分布式部署,也是无状态的,可使用负载均衡的失效转移策略。另外还可用如下几点策略:
1.分级管理:核心应用和服务选用更好的硬件。低优先级的服务通过启动不同线程,或部署在不同虚拟机上,高优先级的部署在不同物理机上
2.超时设置:应用程序中的服务调用超时,通信框架抛异常,根据服务器调度策略,选择重试或者请求转移。
3.异步调用:应用对服务的调用采用消息队列的方式。并非适用于所有服务调用,如获取用户信息,会延长响应时间,还有必须确认服务器调用成功才能进行下一步的也不适合。
4.服务降级:拒绝服务:拒绝低优先级的调用,减少服务调用并发数;或随机拒绝部分请求调用,避免要死一起死。
关闭服务:关闭不重要的服务或功能,如双11 ,系统繁忙时段关闭 ”评价“,”确认收货“
5.幂等性设计:应用调用服务失败后会重复调用,或转移到其他服务器上调用,有可能因为网络原因,导致的虚假失败。需保证服务层重复调用和一次调用的结果相同。
例如转账交易等:需要交易编号等信息进行服务调用有效性验证。
四:高可用的数据:
主要手段:数据备份,失效转移机制。
CAP原理:数据存储系统无法同时满足数据一致性(C),数据可用性(A),分区耐受性(P,跨网络分区的伸缩性),大型网站中在某种程度上放弃数据一致性。
数据备份:
冷备份:定期将数据复制到磁盘,光盘上,物理保存。
热备份:异步(多份数据副本的写操作异步完成,主从服务器),同步。
失效转移:
失效确认:心跳检测,应用程序访问失败报告
访问转移:一台服务器宕机,应用程序根据配置直接切换到对等服务器(存储数据完全一致)上,如果存储不对等,需重新计算路由
数据恢复:
五:高可用网站的软件质量保证:
1.网站发布:关闭负载均衡集群中一台服务器的路由——关闭这台服务器应用——同步软件代码——启动这台服务器——打开负载均衡服务器上这台服务器的路由 依次循环,知道急群众所有服务器都发布完成。
2.自动化测试
3.预发布验证:
网站发布时吧测试过的代码发布到预发布服务器上进行发布验证,执行一些典型的业务流程,确认没问题、
预发布服务器和线上服务器唯一的不同是没有配置在负载均衡服务器上,外部用户无法访问、
4.代码控制
5.自动化发布:人的干预越少,自动化程度越高,引入故障的可能性就越小
6.灰度发布:
业务服务器集群规模非常庞大,将集群分成若干份,每天只发布一部分服务器,观察运行稳定后第二天继续发布一部分服务器,持续几天发布完成。
六:网站运行监控:
1.用户行为日志收集:
服务器端日志收集,客户端浏览器日志收集(页面嵌入JS,收集用户真实操作行为)
2.服务器性能监控:
系统LOAD,内存占用,磁盘IO,网络IO
3.运行数据报告:运行数据在程序中采集,汇总后统一显示。
4.系统报警:监控指标超过阀值发出预警
5.失效转移:
6.自动优雅降级:为应对突然爆发的访问高峰,主动关闭部分功能。