[论文摘要]分析了当前教学资源库存在的问题,设计了基于五层体系结构的网络教学资源库,并对教学资源库使用WebLogicServer群集技术实现负载均衡和故障转移的功能。
[论文关键字]群集;五层体系结构;教学资源库
1.教学资源库存在的问题
教学资源库指广义的资源库概念,它不仅包括教学资源存储功能,而且包括教学资源管理、教学资源访问、教学资源评价等功能,即广义上的教学资源共享和管理系统。目前网络教学资源库多采用传统的B/S三层体系结构,包括表示层、业务层和数据层三个部分;其主要事务是在服务器端发生,极少部分事务在前端实现;数据多采用集中存储和集中管理的模式。随着教学资源的增加以及资源需求服务的不断增长,教学资源库逐渐暴露出以下几方面的不足:
(1)负载不均。目前多数教学资源管理采用的模式是集中存储与管理。在教学资源库中多媒体素材以视频素材居多,数据流量大;校园网中数据访问时间相对集中,容易造成服务器负载不均,出现数据访问瓶颈。
(2)数据与业务耦合度高。传统的三层体系结构中,业务层承担了业务逻辑和数据库访问两大任务,造成业务逻辑与特定的数据库访问之间的高耦合,导致系统维护吃力,不利于系统业务的扩展,无法满足新的业务需求。
(3)可靠性不高。教学资源库中一旦出现服务器故障,易出现服务中断、服务可靠性不高等问题。
2.群集的概念
群集(Cluster)是一个逻辑概念,用于对用途相同的服务器实例进行分组。当其为客户工作站提供高可靠性的服务时,对客户来说是透明的;即对于外界用户来说,使用某个提供的服务时,服务器群集似乎是一个服务器。客户并不知道是哪台服务器为他提供服务群集中的应用服务器实例可以运行在同一台机器,也可以运行在不同的机器上。
群集通过在服务器的多个实例之间分配工作负载,为应用程序提供可伸缩性和可靠性。
(1)可伸缩性。群集可以在不影响应用程序运行和客户端的情况下,根据需要动态添加服务器实例到集群中,增加应用程序容量满足客户访问需求。
(2)可靠性。应用程序可以部署到集群中的多个服务器实例,由于服务器实例的选择对客户端透明,因此,即使某个服务器实例失败,不影响应用程序的继续执。
3.网络教学资源库群集部署方案
基于传统B/S三层架构的网络教学资源库存在负载不均、可扩展性不足、可靠性不高等问题。为解决这些问题,若是采用增加普通服务器,其处理能力并不能很好地解决问题;若采用高速、高性能服务器,不但价格高昂,而且不一定能满足Web服务的高强度并发处理要求。群集技术为解决这些问题提供了一种廉价有效的方案。
3.1体系结构设计
传统的B/S三层架构,如图1所示,其数据与业务耦合度高。可通过对其进一步适当分层解决各层之间的高耦合问题。分层架构具有松耦合、伸缩性、重用性和扩展性等优点,但分层同时也带来了性能影响,并增加了系统的复杂性。因此,网络教学资源库设计采用了多层体系结构,在传统三层结构的基础上增加两层,共分为五层,即表示层、Web层、业务逻辑层、数据持久层和数据层,如图2所示。
从图1和图2的比较可以看出,五层体系结构中增加的web层将应用的逻辑处理和表现相分离,使得系统具有逻辑流程清晰、功能代码复用性强、分布式部署的特点;而数据持久层位于数据库之上,隐藏数据读取和操纵中的所有数据访问代码细节,将客户应用程序与底层存储机制隔离开,完全抽象出开发应用程序时使用的数据物理细节。
3.2教学资源库主要功能模块
网络教学资源库广义上来讲是个资源共享和管理的系统,一般包括5个模块:资源管理、资源访问、资源需求、用户管理和服务管理,如图3所示。
(1)资源管理功能主要进行资源审核和资源维护工作。包括对上传资源进行审核入库;管理员对资源进行添加、删除和修改。
(2)资源访问功能主要包括用户对资源的检索、下载、评价、收藏等功能。
(3)资源需求功能主要包括资源需求请求、资源需求回复、资源交换等功能。
(4)用户管理功能主要包括用户信息管理、资源上传、已上传资源列表、用户投诉等功能。
(5)服务管理功能主要包括建议反馈、游客访问、评价管理等功能。
3.3群集设计
BEAWebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的JAVA应用服务器。WebLogic还拥有出色的集群技术,既实现了网页集群也实现了EJB组件的集群,并且不需要任何专门的硬件或者操作系统支持。
在WebLogic中域(Domain)是配置了管理服务器(AdministratorServer)的WebLogicServer实例管理的逻辑单元,在域中可以包含了多个服务器实例以及服务器群集引域和服务群集问的逻辑关系如图4所示。一个域中必须配置一台管理服务器,并且只能配置一台;而服务实例1、服务实例2、服务实例3和服务实例4可以运行于同一台机器也可以是运行于不同的机器;一个域中可以有多台物理机器。
在教学资源库中使用WebLogic群集技术,通过一组相互协作的服务实例,在多台机器间复制和应用表示层和逻辑层的能力,从而实现关键业务系统的负载分布,消除个别故障点。
(1)故障转移的实现
简单的说,故障转移是当应用程序组件正在处理某个特定作业时,某些处理任务部分由于任何原因而变得不可用已失败对象的副本将结束此作业。由于群集中的所有服务实例执行同一服务请求,同一服务在多个服务实例上同时存放,并且服务实例问可以复制状态信息。故当某个服务实例发生故障,另-N务实例可以接管,服务自动切换到正在运行的服务实例上。群集故障转移的处理对用户来说是完全透明的,用户并不知道发生了故障转移。
(2)负载均衡的实现。群集由代理来实现负载均衡。通过代理将请求转发到不同的管理服务器上来实现。代理将负载按比例分配到群集中所有的服务实例,使每个服务实例能够充分发挥其能力。群集对加入其中的服务实例的性能没有限制。并且可以在同一台机器上启动多个服务实例,充分利用机器的资源。因此,当教学资源库客户端的请求突然大幅增加时,可以通过动态增加服务实例来提高性能。
4.结束语
基于群集的网络教学资源库采用了多层体系结构设计,解决了传统三层休系结构中存在的数据与业务耦合问题,方便系统进行动态服务扩展;使用群集服务有效地实现了系统负载均衡和故障转移,并为今后教学资源库服务的变化做了更有效的准备。