论析远程教学网络应用服务器端的体系结构设计
发布时间:2015-07-02 14:36
论文关键词:远程教学网络应用;高可靠性;扩展性;三层体系结构
论文摘要:本文分析阐述了一个远程教学网络应用的服务器端的体系结构设计.作者针对系统的总体需求,参考了目前的服务器端的先进技术,提出了系统的体系结构和各个功能层次的设计方案.这个设计满足了本系统对高可靠性,低延迟以及扩展性的要求.
一个成功的大型网络服务系统在设计中必须考虑到以下几项关键要求:高可靠性(highavailability),低延迟(lowlatency),扩展性(scalability)和安全性(security).本文基于上述要求,参考了目前多种先进的相关技术,提出了一个远程网络教学系统的体系结构规划和设计方案.
1系统功能,设计宗旨和总体结构
本系统主要提供远程教学所需的学生在线注册、记录管理、远程教学课件、课堂讨论、作业提交、教师答疑以及在线测试等主要功能,所有这些功能都通过互联网络来完成.系统处理能力的设计目标是要能够支持多达10000注册学生和每天不少于百万级的访问量.
本系统的一个设计宗旨是不采用高端或专用计算机,而是使用通用计算机硬件系统.这主要是依据所谓横向拓展(scale-out)的思想,而不是纵向拓展(scale-up).也就是说系统在整体上要能够使用分布式并行处理技术,把系统负荷合理分配到多台对等的服务器上.这样更有利于系统的扩展性,甚至可以构建出有成千上万个服务器结点的集群(clustering)来提供超强的数据处理能力.这也是所谓云计算技术(cloudcomputing)的核心思想之一。www.lw881.com
本系统的主要操作系统平台选择开放的linux系统.依据系统的性能目标和扩展性的要求,本系统总体结构采用了如图1所示的三层结构(three-tierarchitecture)的设计.
这样的分层结构有效的划分了系统功能,每个层次的功能都相对独立,这样既有利于对各个层实施有针对性的优化策略,也简化了整体维护的复杂度,是目前复杂网络应用经常采用的设计,二.本文的重点是要对这个远程教学系统在体系结构层次进行分析和讨论,而不涉及各层软件系统的具体实现.下面对各层所要解决的问题,设计的策略和技术展开进一步讨论.
2网页层的设计
网页层的任务是受理师生从网页浏览器所提交的请求,并最终发给用户所需的内容.网页服务器(webserver)是其核心,本系统选用了目前全世界使用最广泛的apache服务器,同时又采用了代理服务器(proxy)和缓存(caching)的技术.
网页层向用户所提供的内容大致可以分为静态(static)内容,与动态(dynamic)内容,近几年涌现的多个内容分布网络(contentdistributionnetworks)主要就是针对静态内容的.本系统的静态内容相对总体内容比例较大.针对这些特点,本设计在网页服务器前加上经过作者软件强化后的反向代理服务器(reverseproxy),它具备以下功能:
1)缓存(caching)内容.由于静态内容很少需要更新,所以使用缓存技术可以把它们存储于代理中.用户对静态内容的请求大都由代理直接处理后返回给用户,这样就大大减少了网页服务器的负荷,有效地满足了用户低延迟的要求.这里决定缓存效率的是其替换算法(replacementalgorithm),作者对lru算法加以改进,考虑了文件大小和取用频率的因素,更适合教学系统的特点.另外,使用支持esi(edgesideincludes)语言的反向代理,缓存也可以有效分担部分动态内容对网页服务器带来的负荷,明显提高系统对动态内容的处理速度.本设计还进一步参考了其它动态内容的提速技术,对动态网页碎片(pagefragments)在网页服务器内也进行了缓存.
为了进一步证明本设计的效果,作者设计了一个针对静态内容的实验,使用hploadrunner软件来模拟500学生用户同时连续访问随机的静态网页.实验结果如图2所示,其中点画线为未使用反向代理,实线为使用反向代理.它显示在使用改良过的反向代理后,网页反应时间由平均约36ms降到了只有约6ms,系统功能的提升是很显著的.
3)安全保护.反向代理是系统第一个安全保护环节,但不是唯一的.它加人了人侵攻击(intrusionattack)和协议攻击(protocolattack)的检测和防护.除此以外,使用代理还可以有效的”隐藏”网页服务器集群,增加了针对特定网页服务器版本进行攻击的难度.
对于现有的很多网络应用而言,网页层是其运行的瓶颈,而上述的反向代理加网页服务器集群的设计则解决了这个问题.
3应用层的设计
考虑到本教学系统的相对复杂度以及扩展新功能的需求,使用应用层是很必要的.应用层的主要任务是实现商务逻辑,它根据网页层传递的用户指令并在需要时从数据库层查询数据,从而完成整个系统的核心控制功能.本系统的应用层采用了无状态(stateless)的设计原则,这简化了应用服务器集群扩展的步骤.
为了更加高效地利用应用服务集群,应用层和网页层的接口也加人了负载平衡的机制.本系统的应用服务器集群采用的是基于企业服务总线(enterpriseservicebus)的结构,集群的成员共享服务总线上的指令队列来达到负载平衡的效果.这样的设计也避免了单点失败.
应用层的另外一个关键环节是和数据层的接口.由于网页层和应用服务集群都做了优化,消除了瓶颈,而且无状态的设计对数据库的要求相对于有状态的设计要高,数据库层很可能因此而成为整个系统的瓶颈.为此,在应用层和数据层的接口中,要使用分布式的缓存(distributedcache)来优化数据库的存取.这个数据库缓存具备数据复制功能,能够保证所有的应用服务器的数据同步.有了这样数据库缓存的应用层就提高了系统数据的整体存取速度,有效的降低了数据库层的负担.
应用层还要提供比网页层更进一步的系统安全功能.它主要是针对那些非人侵性的攻击,也就是那些单个请求都看似合法却是数量庞大能耗尽系统资源的攻击,一个典型的例子就是分布式拒绝服务(distributeddenial—of—service)攻击.本系统采用的策略是对用户会话进行以统计分析为基础的实时行为评估,对于那些可疑的用户会话加以系统资源分配限制,可疑度越高分配给它的资源就越少,对于被确认的攻击者则完全拒绝其访问.这个策略可以有效地保护系统,又可以避免错误地拒绝用户的合法访问.
4数据库层设计
数据库在本系统中是至关重要的.本设计主要采用数据冗余(dataredundancy)的策略,也就是利用数据库服务器的集群技术和数据自动复制功能来实现高可靠性:集群中的数据库节点相互复制数据以达到数据的同步,这样由于每个数据都有多个备份,集群中任何单个数据库的失败都不会造成数据的丢失.其次,它应有快速的处理功能和易扩展j胜,本系统采用数据划分(datapartition)策略来实现这个要求.
5总结和扩展
综上所述,本文介绍了一个远程网络教学系统的体系结构设计,重点讨论了各个功能层在运行中要解决的问题和实现的策略及技术,提出了满足系统功能目标的方案.然而在系统实际部署时,还可能遇到新的问题和要求.比如,为了进一步提升系统的可靠性,很多大型网络应用还要把服务器集群部署在多个不同城市和地区,而且它们往往还在网页层的反向代理前再加一个接人控制模块,使用轮流dns(roundrobindns)技术进行服务负荷分配·但是,这样的部署会对各个部署点之间的数据同步提出新的要求.在系统中建立自我管理(self-management)的机制,是本系统下 一步的扩展目标.
论文摘要:本文分析阐述了一个远程教学网络应用的服务器端的体系结构设计.作者针对系统的总体需求,参考了目前的服务器端的先进技术,提出了系统的体系结构和各个功能层次的设计方案.这个设计满足了本系统对高可靠性,低延迟以及扩展性的要求.
一个成功的大型网络服务系统在设计中必须考虑到以下几项关键要求:高可靠性(highavailability),低延迟(lowlatency),扩展性(scalability)和安全性(security).本文基于上述要求,参考了目前多种先进的相关技术,提出了一个远程网络教学系统的体系结构规划和设计方案.
1系统功能,设计宗旨和总体结构
本系统主要提供远程教学所需的学生在线注册、记录管理、远程教学课件、课堂讨论、作业提交、教师答疑以及在线测试等主要功能,所有这些功能都通过互联网络来完成.系统处理能力的设计目标是要能够支持多达10000注册学生和每天不少于百万级的访问量.
本系统的一个设计宗旨是不采用高端或专用计算机,而是使用通用计算机硬件系统.这主要是依据所谓横向拓展(scale-out)的思想,而不是纵向拓展(scale-up).也就是说系统在整体上要能够使用分布式并行处理技术,把系统负荷合理分配到多台对等的服务器上.这样更有利于系统的扩展性,甚至可以构建出有成千上万个服务器结点的集群(clustering)来提供超强的数据处理能力.这也是所谓云计算技术(cloudcomputing)的核心思想之一。www.lw881.com
本系统的主要操作系统平台选择开放的linux系统.依据系统的性能目标和扩展性的要求,本系统总体结构采用了如图1所示的三层结构(three-tierarchitecture)的设计.
这样的分层结构有效的划分了系统功能,每个层次的功能都相对独立,这样既有利于对各个层实施有针对性的优化策略,也简化了整体维护的复杂度,是目前复杂网络应用经常采用的设计,二.本文的重点是要对这个远程教学系统在体系结构层次进行分析和讨论,而不涉及各层软件系统的具体实现.下面对各层所要解决的问题,设计的策略和技术展开进一步讨论.
2网页层的设计
网页层的任务是受理师生从网页浏览器所提交的请求,并最终发给用户所需的内容.网页服务器(webserver)是其核心,本系统选用了目前全世界使用最广泛的apache服务器,同时又采用了代理服务器(proxy)和缓存(caching)的技术.
网页层向用户所提供的内容大致可以分为静态(static)内容,与动态(dynamic)内容,近几年涌现的多个内容分布网络(contentdistributionnetworks)主要就是针对静态内容的.本系统的静态内容相对总体内容比例较大.针对这些特点,本设计在网页服务器前加上经过作者软件强化后的反向代理服务器(reverseproxy),它具备以下功能:
1)缓存(caching)内容.由于静态内容很少需要更新,所以使用缓存技术可以把它们存储于代理中.用户对静态内容的请求大都由代理直接处理后返回给用户,这样就大大减少了网页服务器的负荷,有效地满足了用户低延迟的要求.这里决定缓存效率的是其替换算法(replacementalgorithm),作者对lru算法加以改进,考虑了文件大小和取用频率的因素,更适合教学系统的特点.另外,使用支持esi(edgesideincludes)语言的反向代理,缓存也可以有效分担部分动态内容对网页服务器带来的负荷,明显提高系统对动态内容的处理速度.本设计还进一步参考了其它动态内容的提速技术,对动态网页碎片(pagefragments)在网页服务器内也进行了缓存.
为了进一步证明本设计的效果,作者设计了一个针对静态内容的实验,使用hploadrunner软件来模拟500学生用户同时连续访问随机的静态网页.实验结果如图2所示,其中点画线为未使用反向代理,实线为使用反向代理.它显示在使用改良过的反向代理后,网页反应时间由平均约36ms降到了只有约6ms,系统功能的提升是很显著的.
2)负载平衡(loadbalancing).反向代理根据每个网页服务器当前的负载,把用户请求分配到负载相对轻的服务器上.这不仅提高了系统的处理能力和缩短了反应时间,而且还可以有效提高系统可靠性,避免单点失败.另外,本系统平衡负载功能在处理用户会话(session)时,采用了粘连式的(sticky)平衡负载策略,从而减少了系统复杂度和由此带来的额外开销.
3)安全保护.反向代理是系统第一个安全保护环节,但不是唯一的.它加人了人侵攻击(intrusionattack)和协议攻击(protocolattack)的检测和防护.除此以外,使用代理还可以有效的”隐藏”网页服务器集群,增加了针对特定网页服务器版本进行攻击的难度.
对于现有的很多网络应用而言,网页层是其运行的瓶颈,而上述的反向代理加网页服务器集群的设计则解决了这个问题.
3应用层的设计
考虑到本教学系统的相对复杂度以及扩展新功能的需求,使用应用层是很必要的.应用层的主要任务是实现商务逻辑,它根据网页层传递的用户指令并在需要时从数据库层查询数据,从而完成整个系统的核心控制功能.本系统的应用层采用了无状态(stateless)的设计原则,这简化了应用服务器集群扩展的步骤.
为了更加高效地利用应用服务集群,应用层和网页层的接口也加人了负载平衡的机制.本系统的应用服务器集群采用的是基于企业服务总线(enterpriseservicebus)的结构,集群的成员共享服务总线上的指令队列来达到负载平衡的效果.这样的设计也避免了单点失败.
应用层的另外一个关键环节是和数据层的接口.由于网页层和应用服务集群都做了优化,消除了瓶颈,而且无状态的设计对数据库的要求相对于有状态的设计要高,数据库层很可能因此而成为整个系统的瓶颈.为此,在应用层和数据层的接口中,要使用分布式的缓存(distributedcache)来优化数据库的存取.这个数据库缓存具备数据复制功能,能够保证所有的应用服务器的数据同步.有了这样数据库缓存的应用层就提高了系统数据的整体存取速度,有效的降低了数据库层的负担.
应用层还要提供比网页层更进一步的系统安全功能.它主要是针对那些非人侵性的攻击,也就是那些单个请求都看似合法却是数量庞大能耗尽系统资源的攻击,一个典型的例子就是分布式拒绝服务(distributeddenial—of—service)攻击.本系统采用的策略是对用户会话进行以统计分析为基础的实时行为评估,对于那些可疑的用户会话加以系统资源分配限制,可疑度越高分配给它的资源就越少,对于被确认的攻击者则完全拒绝其访问.这个策略可以有效地保护系统,又可以避免错误地拒绝用户的合法访问.
4数据库层设计
数据库在本系统中是至关重要的.本设计主要采用数据冗余(dataredundancy)的策略,也就是利用数据库服务器的集群技术和数据自动复制功能来实现高可靠性:集群中的数据库节点相互复制数据以达到数据的同步,这样由于每个数据都有多个备份,集群中任何单个数据库的失败都不会造成数据的丢失.其次,它应有快速的处理功能和易扩展j胜,本系统采用数据划分(datapartition)策略来实现这个要求.
5总结和扩展
综上所述,本文介绍了一个远程网络教学系统的体系结构设计,重点讨论了各个功能层在运行中要解决的问题和实现的策略及技术,提出了满足系统功能目标的方案.然而在系统实际部署时,还可能遇到新的问题和要求.比如,为了进一步提升系统的可靠性,很多大型网络应用还要把服务器集群部署在多个不同城市和地区,而且它们往往还在网页层的反向代理前再加一个接人控制模块,使用轮流dns(roundrobindns)技术进行服务负荷分配·但是,这样的部署会对各个部署点之间的数据同步提出新的要求.在系统中建立自我管理(self-management)的机制,是本系统下 一步的扩展目标.