• 结合《XXXX需求征集系统》分析可用性和可修改性战术


    阅读《大型网站技术架构:核心原理与案例分析》五、六、七章,结合《XXXX需求征集系统》列举实例分析采用的可用性和可修改性战术


      网站的可用性,即描述网站可有效访问的特性,相比于其他网站的其他非功能性特性,网站的可用性更牵动人们的神经,大型网站的不可用事故直接影响公司形象和利益。书中提到亚马逊云计算服务故障持续了数天,最终还是有部分数据未能恢复,并引发了人们对使用云计算安全性、可靠性的大规模讨论;百度被攻击导致数小时不可访问,也是一时成为新闻焦点。由此可见,在网络时代,网站的可用性是十分重要的。而保证一个网站永远完全可用几乎是一件不可能完成的使命。

      一个网站的可用性指标是网站架构设计的重要指标,对外是服务承诺,对内是考核指标。在考核网站可用性指标时,用的较多的是使用故障分。故障分=故障时间(分钟)*故障权重,故障权重根据故障等级来进行划分,对于严重故障,权重就比较大的,对于那些不为严重的非核心故障,权重便比较小。书中举例QQ服务99.99%可用,即一年中其大约最多53分钟不可用。在此背景之下,反观《XXXX技术征集系统》,在经过上述网站可用行考核之后,发现这个系统的可用性存在着很大的问题,对于一些故障不能优化及时处理,而是直接造成了事故,包括一些其他的非核心功能的故障,虽然小,但却较多,会很影响用户的体验。

      由于网站可用性尤为重要,并且看得见摸得着,因此一些企业也会为提高系统可用性,做着各种的努力,例如有些企业(如IBM)会采用较昂贵的软硬件设备。而一些互联网公司更多是用廉价的设备,损坏频率更高,也因此降低了可用性。由于硬件故障是常态,因此一个高可用架构设计就显得尤为重要,其主要目的是保证服务器硬件故障时服务依然可用,数据依然保存并能够被访问。实现高可用架构的主要手段是数据和服务的冗余备份及失效转移,一旦某些服务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘读取数据。

      一个典型的网站设计通常分为三层:应用层、服务层和数据层。越是复杂的大型网站架构,服务器规模越强大,其分层架构和物理服务器的分布式部署使得位于不同层次的服务器有不同的可用性特点,高可用的解决方案也差异甚大。而《XXXX技术征集系统》中没有应用层,只是将应用层和服务层部署在一起,另外还有一个数据层,包括一些数据库服务和搜索分类服务等。对于数据和服务的冗余备份,在《XXXX技术征集系统》中,需要记录该用户所提交过的需求报表以及用户修改和处于各种审核状态的报表,这些数据知识状态不同,通过包装,令其符合Session存储和访问要求

      高可用的服务和数据也是很重要的。比较好的高可用服务策略包括:分级管理,优先级设置不同;超时设置,如果进程超时,系统抛出异常,应用程序根据服务调度可选择重试或者请求转移到提供相同服务的其他服务器上;异步调度,即使一个服务无法进行,也不会影响其他服务等等,而对于XXXX技术征集系统》,尚未提供较好的可用性的服务,例如进程超时或者遇到异常尚未采取相应措施,还有很大的改进空间。在数据备份方面,通过借助相应数据库管理工具,能够做到数据备份,对数据进行保护。

      对于网站的可修改性,书中六七章提到的伸缩性架构和可扩展性架构都是很棒的架构设计。缺乏伸缩能力,对网站的使用影响很大,书中举例,京东网在一次图书促销活动中,由于网站自身的系统伸缩能力较弱,导致网站服务不可用。自己的《XXXX技术征集系统》没有进行过此方面的测试,不过结果已经可想而知了,对于用户量增加,报表的不限添加,这个小型系统是会出现卡顿不可用危险的。而那些大型网站也不是一开始就是大型网站的,而是通过不断向集群中添加服务器来增强骤增个集群的处理能力,这就是网站系统的伸缩性架构。

      伸缩架构能够保证系统网站系统的在整体服务处理能力,无需为不断增长的用户和访问焦虑,可扩展架构则能保证系统具有功能可持续扩展及提升的能力。扩展性,即指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。因此开发低耦合系统是软件设计的终极目标之一,低耦合系统更容易扩展,低耦合的模块也更容易服复用,一个低耦合的系统设计夜壶让开发过程和维护变得更加轻松和容易管理。设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提高模块的复用性。比较《XXXX技术征集系统》,其扩展性还是有一些基础的,在各个模块之间,通过数据一致等操作,使其模块具有一定的复用性,但也是有限制的,只是位于服务器上运行,在网站架构方面并没有引入设计观念,可见系统的耦合性和扩展性还需要加强,而我们也更应该多学习扩展性架构、伸缩性架构和服务框架来完善我们的系统,增强系统的可提升能力和服务处理能力。

  • 相关阅读:
    C#单例模式的三种写法转载
    silverlight 添加配置项
    oracle 如何实现上一条、下一条、查找不连续的值
    一个IT民工眼中的保障房不能保证公平,赞成取消保障房
    c# where 转载
    进度条 silverlight
    中国软件公司我深表认同:软硬结合
    计算经纬度两点之间的距离(c#)
    如何高效使用SQLITE .NET (C#)
    如何判断系统是否安装了flash插件
  • 原文地址:https://www.cnblogs.com/610553824lyx/p/8635013.html
Copyright © 2020-2023  润新知