一、网站的可用性

  网站的可用性,描述网站可有效访问的特性,相比于网站的其他非公能特性,网站的可用性更牵动人们的神经,大行网站的不可用事故更是直接影响公司形象和利益,许多网站都将网站可用性列为工程师的绩效考核和工资挂钩。

  可用性指标是网站架构设计的重要指标。对外是服务承诺,对内是考核指标,具体到每个工程师的考核,一般使用故障分。“鼓掌分”是对网络故障进行分类加权计算故障责任的方法。计算公式为:故障分=故障时间(分钟)*故障权重。

  通常企业级应用系统为了提高系统的可用性,会采用较昂贵的软硬件设备,而互联网公司一般采用PC级服务器、开源数据库等廉价的的设备,这些设备在节约成本的同时也降低了系统的可用性,这时就需要“高可用的网站架构”。其设计目标就是保证服务器故障时服务依然可用,数据依然保存并可以被访问。而实现这一目的的方法就是“数据和服务的冗余备份”以及失效转移。

  一个网站的设计通常要分为三级结构:应用层、服务层、数据层。各层之间有相对独立性。应用层主要负责具体业务逻辑处理;服务层提供可复用的服务;数据层负责数据的储存与访问。

  为了保证数据的高可用,网站通常会牺牲另一个很重要的指标:数据一致性。高可用的数据有如下几个层面的含义:

  ①数据持久性:储存数据时,需要写入持久性储存,还需要将数据备份一个或多个副本,存放在不同储存设备上以防丢失。

  ②数据可访问性:当一个储存设备损坏时,就要将访问路径切换到另一个储存设备上,如果这个过程不能很快完成,这段时间数据是不可访问的。

  ③数据一致性:在数据有多份副本的情况下,如果网络出现故障,那么多个备份将出现不一致。

  CPA原理认为,一个提供服务的储存系统无法同时满足数据一致性、数据可用性、分区耐受性、这三个条件。

二、网站的伸缩型架构:

  所谓网站的伸缩性是指不需要改变网站的软硬件设置,仅通过改变部署的服务器数量就可以扩大或缩小网站的服务处理能力。

  设计一个大型软件系统或一个大型网站和将一个小网站演化成一个大型网站是完全不同的。前者是先用着,等到不够用了就换新的;而后者则是先用着,不够用了再加点。

  将不同功能进行分离部署可以实现一定程度的伸缩性,然后再部署服务器集群,即相同服务部署在多台服务器上构成一个集群整体对外提供服务。当一头牛拉不动车时不要再找一头更强壮的牛,而是用两头牛来拉车。

  利用HTTP重定向协议实现负载均衡,HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算一台真实的WEB服务地址,并将该地址写入HTTP重定向响应中返回给用户浏览器。

三、网站的可扩展架构:

  扩展性:指对现有系统影响最小情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定,不需要经常变更,应用之间较少依赖和耦合,对需求变更可敏捷相应。它是系统架构层面的开闭原则,架构设计考虑未来功能扩展,当系统增加新功能时,不需要对结构和代码进行修改。

  而扩展性最主要的就是降低应用之间的耦合性。

  读了这三篇文章,我觉得,我写的程序在储存的时候需要再加一个数据库,然后所有数据都做双份备份以备不时之需从而提高软件可用性。