读5.6.7章节后,对《河北省重大需求》可用性和可修改性战术的分析
我自己写的河北省重大需求征集系统,可用性为基本可用。在应用部分中,我采用了session管理,通过session管理让数据长久性的储存在了session域里面,本机可以随时调用所需变量,不会导致数据的丢失。不过,自己写的重大需求系统在服务策略上面做的不是很好、没有做到分级管理,每一个功能的优先级都是一样,这样及其容易造成故障的连锁。在超时设置方面也不是做的很好在超时的时候并没有进行提示。在调用过程中,我采用的是同步调用,即一个功能一直到头才算结束,从书中了解到,异步调用可以避免一个一步出错,然后下面全部瘫痪的问题。
在网站当中,数据是最宝贵的物质资产,采用的MySQL数据库,为了保证数据存储高可用,我采用了数据库备份机制,保证有多个副本,任意副本的失效都不会导致数据的永久丢失,从而实现了数据完全的持久化。同时数据具有可访问性,在多份数据副本分别存放在不同存储设备的情况下,如果一个数据存储设备损坏就需要将数据访问切换到另一个数据存储设备上,在完成过程中需要终止终端用户访问数据,这段时间的数据是不可以访问的。在数据多份副本的多种情况下,尽量保证了数据的一致性。在网站进行更新之后,我会对整个网站功能进行全面的回归测试,防止会影响其他功能故障的影响客户的使用。运维没有监控的网站,犹如驾驶没有仪表的飞升。所以需要进行网站监控。使用的用户行为日志收集,通过用户在浏览器上所有的操作及其所在的操作环境,包括用户操作系统与浏览器版本信息,IP地址,页面访问路经,页面停留时间等,这些数据都非常重要。采用的是服务器端日志手机,只是通过开启Web服务器的日志记录功能就可以了。在代码方面。我会习惯的通国try,catch进行包围,不至于出一点小错直接导致整个系统的崩盘,提高了一些系统的可用性。虽然在一些方面上面,具备了书中所说的高可用内容,但是还是和书中查了 好多,可用性关系到网站的生死存亡。发现自己的网页可用性还有非常非常大的提升。在书中还了解到了,可用性还和自己进入公司之后的绩效相关,如果你负责的产品出现了重大故障,CEO都会知道你的名字。事物总是先求生存,然后求发展。保证网站可用,万无一失,任重而道远。
下面来说一下可修改性。首先,可修改性的目标就是控制实现、测试和部署变更的世可修改性战术包括局部化变更,防止连锁反应和推迟绑定时间。
我用到了HTTP重定向技术。根据用户的HTTP请求计算一台真是的Web服务器地址,并将该Web服务器地址写入HTTP重定向响应中返回用户浏览器。这种方法比较简单,好用。但是性能较差,伸缩性有限,降低搜索排名。在伸缩性方面我的程序好像并不是很好,像负载均衡算法,分布式缓存集群的伸缩性设计还有数据存储服务器集群的伸缩性设计我的都没有设计到,还有关系数据库和NoSQL数据库的伸缩性设计也没有涉及到,在伸缩性方面和人家的还是有很大的差距。但是了解到伸缩性架构设计能力是网站架构师必须具备的能力,在伸缩性设计方面,我没有涉及的东西,也都初步进行了了解,明白了他们的作用。一个具有良好伸缩性架构设计的网站,其设计总是走在业务发展的前面,在业务需要处理更多访问和服务之前,就已经做好充足准备,当业务需要时,只需要购买或者租用服务器简单部署实施就可以了。架构师对网站伸缩性的把握,一线之间,天堂和地狱。
开发低耦合系统是软件设计的终极目标之一,这一目标驱动着软件开发技术的创新与反战。低耦合的系统更容易拓展,低耦合的模块更容易复用。一个低耦合的系统设计也会让开发过程和维护变得更加轻松和容易管理。我的系统在低耦合方面,仅仅是用了MVC框架,让每个系统功能和功能之间,尽量的减少联系,代码之间也尽量减少联系,让代码更容易被复用。通过JSP+JAVABEAN+SERVLET降低了系统的耦合性,但是通过阅读第七章扩展性,右后学到了许多新的东西,通过分布式方法来让系统的扩展性更强,通过设计可以扩展的数据结构来实现数据的扩展性,自己的系统和所阅读的这5.6.7章提及的知识真是相差很远,说明了自己写的系统和一个真正好的系统还有很大差距。
在一些输入框中,进行了局部化修改,对其内容进行了限定和提示,防止用户随意输入,造成预期之外的结果。
通过设置工具类,在例如一个变量进行修改之后,将他赋予一个新的工具类中的变量,所以就防止了以前修改一个变量,将会导致其跳转页面或者java文件中变量不对应而导致的系统连锁出错反应。