随着时代的发展和进步,越来越多的人开始接触到互联网。网站的好坏成为了一些人使用互联网的标准,网站的高可用性是一项重要的指标。人们在使用网站时,要求不会受到太多的来自外界的影响,所以要求架构师在网站的可修改性上付出的也不能少。
下面我们从系统的高可用性开始。世界上的各大著名网站都是有很高的可用性的,当然高的可用性不代表不会出问题,例如:美国的亚马逊公司的亚马逊云计算服务EC2发生故障,导致了许多的网站受到了影响;再说国内的百度搜索引擎,被黑客入侵,导致网站崩溃数小时;最近的Facebook泄露了大量的用户数据,甚至有可能为自己招来灭顶之灾。这些世界上的知名网站都遭受过不同程度的质疑,但是凭借他们的高可用性还是仍然的屹立不倒。其实要保证一个网站一直可用其实还是不可能的,才出现了一个考量的标准——网站可用性度量,其实国内的知名网站可用性都很高的,比如QQ,可用性高达99.99%,也就是说全年不超过53分钟有故障,这其实是一个非常了不起的成绩。在《河北省重大技术需求》系统中,自己写的东西肯定是许多的bug,可用性基本上为0吧,预防突发的事件也不具备那个能力,网站极度容易崩溃,这都是我今后要在架构设计方面所要去思索的,让自己的系统如何更加高度的可用,这是一个努力进步的目标。
书中讲到了网站的伸缩性,这代表网站可修改性的一部分吧。所谓伸缩性,是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。当年京东想要进军电子书店,开展促销活动,结果大家都知道,不仅没有让人体验到好的购书,并且服务器一直不响应,这次可以说是让刘强东和京东受到了不小的挫败,让不少人对刘强东的京东产生了一些质疑,相反同为购物网站的淘宝,服务器的运行在“双十一”都还是比较正常,其实世界上的大公司都是从一台服务器开始的,服务器对网站的处理能力,是评价网站伸缩性的重要标准,大型网站并不是从一开始就是大型的网站,都要从底层做起。《河北省重大技术需求》系统中,我感觉自己写的伸缩性就非常的差,毕竟自己以前也没有做过系统的架构,甚至没有接触过类似的知识,写的程序不是很严谨,这都是一些经验,在今后的学习中要注意程序的伸缩性,把网站的伸缩性应用到自己的程序中,来帮助自己学习。
第七章中讲到了系统的可扩展性,首先先要区别一下系统的可扩展性与伸缩性差别。可扩展性的意思是系统增加功能时,不需要修改其余的代码,这在软件设计模式中也学到了是系统的开闭原则。而伸缩性则是通过服务器来改变系统的性能,所以两者并不是一个概念。一个网站的好坏评价,可扩展性也是很重要的衡量标准。书中介绍了几个例子,微信摇一摇的功能,这是几个学生完成的,说明微信的可扩展性非常高;还有一个软件工程师,可以通过TOP来迅速构建一个购物网站,可见优秀的网站都是有很高的可扩展性。开发低耦合系统是软件设计的终极目标之一,这一目标驱动着软件的创新与发展。网站的可扩展性可以利用相关的模块不进行直接的调用来实现,这样会让新增模块或修改模块不会去影响别的模块的代码正常运行。上课时老师也一直在强调代码是否遵循开闭原则,其实我现阶段做的不是很好,代码的可用性或可修改性太差。《河北省重大技术需求》的代码我觉得模块上虽然注意了一些问题,但是代码的可扩展性仍然是太差。我觉得优秀的网站构架值得所有人去学习,通过这些架构我们才会更快地进步,当然代码的书写更是要脚踏实地的一步一个脚印的写下去,时刻注意着一些问题。
通过这三章的阅读,学到了知识,也长了见识。现阶段的主要任务就是让自己的专业技能充分提高,全面去深入的了解和学习一些系统的架构。