摘要:我参加了某国际能源集团公司门户网站系统提升,负责系统架构设计、安全设计。原门户网站设置了覆盖主门户、总部职能部门、专业公司和企事业单位的200多个网站群,近1万多个子站。平台建立在Sharepoint和.net framework之上,经过定制开发,实现了网站内容管理、信息报送和基本的访问统计等功能。但是随着网站内容和业务的不断增加,网站平台已经不能有效地支撑工作。需全面提升企业宣传能力、门户管控能力、平台支撑能力。升级后的门户网站增强了多终端自适应展示、全媒体内容管理、统计和搜索等基础服务。新增多渠道发布、运维服务中心等功能。
关键词:门户网站;软件可靠性
一、引言
系统可靠性是系统在规定的时间内及规定的环境条件下完成规定功能的能力,也就是系统无故障运行的概率。作为企业形象展示窗口和主要的宣传途径,门户网站系统的可靠性非常重要。因此在软件的设计阶段我们非常重视可靠性设计,遵循预防为主、早期投入、从头抓起的方针,尽可能把不可靠的因素消除在设计的早期。
二、软件可靠性研究方法
(一)概念
可靠性的设计:就是在常规的软件设计中,应用各种方法和技术使程序设计在兼顾用户的功能和性能需求的同时全面满足软件的可靠性要求。
(二)涉及软件理论
提高计算机可靠性的技术可以分为避错和容错技术。避错是预防和避免系统在运行中出错。例如软件测试就是一种避错技术;容错指系统在其某一组件故障存在的情况下不失效,仍能正常工作的特性。实现容错的主要手段就是冗余。通过冗余资源的加入,使系统的可靠性得到较大的提高。主要的冗余技术包括结构冗余、信息冗余、时间冗余和冗余附加四种。
对于软件失效后果特别严重的系统,可采用容错设计。软件容错的目的是使系统在实际运行时可以及时发现程序设计错误,采取补救措施,保证整个系统的正常运行。软件容错主要有恢复块设计、N版本程序设计和防卫程序设计等方法。恢复块方法是一种动态的故障屏蔽技术,采用后向恢复策略,他提供具有相同功能的主块和后备块,首先执行主块,结束后进行验证测试,如果没有通过验证,系统经现场恢复后下一个备用块投入运行,重复到耗尽所有的备用块。这种方法设计时应该保证实现主块和各备用块之间的独立性,避免相关错误的产生,使他们之间的共性错误降到最低限度。N版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略,她的设计思想是由N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。这种方法设计时要保证N份程序由不同的人独立设计、使用不同的方法和语言,以减少在表决点上相关错误的概率。防卫式程序设计通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去。
对于不需要在线容错或不能采用冗余设计技术的软件系统,可以采用检错技术,在软件出现故障后可以及时发现报警,提醒维护人员进行处理。降低复杂度的设计是在保证软件功能的基础上简化软件结构,缩短程序代码长度,使用合适的软件架构和设计模式,设计高內聚、松耦合的组件,降低各个组件或模块之间的关联程度,从而提供软件可靠性。
三、实验研究
(一)集群技术
我们使用了集群的方式为了提高门户网站系统运行时的可靠性。在应用层我们使用负载均衡集群,使各节点的负载流量可以在服务器集群中尽可能平均合理地分摊处理,这样的系统非常适合于运行同一組应用程序的大量用户,每个节点可以处理部分负载,并且可以在节点之间动态分配负载,以实现平衡。在数据持久化层,我们使用数据库高可用性集群,来保证集群整体服务的高可用,某个节点发生故障的情况下,由另外的节点代替它。整个系统环境对于用户是透明的。基础设施层,门户系统部署两个区域数据中心,采用1:1双活部署模式,数据实时同步,互为灾备。
(二)防卫式程序设计
内容分发阶段包括内容审核、多渠道发布及推送。为了保证门户网站的内容都是积极健康,内容在被读者可见之前都要经过校验审批,审批通过后才可以进行发布或推送到终端。发布到不同频道的内容根据其重要级别审批的层次和人员也不同,审批模块是一个独立的构件,负责将提交的审批请求提交到后台的数据库系统,提供展示页面给主管审批时参考,记录审批结果,并将审批结果反馈给审批请求来源,在将审批结果反馈这个环节可能出现临时故障,导致请求审批方接收不到审批结果。为此我们做了防卫式设计,审批结束后,再检查来源模块是否接到审批结果,如果接收成功则审批流程结束,否则将审批结果回退到审批状态,让审批人有机会重新审批。
(三)检错设计
搜索子系统建立索引时需要定时执行任务调用内容库的服务获取新发布信息的内容,这部分非常容易因为网络、权限或者是内容格式等方面的原因出现异常,从而引起任务的非正常退出,导致新发布信息无法被及时搜索到,经常需要人工干预排除阻碍任务继续执行的问题。我们的做法是针对这几种情况,做出了检测处理,如果获取URL资源时超时,那我们会重试5次,而且每次重试等待的时间加倍,减轻因为网络暂时不稳定造成的影响。如果是权限问题的话,返回的页面响应有一种固定格式,我们判定是此种格式后会跳出当前URL的处理而去进行下一条的处理。如果页面响应的格式不适约定好的信息内容,那么我们只记录原始的URL,退出信息抽取的步骤,然后进行下一条的处理。添加这些特殊情况的处理后,建立索引的定时任务能比较稳定的运行。
内容生产阶段主要包括新闻制作、多媒体处理、专题管理、文档共享、互动管理等,这些功能都涉及到并发操作,可能遇到不可预知的错误,比如数据库锁、网络故障等,我们在设计中采用高级程序语言本身的容错能力,如try-except-finally来处理程序执行中的异常情况。
四、总结
门户网站系统实际运行结果表明。我们遵循预防为主、主动防护的原则进行软件的可靠性设计十分有效。硬件、软件方面的冗余技术,带来系统的高可用性。同时,在容易发生问题的环节进行主动检查,针对不同情况进行后续处理,保证了软件的持续正常运行。
参考文献:
[1]谢少锋,张增照,聂国健. 可靠性设计. 电子工业出版社, 2017(11)
[2]陆民燕. 软件可靠性工程. 国防工业出版社, 2011(4)
[3]Doron A.Peled. Software Reliability Methods. 机械工业出版社, 2012(3)
[4]John D.Musa. 软件可靠性工程. 机械工业出版社, 2003(5)
[5]蔡开元. 软件可靠性工程基础. 清华大学出版社发行部 , 2007(5)
作者简介:
田晓岚(1980-),女,硕士,工程师,单位:中国石油信息技术服务中心。