首先说一下为什么这两个月又没消息了,因为这两个月忙啊。
哦。差点忘了。由于我的架构师/分析师群是邀请制的,所以给你们群号,也是无法添加的。所以,如果有参加架构师/分析师的朋友,请私聊我。谢谢。
(强调一下,图片绝对清晰。如果看不清,请从新的页面打开,或者下载下来)
在了解系统需求后,我们决定听从公司技术顾问的建议,容错设计主要应用在冗余设计方面,通过负载均衡,双机容错等机制完成冗余设计。检错设计则是通过对Java异常处理机制的设计与封装处理完成。至于降低复杂度方面,采用层次架构风格,使得系统的结构明确,立体,从而提高系统可靠性。接下来,我将从系统的冗余设计,复杂度降低设计介绍可靠性在系统中的设计与应用,以及应用过程中遇到的问题与解决方案。
1.冗余设计:
2.降低复杂度设计:
再者就是降低复杂度设计,由于系统的复杂性和综合性,我们决定采用层次架构风格,将系统架构分为接入层,应用层,服务层,数据层四个层次。这里以应用层与服务层为例。应用层分为视图层与业务逻辑层,视图层负责App与网站的表现效果,业务逻辑层负责业务层的逻辑处理。为了解决系统日益复杂,应用日益臃肿问题,我们将系统按照应用横向划分,将系统划分为课件管理系统,课程管理系统等十余个子系统。如课件管理系统负责学员上课所用课件,有课件编辑,课件预览,课件交互等多个功能模块。功能模块需调用服务层的服务支撑,如课件交互模块需要调用stomp通信服务,实现学生与老师间课件的交互功能。另外,课件交互模块通过对账户服务的调用,确立课件双方的身份,从而明确双方在课件交互过程中对课件交互部分的交互权限。该划分使得系统体系变得清晰明了,极大降低系统复杂度,提高系统可靠性。应用层采用基于J2ee的MVC框架-Structs框架,主要通过Servlet和JSP技术实现。另外还有动静分离,动态资源静态化等,这里不再赘述。
这篇论文的项目,依旧是之前那片论文的项目-在线教育系统。但是其中很多技术,其实在原有项目中是没有涉及的。
另外这篇论文与之前论文存在一个结构上的不同之处,那就是这次的核心论点只有两个分论点。不过,第二个论点-降低复杂度设计,是通过两个方面进行阐述的。这也算是论文中核心论点的一种回答方式。往往论文的核心论点,推荐使用三个分论点进行论述,而部分论文的核心论点就只能拆分为两个分论点(或者,三个论点的拆分维度,自己不熟悉)。这时候就需要灵活的转变自己的思想,将核心论点的两个分论点氛围主次论点回答,实际体现就是主论点两个段落,次论点一个段落。
早期未修改的论文:
目前主流的可靠性设计技术有容错设计,检错设计,降低复杂度设计等技术。容错设计技术分为恢复块设计,N版本程序设计和冗余设计。其中恢复块设计是选择一组软件操作作为容错设计单元,将普通的程序块编程恢复块。N版本程序设计的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。冗余设计是在一套完整的软件系统之外,设计一种不同路径,不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。检错技术是在软件出现故障后能及时发现并报警。其缺点是不能自动解决故障。降低复杂度设计是因为软件复杂性与软件可靠性有着密切关系,是产生软件缺陷的重要根源。在设计时考虑降低软件的复杂性,是提高软件可靠性的有效方法。
在了解系统需求后,我们决定听从公司技术顾问的建议,在容错设计,检错设计,降低复杂度设计三个主流方向分别作出相应处理和应用。容错设计主要应用在冗余设计方面,通过负载均衡,双机容错等机制完成冗余设计。检错设计则是通过对Java异常处理机制的设计与封装处理完成。至于降低复杂度,我们应用层次清晰的四层层次架构。通过将系统划分为接入层,应用层,服务层,数据层,使得系统的结构明确,立体,从而降低系统复杂度。限于篇幅,接下来,我将从系统的冗余设计,复杂度降低设计两个方面介绍可靠性在系统中的设计与应用,以及应用过程中遇到的问题。