基于分布式架构的艺术类资源云平台建设研究
2018-06-07周凯李弘褚宁琳
周凯 李弘 褚宁琳
摘要:当前智慧化校园建设正响应时代的需要处于高速发展时期,如何建设一套高性能、可扩展的网络教育资源平台,特别是建设基于艺术类学科以非结构化数据为主的云资源平台是一个迫切需要探讨研究的问题。文章从实际出发,针对当前资源平台建设技术的突出问题和艺术类资源特点,提出基于云计算的分布式架构的资源云平台建设方案。建立一套基于云计算的分布式架构、分散存储、统一管理的系统平台,以实现艺术类资源的共建共享。
关键词:分布式;资源;云;负载均衡
分布式系统早在20世纪七八十年代就已经出现。进入互联网时代,分布式系统得以高速发展。如Google,它充分运用分布式系统架构的设计思想及技术,构建了一套系统完整的软件架构,使其具有可以处理高并发请求响应以及海量数据处理等能力。本文基于云计算平台的基础上,结合艺术类资源云平台的特点,及非结构化数据的处理,采用分布式系统架构技术,探讨一套先进的,适用于多种云架构形式的艺术类资源云平台部署方案。
1 分布式服务系统概念
分布式服务系统就是将系统组件分布在几台独立的服务器上,而后把各服务器连接成一个统一的网络相互协作,从而完成整个系统的功能。
分布式结构在系统速度的处理上有着明显的优势。各系统功能分别放在不同的服务器上以并行的方式协同工作,完成各自的功能。例如:在一台服务器上运行两个进程:A和B,如果A消耗系统资源(CPU或者内存)过高,则B只能使用少量的系统资源,这样会导致进程B的效率低下。如果我们把A拆分到其他服务器上,那么除去A之外,原硬件服务器上其余的进程就能够获得更多的系统资源。通过多线程操作一个进程A,如果将其分为4个任务,2分钟时间完成一个任务。非分布式结构系统将要花费8分钟来完成,而采用分布式结构最快则需要2分钟即可完成。
典型分布式服务器架构由3部分组成:表现层、业务层、数据层。表现层主要负责用户与业务层之间的连接和数据的传递与处理,在整个系统中工作相对来说比较简单。业务层是系统核心层。负责各功能模块之间的运行通讯及数据的处理。数据层则主要负责数据的存储。
从上述典型分布式架构可以得出,由于各部分所承担的任务不同,对硬件的要求也是有所区别,所以我们可以根据每层具体的工作,因地制宜地选择相应的服务器。如表现层负责的工作相对比较简单,在服务器的配置上可以根据实际情况选择实用经济型的;业务层负责整个资源云平台的业务逻辑与数据处理,注重处理的速度、能力与资源的消耗。对服务器配置选择上要求很高;数据层负责数据源。在搭建时要根据具体情况,充分考虑数据量、数据查询检索的要求及数据存储的速度等因素,选择相应的数据库与服务器配置。
2 艺术类资源云平台设计目标
2.1高稳定
保证服务器群组稳定高效运行,服务器之间的通信顺畅及负载均衡。尽可能降低服务器异常崩溃、宕机的情况,确保资源云平台提供的服务与用户体验的基本要求。
2.2高效率
高效率体现在工作效率高、系统承载能力强、成本得到有效控制,可根据实际服务器的功能配置相应的服务器以节约成本,减少带宽与维护人员。
2.3可扩展
云平台建设应充分考虑內容及功能模块的可扩展性,使平台服务具有可持续性;服务器集群具有周期性更新的扩展能力,并能应对用户人数的增长与运营后期用户在线留存率的保持。
2.4低耦合
充分降低各功能之间的耦合度,将各功能模块分别在独立的服务器上运行,保障各功能运行的独立性。
2.5安全性
安全是资源云平台运营中最重要的问题之一。为保障用户信息安全,需建立严谨科学的身份验证机制,使用安全套接协议层或高度加密协议反嗅取密码,是有效的应对措施,以解决用户误操作、欺骗、重复登录、密码恢复等安全问题。
3 分布式架构的艺术类资源云平台设计
艺术类资源云平台设计以云计算技术为基础,构建一套基于B/S架构的云平台。平台主要包含:Web Server、登录服务器(Login Server)、网关(Gateway Server)、业务逻辑服务(Scene Server)、数据服务(DB Server)等。拓扑结构如图l所示。
系统整体架构中除业务逻辑服务器采用单线程外,消息层则采用多线程来工作。对于客户端与登录服务器、Gateway之间的连接任务具有如下特点。
(l)需要大量线程完成的任务。此类任务数量多,单位任务小,完成时间短。如:客户端通过Web服务器访问网页注册、登录任务。
(2)性能要求过高的业务应用,如:需服务器迅速响应大规模客户的突发性请求现象。
(3)大规模客户突发性请求,会导致内存在短时间内达到峰值,出现“Out of Memory”错误。可以利用多线程技术来解决处理器单元内多个线程执行的问题,它可以显著地减少处理器单元的闲置时间,增加处理器单元的吞吐能力[1]。若要进一步减少创建线程的数目,及创建线程与销毁的时间,也可以建立封装了一个线程多个连接的线程池框架,示例如下。
class TCPTaskPooI
{
ThreadGroup verifyThreads;//验证线程,可以有多个
ThreadGroup okayThreads;//处理主线程,多个
SyncThread* syncThread;//等待同步线程
RecycleThread* recycleThread;//连接回收线程
bool m versionVerified;//是否验证过版本 }
3.1网关(Gateway)
Gateway服务器也称网关服务器。按图1所示,Gateway建立在客户端与业务逻辑服务器(Scene Server)中间。其任务在于实现客户端与业务逻辑服务器的隔离。客户端与业务逻辑服务器之间的通信,通过中间层Gateway进行转发数据包实现信息交互通信。这样客户端与Scene Server由于不直接通信所以并不需要知道业务逻辑服务器内部的构建如IP、port等。带来的好处是多方面的:安全上Gateway作为客户端与业务逻辑服务器之间的中转站,很好地隔离了内网与外网,使外网不能直接与业务逻辑服务器内部作访问,加强了安全性。作为平台的唯一入口,减少了与平台服务器内其他服务之间的多条连接。很大程度上节约了网络资源的消耗。
Gateway负责通信的加密、解密、过滤错误非法包、超时判断与通信协议的逻辑处理。连接在网关上的客户端通过Gateway发送的心跳,获知客户端与网关之间的连接状态,如果客户端掉线,网管就会通知各服务器做用户的脱机、下线处理。
对于高负载下的通信瓶颈问题,可以采取多网关技术,同时部署多个Gateway来增加通信流量,达到平衡负载的作用。即便某个Gateway出现宕机,它也只影响到所属Gateway的客户端,而其他客户端则不受影响。
Gateway作为客户端与平台各服务的进出口,承担着频繁的消息发送和接收工作。为提高系统效率,可以采取一种“以空间、换时间”的做法,采用“池”技术,建立一个消息对象池。“池”的技术己广泛应用于系统设计中,例如内存池、数据库连接池。“池”的优势在于节省对象重复创建和初始化时间,对于频繁请求和使用的对象,简化访问和使用的过程,从而提升系统的性能。首先事先创建好被使用的对象,并按照特定的上下文环境进行初始化,保证客户端提取后可直接使用,使用完毕后将对象归还给“池”。当系统达到生命期的临界值,由“池”统一释放。这些保存在内存中随时供客户端调取的对象,所占用的内存空间与系统效率相比微乎其微。
3.2业务逻辑服务(Scene Server)
业务逻辑服务主要提供具体的业务逻辑,如:流媒体播放服务、会话交互服务、软件下载等。它们共同完成平台逻辑的运算和大量的信息传递、数据同步工作。
在做好各子模块的交互、信息传递工作的同时,要重点考虑两个问题:一是服务器的性能消耗问题。这里首先要考虑的是服务器承载多个子模块的信息通信与逻辑处理带来的性能消耗。二是基于流媒体服务的并发问题。前者我们通过把消耗资源过大的非共性的子系统单独划分服务处理。后者在解决大并发应用设计上,可以建设一套非结构化数据中心的负载均衡,如图2所示。
搭建主流媒体服务及若干台子流媒体服务可通过负载均衡及数据分发技术,由主流媒体服务器自动把上传资源分发到相应的子流媒体服务器的存储空间上。系统依据流媒体服务器的网卡流量大小进行负载均衡,通过数据中心的调度服务,判断由哪一台流媒体服务器响应当前上层应用系统的数据应用请求,并從对应的存储空间读取数据,为上层应用系统提供数据资源的流媒体播放服务。由于服务器的网卡及存储设备的磁盘I/O存在局限,所以上述方式会对服务器及存储设备占用较多。为了能最大化提升单台服务器的服务能力,并降低整体硬件设备的投入,可以对服务器做多网卡绑定,来提升单台服务器的网络带宽。配备高速率硬盘提升磁盘的I/O效率,从而提升单服务器的流媒体并发访问量。具体设计如图3所示。
3.3 Session Server
Session Server主要负责Scene与Scene之间的桥接,完成多个Scene之间的数据交互。
当用户过多,Scene Server负载过高时,分出多组SceneServer可以有效地提高业务逻辑的处理能力,Session Server则用于多个Scene Server之间的数据交互。
Scene Server与Session Server服务器之间的通信使用TCP连接:在Scene Server初始化的过程中,首先建立Session Client实例,将该实例连接Session Server,从而实现Scene Server与Session Server之间的连接。连接的基本策略是将其中一个Server抽象成服务器,另一个Server抽象成客户端。
Session Server与Scene Server通信时,Session Server层次级别高于Scene Server,所以抽象Session Server为服务器,Scene Server为客户端。Scene Server中建立一个SessionClient类与Session Server的一个SessionTask保持长连接。每次建立的通信则为SessionTask与SessionClient之间的通信。示例如下:
bool SessionClient: :connectToSessionServer()
if (!connect()) {
Eagle: :logger->error("连接 Session服务器
return false;
}
//发送到SessionServer进行注册;
Cmd: : Session: :t_LoginSessionServer crnd;
cmd.serverID = SceneService::getSingleton().getServerID();
cmd.serverType = SceneService::getSingleton().getServerType();
return sendCmd(&cmd.; sizeof(cmd));}
4 艺术类数据资源建设
艺术类数据资源具有一定的独特性,即主体为非结构化数据。所以基于这样的特殊性,需要秉承数据驱动服务的理念,统一数据标准,集中式、流程化、科学地处理非结构化与结构化数据。
艺术类资源数据类型多样,所以对每类资源进行标准化时,需从多维度定义属性,从而处理数据之间的异构化,完成数据清洗,对关联数据进行逻辑封装。数据的管理采取世系技术,对产生的多个数据集及同一数据集内部的数据演化进行系统记录及管理[3]。这种数据世系管理技术可以帮助用户加深对结果的理解,为教学科研的研究者提供整体活动的可信度及可重复性,为大数据分析及数据挖掘提供系统、准确的判断。在出现故障时,结合容灾备份机制,也可以准确、快速地恢复。
5结语
本文从实际问题出发,经过理论研究,利用云计算技术、分布式系统架构技术及思想,给出一套系统的分布式架构的艺术类资源云平台的建设方案。本方案有效地提高了整体平台的逻辑运算处理、负载均衡的能力,特别是上层应用系统对非结构化数据资源的流媒体播放、存储服务给出了优化办法,实现高性能、多样化、可扩展的艺术类资源云平台建设。
[参考文献]
[1]朱彬若,杜卫华,李蕊.电力用户用电信息采集系统数据分析与处理技术[J]华东电力,2011 (10):1682-1686
[2]王军.云计算系统资源调度及安全性研究[D].武汉:武汉理工大学,2013.
[3]高明,金澈清,王晓玲,等.数据世系管理技术研究综述[J].计算机学报,2010 (3):33