题目:阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX需求征集系统》,分析如何增加相应的功能,提高系统的可用性和易用性,撰写一篇1500字左右的博客阐述你的观点
在这一节课上,我们学习了系统质量属性其中的可用性和易用性。那么质量属性是什么呢,质量属性是高于对系统功能(即对系统能力、服务和行为)的基本的要求的。系统质量属性讲重点放在了可用性、可修改性、性能、安全性、可测试性和易用性。从设计师方面,系统质量属性一般存在三个问题:(1)为属性提供的定义并不是可操作的。(2)重点通常是一个特定的方面属于哪个质量属性。(3)每个属性团队都开发了其自己的词汇。
今天我们就根据《大型网站技术架构:核心原理与案例分析》将重点放在可用性和易用性的学习讨论上以及将其方法和实发项目结合起来,来增强我们实际系统的可用性和易用性。
先来了解一下可用性。可用性与系统故障及其相关后果有关。当系统不再提供其规范中所说明的服务时,就出现了系统故障。系统的用户(人或其他系统)可以观察到此类故障。系统可用性是系统正常运行的时间比例。一般将系统可用性定义为:α=平均正常工作时间/(平均正常工作时间+平均修复时间)。有两个著名的例子。2011年4月12日,亚马逊云计算服务EC2发生故障,其ESB服务不可用,故障持续了数天,最终还是有部分数据未能恢复。这一故障导致美国许多使用亚马逊服务的知名网站受到影响,并引发了人们对使用云计算安全性、可靠性的大规模讨论。2010年1月12日,百度被黑客攻击,其DNS域名被劫持,导致百度全站长达数小时不可访问。
课下读这三章主要讲的是网站的可用性、伸缩性和可扩展性。
高可用架构是万无一失的。要保证一个网站永远完全可用几乎是一件不可能完成的任务。我们通过一个神奇的数字9来度量网站可用性,采用故障分来考核网站可用性。可用性指标是网站架构设计的重要指标,网站可用性看得见,摸得着,跟技术、运营、相关各方的绩效考核息息相关。一个典型的网站设计遵循基本分层架构模型即应用层、服务层、数据层。应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的存储和访问。网站的可用性架构设计不但考虑实际的硬件故障引起的宕机,还要考虑网站升级发布引起的宕机。高可用的服务策略包括分级管理、超时设置、服务降级(关闭非核心服务)等。高可用的数据是最宝贵的资产,保证数据存储高可用的手段主要是数据备份和失效转换机制。数据备份可以实现数据完全的持久化,失效转换机制是为了保证系统可用。保证网站高可用,万无一失,是一个艰难的过程,还需要更多努力。
对于我们的系统来说,友好的界面风格,简单便捷的操作,合理的结构布局,良好的提示是必要的,对提高易用性很是有帮助。表格的设计需要提供给使用者好的视觉效果,减少给操作者带来视觉疲劳,操作提示应易于理解,使用准确恰当的语言。三级菜单的实现算法要以时间复杂度为标准,显示快,无需等待。
网站的伸缩性永无止境。所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。要实现网站的可伸缩性,关键技术就在于如何构建良好的服务器集群。要达到良好的目标,就要求每次扩容和减少服务器时,对整个网站的影响是最小的。CAP原理就是选择强化分布式存储系统的可用性和伸缩性,而在某种程度上放弃一致性。CAP原理对于可伸缩的分布式系统设计具有重要意义,不恰当地迎合各种需求,可能会使设计进入两难境地,难以为继。我们的系统有大量的统计数据。我们的网站随时都有可能进行修改,比如发布新功能,这时就需要在服务器上关闭原有的应用,重新部署新的应用,整个过程要求不影响用户的使用。为了把对用户的影响降低到最小,通常使用发布脚本来完成发布。经过严格的测试,软件部署到服务器还是会出现问题,主要原因就是测试环境和线上环境并不相同,所以我们在网站发布时,要把测试通过的代码先发布到预发布机器上,确认系统没有问题后才正式发布。
我们的系统面向的用户多,范围广,通过不断地向集群中添加服务器来增强整个集群的处理能力,这就是网站系统的伸缩性架构,网站以此手段不断提升自己的规模,这个演化过程总体来说是渐进式的。网站的伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩、一类是单一功能通过集群实现伸缩。其中HTTP请求分发配置即负载均衡服务器,实现负载均衡的基础技术主要有HTTP重定向、DNS域名解析、反向代理、IP、数据链路层负载均衡。伸缩性和可用性、正确性、性能等耦合在一起。伸缩性是复杂的,没有通用的、完美的解决方案和产品,但有很多这方面的案例可供借鉴。一个具有良好伸缩性的网站,其设计总是走在业务发展的前面,在业务需要处理更多访问和处理之前,就已经做好了充分的准备,当业务需要时,只需要增加服务器并简单部署就可以了,技术团队便可轻松应对了。
可扩展架构是随需而变的。有的网站可以随时发布,新功能随时快速上线,而有的必须规定发布日,究其原因,则依赖于网站的扩展性架构设计。扩展性和伸缩性不同。相比之下就发现上学期自己做的网站。。。。唉,学了mvc模式和三大框架后更加觉得自己做的差了,所谓越是无知越是看不清自己,越是广识越是觉得自己渺小就是这样吧。。。。