结合XXX项目web
读大型网站技术架构:核心原理与案例分析数据库
——5,6,7章后感浏览器
在阅读大型网站技术架构以前咱们学到:能够用六个质量属性衡量系统架构的好坏,所谓上梁不正下梁歪,架构也是获取许多质量属性的基础。缓存
讲到可用性,就像永远没有不变的需求,一个系统的彻底可用性永远没法达到的,但可用性是一个系统最重要的属性,不可用的系统是没有意义的。国内的QQ服务99.99%可用,也就是每一年只有53分钟的时间是不可用的,而Twitter网站的可用性不足99%,相比较而言,国内在社交软件的可用性要求上仍是比较高的。一个高可用性的网站可能须要过硬的技术、大量的设备资金投入、富有责任心的工程师和一个好运气。安全
系统运行时,硬件故障是常态,因此一个高可用架构设计的主要目的是保证硬件服务器故障时服务仍然可用而且数据依然能存储和访问。实现该架构的主要手段就是数据和服务的冗余备份及失效转移。服务器
大型网站的服务器经过分层集群的方式实现高可用性,应用层的负载均衡技术就像是给服务器安了一个卫兵,让负载均衡服务器与服务器构成一个队伍,随时监测服务器安全情况,一旦发生问题便剔除他,并把任务交给其余安全的服务器。但这种技术也会有失误的时候,由于备份的服务器是彻底同样的,当一台服务器由于某种缘由不可用时,其余服务器也会由于这个问题宕掉。对于XXX系统,用户访问量相对较小,咱们可使用这种方式来提升系统可用性,即提供一个备用服务器。另外,若是服务器没有配置到负载均衡服务器上,外部用户是没法访问的。session
应用层中的session信息对系统的可用性也是相当重要的,大型的web网站会有大量的session信息要存储,选择一个正确的session管理方式不只能够保证系统可用,还能够提升系统运行速度。正如上次对淘宝网架构的了解中认识到session管理的重要性。一种较好的session管理方式是使用session服务器,将服务器从新划分为有状态的无状态。架构
高可用的数据有数据持久性、数据可访问性、数据一致性三层含义,数据备份中的热备方式有两种:异步热备、同步热备,其中同步热备较为经常使用。可采用同步热备的方式给XXX系统进行数据备份,以防数据丢失。负载均衡
实现网站的伸缩性有两种:在不一样的服务器上部署不一样的服务,提供不一样的功能;在集群内多台相同的服务器中部署相同的功能,实现相同的功能。实现负载均衡的基础技术有:HTTP协议重定向负载均衡、DNS域名服务器负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡等。对XXX系统而言,可应用DNS域名服务器负载均衡技术。异步
许多Web 应用程序都将数据保存到REBMS(关系数据库管理系统)中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加剧,数据库响应恶化,网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器。通常的使用目的是经过缓存数据库查询结果,减小数据库的访问次数,以提升动态Web 应用的速度、提升扩展性。
开发低耦合系统是软件设计的终极目标之一(一个完整的系统,模块与模块之间,尽量的使其独立存在。也就是说,让每一个模块,尽量的独立完成某个特定的子功能。模块与模块之间的接口,尽可能的少而简单。若是某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合),在XXX系统中,下降系统耦合性能够从代码编辑、结构设计入手,尽可能封装。文中使用分布式消息队列(消息队列是一种进程间通信机制)来下降耦合,使系统更容易扩展,低耦合的模块更容易复用,一个低耦合的系统设计也会让开发过程和维护变得更加轻松和容易管理,提升系统可用性。