负载均衡的集群文件分发与下载服务设计
2018-09-10葛翔彭会湘甘朝辉
葛翔 彭会湘 甘朝辉
摘要:通过介绍通用文件服务器的功能,分析专用文件分发与下载服务器在私密性与传输方面的需求。阐述了负载与集群的概念,给出了一种负载均衡的集群的设计方案。通过对集群部署设计、负载均衡和文件传输协议等3部分进行研究,整体实现了专用文件分发与下载服务器,为超大文件、多文件、多用户和多地域的文件分发与下载服务提供了一种设计思路与实现方法。
关键词:文件服务;主动推送;集群系统;负载均衡
中图分类号:TP393文献标志码:A文章编号:1008-1739(2018)14-60-2
Design and Implementation of File Server Cluster System
GE Xiang, PENG Huixiang, GAN Zhaohui
(The 54th Research Institute of CETC, Shijiazhuang Hebei 050081, China)
0引言
當前市场上虽然存在软件即服务、平台即服务、基础设施即服务为代表的云服务,可满足企业数据的下载需求[1],但费用较高,且不能实现用户的定制需求。本系统是针对私密数据对多用户、跨地域的分发与下载需求,结合现有的相关技术,设计与实现一个在Windows服务器下运行的文件分发与下载服务。文件分发与下载服务需要包涵主动推送与用户下载2种模式,而通用文件服务例如Windows文件服务器或Server-U都不具备主动推送的功能,只能被动接受用户下载。文件分发与下载服务的用户所在的网络为广域网,包涵多级路由器和防火墙,网络环境十分复杂。用户IP对外不可见,隐藏在路由器后,所以服务器不知道用户IP,不能直接连接用户IP进行文件推送,需要提前告知用户文件服务器所在的IP,进行被动传输。已知用户需求中需要下载的文件数量众多、单个文件体量大,普通的单台文件服务器很难满足其性能要求,使用集群技术就可以大幅提高文件的下载效率。
1负载集群
集群,是2台或多台独立的计算机或节点在一个群组内共同工作,构成一个松耦合的多处理器系统,多台设备之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算。与单独的计算机单处理器相比,集群能够提供更高的可用性和可扩充性。集群中的每个节点通常都拥有自己的资源(处理器、I/O、内存、操作系统和存储器),并对自己的用户负责[2]。服务器集群就是用一组服务器作为一个整体代替单个服务器为用户提供透明服务。
在集群系统中,一个重要的机制是负载均衡机制。负载均衡是建立在现有网络结构之上,使用多台设备以对称的方式组成一个服务整体,将大量的并发访问或数据流量分担到多台节点设备进行分别处理,减少用户等待时间,有效扩展网络服务带宽,增加吞吐量,加强网络数据处理能力,提高网络灵活性和可用性的机制[3]。
2集群部署与设计
分发网络由分发调度服务、数据分发服务和数据下载客户端3个部分构成,如图1所示。分发调度服务主要功能是处理客户请求和协调数据分发服务器;数据分发服务主要功能是执行分发任务保证文件不丢失;下载客户端主要功能是申请下载任务接收文件。
在图1中,分发调度服务与数据下载服务部署在一个网络,可以灵活配置。数据下载客户端通过路由器在广域网与分发调度服务连接,由于数据下载客户端的IP隐藏在路由器后边,所以服务器并不知道连接客户端的真实地址,服务器需要仿照FTP被动连接模式的工作原理[4],即分发调度提供数据下载服务地址,由客户端主动连接并下载对应文件。此部署的优势为集群可以在防火墙后统一安全管理,客户端不用开放任何端口即可实现下载,为此需要一套基于TCP长连接协议的应用层协议。
(1)命令流程
分发调度服务是处理中心,与客户端协商好下载任务后,即可根据负载情况选择数据分发服务器。此命令流程可以使数据下载客户端与数据分发服务互不影响,只需配置一次,集群可以灵活调整,客户也可以任意地点登录,如图2所示。
图中数字序号与字母序号对应流程无先后顺序,从步骤1开始执行即为客户端发起下载流程,而从步骤2开始执行即为服务端发起推送流程,系统部署时必须至少保证有一个数据分发服务启动。
(2)负载均衡
系统采用分发调度服务、数据分发服务和数据下载客户端3层架构设计。数据下载客户端可以选择多个数据产品进行数据下载;分发调度服务可以选择多个数据产品进行主动推送,并协同安排多个数据分发服务向数据下载客户端进行数据传输,为了提高效率,要发送的数据产品可采用分布式存储,存储于多个节点。从多个分发服务同时给一个下载客户端传输文件,这样可以大大缩短文件的传输时间,同时增加传输的可靠性,有效避免网络瓶颈。为提升系统的时效性,发挥网络应用效能,系统采用负载均衡技术实现数据产品的高效分发。
负载均衡算法采用加权轮询法,较轮询法有了一定的进步,它给各节点按照相应的处理能力设定了不同的权值,使其能够接受相应权值数的服务请求。将该算法应用于请求处理的任务长度大致相同的情况时,是比较简单、高效的[5]。使用此算法保证所有服务器在工作状态,且任务数量均衡。算法实现方式为首先实现一个根据任务数量由小到大进行排序的队列,当新任务到来时使用队列中第一个服务执行此任务并将此服务移动到队列中其他相同任务数服务的末端,当有服务完成一个任务时此服务同样将移动到队列中其他相同任务数服务的末端,如图3所示。
(3)文件传输协议
为了实现超大文件传输和断点续传,需要自主研发文件协议,协议如表1所示。
通过上表的数据结构可以完成命令交互与文件传输。数据内容为文件路径与文件内容。传输文件时,报文类型为1。命令交互时,报文类型为0,命令内容如图4所示。
3结束语
目前此负载集群文件分发与下载服务已通过测试进入试用阶段。使用过程中数据分发服务器均有任务生成,多客户端、多任务下载任务正常。网络异常后,可以断点续传节省用户时间。本系统可以复用在文件传输领域,对于二次开发的使用者使用反射机制和动态加载自主设计的分发界面,具有良好的扩展性与稳定性。
参考文献
[1]李敏.中小企业云服务转换意愿实证研究[D].合肥:中国科学技术大学,2014..
[2]罗秉安,张立臣.集群系统的技术与应用[J].微型电脑应用, 2003,19(l):62-64.
[3]黄世权.负载均衡在校园网的应用[J].计算机与现代化,2009(6):124-126.
[4]周晓林,彭延昌,胡庆梅,等.基于广域网防火墙技术的FTP被动模式的文件传输[J].计算机系统应用,2006(6):83.
[5]刘恩海,李伟,张素琪,等.集群文件服务系统中的负载均衡算法的研究[J].计算机工程与设计,2013,34(8):2754-2758.