可用性是与系统故障有关的一个质量属性,是指系统正常运行的时间的比例,一般通过两次故障之间的时间长度或在系统崩溃情况下能恢复正常运行的速度来衡量,同时此概念涉及一个公式的计算。其次,可用性关注以下几个方面:如何检测故障、发生故障的频度、出现故障时的现象、系统故障排除的时限、如何防止故障的发生、发生故障时的处理。最后,可以总结的是,可用性可以从客观和主观两个方面来进行评价,客观的就是讲这个系统讲这些个功能是否达标,主观的讲就是用户是否满意。另外,提升可用性,一般从这四个方面来考虑:错误检测、捕获异常、错误恢复、和错误预防。
网站的伸缩性永无止境。所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。要实现网站的可伸缩性,关键技术就在于如何构建良好的服务器集群。要达到良好的目标,就要求每次扩容和减少服务器时,对整个网站的影响是最小的。CAP原理就是选择强化分布式存储系统的可用性和伸缩性,而在某种程度上放弃一致性。CAP原理对于可伸缩的分布式系统设计具有重要意义,不恰当地迎合各种需求,可能会使设计进入两难境地,难以为继。我们的系统有大量的统计数据。我们的网站随时都有可能进行修改,比如发布新功能,这时就需要在服务器上关闭原有的应用,重新部署新的应用,整个过程要求不影响用户的使用。为了把对用户的影响降低到最小,通常使用发布脚本来完成发布。经过严格的测试,软件部署到服务器还是会出现问题,主要原因就是测试环境和线上环境并不相同,所以我们在网站发布时,要把测试通过的代码先发布到预发布机器上,确认系统没有问题后才正式发布。
对于实发性的项目,都有一个可用性的度量,也就是对于网的可用性的考核。对于一个系统来说,当然是可用性越高越好。可用性度量的通常用几个9来衡量,对于大多数网站而言,2个9是基本可用,网站年度不可用时间小于88小时;3个9是较高可用,网站年度不可用时间小于9小时;4个9是具有自动恢复能力的高可用,网站的年度不可用时间小于53分钟,比如QQ就是4个9,QQ服务99.99%可用,这意味着保证其服务的在所有运行时间中,不可用的时间小于0.01%,一年中的不可用时间少于53分钟;5个9是极高可用性,网站年度不可用时间小于5分钟。其计算方式为:
网站不可用时间=故障修复时间点-故障发现时间点
网站年度可用性指标=(1-网站不可用时间/可用时间)*100%
可用性就是系统要能用,不能三天两头的出故障,这样会造成用户的大量流失。
易用性是基于可用性的,在能够实用的基础上还要好用。下面说一下可扩展性。这一点主要是为了满足随时可能改变的用户需求和可能增加的系统功能。设计良好的代码允许更多的功能在必要时可以被插入到适当的位置中。这样做的目的的是为了应对未来可能需要进行的修改,而造成代码被过度工程化地开发。可扩展性可以通过软件框架来实现:动态加载的插件、顶端有抽象接口的认真设计的 类层次结构、有用的回调函数构造以及功能很有逻辑并且可塑性很强的代码结构。可扩展性是软件设计的原则之一,它以添加新功能或修改完善现有功能来考虑软件的未来成长。可扩展性是软件拓展系统的能力。简单地说,可扩展性就是关于如何处理更大规模的业务。比如, Web应用程序就是允许更多的人使用你的服务。如果你不能弄清楚如何提高性能的同时向外扩展,没关系。只要你能处理更大规模的用户,即使是存在多个单点故障也没有问题。组合的可扩展性要求要满足用户不断发展的要求,还要满足因技术发展需要而实现的扩展和升级的需求。
一个操作系统的可扩展性,是指该系统适应变化的能力。 在软件范畴上,可扩展性是软件系统本身的属性,或者进一步说是设计的属性,代码的属性。因为我们经常说设计的可扩展性,代码的可扩展性。那与之相对应的是什么呢?是变化,软件环境的变化(可能是业务环境,运行环境)导致软件要进行改动才能满足人们对它的要求,这种系统本身适应变化的能力就是可扩展性。