首先说一下为什么这两个月又没消息了,因为这两个月忙啊。
首先是接收上半年系统分析师的证书,并完成总结。其次是九月份PMP考试(4A通过,尚需努力),然后是十一月的软考高项的考试。工作的事情就不谈了,还好没什么私人事情需要处理。所以这两个月没什么空写博客,不过接下来应该会有一些时间来写博客。
关于系统架构师这个分支,原本都打算完结了的。然后突然发现大家对系统架构师的论文比较感兴趣,并且自从我上次透露了我有一个架构师/分析师的群后,陆陆续续不断有人私信我加群。所以,就回过头,再发一篇系统架构师的论文。并打算找时间,将自己系统分析师,PMP,项目管理师的知识整理出来。毕竟在过去的一年的时间,我连续通过系统架构师,系统分析师,PMP,并完成,参加了高项(虽然目前还不知道通过没),我认为我的学习方法,知识体系等还是有一定作用的,希望对大家有所帮助。嘻嘻。
哦。差点忘了。由于我的架构师/分析师群是邀请制的,所以给你们群号,也是无法添加的。所以,如果有参加架构师/分析师的朋友,请私聊我。谢谢。
一,理论(强调一下,图片绝对清晰。如果看不清,请从新的页面打开,或者下载下来)
论文摘要:
本人于2015年11月参与浙江省某在线教育平台“外教一对一在线教育”项目,该项目为客户提供了一对一欧美外教视频教学,社交圈,公众直播等功能提供全方位的软件支撑,在该项目组中我担任系统架构师岗位,主要负责整体架构设计与中间件选型。本文以该教育平台为例,主要讨论了该系统有关可靠性方面的设计与应用,以及遇到的问题与解决方案。一方面通过负载均衡进行容错技术中冗余设计的实现,另一方面通过层次架构风格来明确系统结构体系,从而降低系统设计复杂度,提高系统可靠性。整个系统开发工作历时18个月。目前,该系统已经稳定运行近一年半的时间。实践证明,通过容错设计,降低复杂度设计等,系统有效提高了可靠性,从而为公司业务提供持续稳定的服务支撑。
正文:
随着国家对教育的越发重视,英语教育的市场份额逐步上升,其中用户口语提升的需求越来越大。为此,一些公司开始提供与外国人聊天的平台。我所在公司决定从国际通讯领域进军口语教育领域。为了这项战略转变,公司于2015年11月设计某在线教育平台系统(一下简称为“系统”)。该系统帮助人们与欧美外教进行面对面的口语交流和教学。其中随意聊提供了一种类似QQ视频通话,而正式课程还提供了H5互动课件与课后点评等,以提高教学质量。与此同时,还有公众直播用于拉新,AI测试用于评定学院能力,降低成本。我参与了该项目的开发工作,担任系统架构设计师职务,负责设计系统架构。本项目组全体成员共9人,我主要负责项目计划制定,需求分析,整体架构设计与技术选型,以及部分底层设计。该项目的架构工作与次年2月完成,选择了层次架构风格。整个项目耗时18个月,于2017年5月完成。
目前主流的可靠性设计技术有容错设计,检错设计,降低复杂度设计等技术。容错设计技术分为恢复块设计,N版本程序设计和冗余设计。其中恢复块设计是选择一组软件操作作为容错设计单元,将普通的程序块编程恢复块。N版本程序设计的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。冗余设计是在一套完整的软件系统之外,设计一种不同路径,不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。检错技术是在软件出现故障后能及时发现并报警。其缺点是不能自动解决故障。降低复杂度设计是因为软件复杂性与软件可靠性有着密切关系,是产生软件缺陷的重要根源。在设计时考虑降低软件的复杂性,是提高软件可靠性的有效方法。
在了解系统需求后,我们决定听从公司技术顾问的建议,容错设计主要应用在冗余设计方面,通过负载均衡,双机容错等机制完成冗余设计。检错设计则是通过对Java异常处理机制的设计与封装处理完成。至于降低复杂度方面,采用层次架构风格,使得系统的结构明确,立体,从而提高系统可靠性。接下来,我将从系统的冗余设计,复杂度降低设计介绍可靠性在系统中的设计与应用,以及应用过程中遇到的问题与解决方案。
1.冗余设计: