基于FTP协议的数据服务解决方案①李云1,2,张海明1,21(中国科学院计算机网络信息中心,北京100190)2(中国科学院大学,北京100049)通讯作者:张海明,E-mail:hai@cnic.
cn摘要:随着数据的不断积累,数据存储系统已经由单节点、小规模的文件系统演变成支持海量数据存储的分布式文件系统.
分布式文件系统中的大规模数据如何能够面向用户提供简洁、高效和稳定的数据上传下载服务成为了广泛研究的问题.
为此,本文提出了基于FTP协议的数据服务端的解决方案,该方案包括利用缓冲区、协程、多线程等技术优化传输模型和传输算法,使得数据流能进行高速传输.
同时,配合Keepalived(开源的系统高可用解决方案)与LVS实现了高可用、高并发以及良好的拓展性,在FTP协议之上修改使得服务端支持动态验证、用户隔离并兼容多种编码格式.
在实际的运行中,以中国科技云iHarbor存储系统为例,验证了本文提出方案的有效性、可靠性以及高性能的数据传输效果,可以充分满足用户的需求.
关键词:FTP协议;分布式文件系统;数据服务;海量数据存储引用格式:李云,张海明.
基于FTP协议的数据服务解决方案.
计算机系统应用,2021,30(1):63–69.
http://www.
c-s-a.
org.
cn/1003-3254/7736.
htmlDataServiceSolutionBasedonFTPProtocolLIYun1,2,ZHANGHai-Ming1,21(ComputerNetworkInformationCenter,ChineseAcademyofSciences,Beijing100190,China)2(UniversityofChineseAcademyofSciences,Beijing100049,China)Abstract:Withthecontinuousaccumulationofdata,thedatastoragesystemhasevolvedfromasingle-node,small-scalefilesystemtoadistributedfilesystemthatsupportsmassivedatastorage.
Howtoprovidesimple,efficientandstabledatauploadinganddownloadingserviceforusershasbecomeanextensiveresearchproblemindistributedfilesystem.
Tothisend,weproposeaserver-sidesolutionbasedonFTPprotocol,whichincludestheuseofbuffer,coroutine,multi-process,andothertechnologiestoimprovethealgorithmsandoptimizethetransmissionmodel,sothatthedataflowcanbetransferredrapidly.
Theproposedsolutionachieveshighavailability,highconcurrency,andgoodscalabilitywiththecooperationofKeepalivedandLVS.
ModificationstotheFTPprotocolmakestheserversupportdynamicvalidationandcompatiblewithmultipleencodingformats.
Intheactualoperation,takingstoragesystemofChinaScienceandTechnologyCloud,i.
e.
iHarbor,asanexample,theeffectiveness,reliability,andperformanceofdatatransmissionoftheproposedsolutionareverified,whichcanfullymeettheneedsofusers.
Keywords:FTPprotocol;distributedfilesystem;dataservice;massdatastorage1概述随着大数据时代的到来,分布式文件系统因其良好的拓展性、支持大规模存储而备受关注.
很多优秀的分布式文件系统也随之出现,例如谷歌的GFS[1]、计算机系统应用ISSN1003-3254,CODENCSAOBNE-mail:csa@iscas.
ac.
cnComputerSystems&Applications,2021,30(1):6369[doi:10.
15888/j.
cnki.
csa.
007736]http://www.
c-s-a.
org.
cn中国科学院软件研究所版权所有.
Tel:+86-10-62661041①基金项目:中国科学院A类战略性先导科技专项(XDA19000000)Foundationitem:CategoryAStrategyPriorityResearchProgramofChineseAcademyofSciences(XDA19000000)收稿时间:2020-05-25;修改时间:2020-06-16;采用时间:2020-06-28;csa在线出版时间:2020-12-31SystemConstruction系统建设63Facebook优化过的HDFS[2]、阿里的TFS[3]以及开源社区的明星项目CephFS[4]、GlusterFS[5].
这些分布式文件系统在实际使用过程中在拓展性、存储规模方面都表现得十分出色.
但是,在面向用户提供数据服务时相比于普通的文件系统缺少了灵活性,普通的文件系统可以通过直接搭建FTP服务来为用户提供数据服务,方便用户上传下载数据,而分布式文件系统由于其自身的局限性,无法直接提供类似的服务.
因此,就分布式文件系统如何面向用户提供高效的数据服务,本文提出基于FTP协议的解决方案——SPDScheme.
分布式文件系统向外提供数据服务接口,但是这些接口对于用户并不友好.
需要由研发人员将这些接口进行封装,使之成为方便用户使用的方式.
在工业领域,目前常用的方案是将分布式文件系统挂载到普通文件系统上,通过在普通文件系统搭建FTP服务端来向外提供服务,这种方案的优势在于快速搭建,但是劣势也十分明显,无法对分布式文件系统的特点以及用户服务做出有针对性的调整.
SPDScheme主要设计了一个基于FTP协议的独立服务SPDServer,作用于用户和分布式文件系统之间,根据分布式文件系统的高IO、高吞吐量等特点进行优化,同时根据一些用户需求进行针对性的调整.
另外通过使用一些开源技术保证服务的高可用、高并发以及可拓展性.
因此,本文提出的SPDScheme具有如下几方面的技术优势.
1)利用生成器、协程、多线程、缓冲区等技术,针对分布式文件系统的特性设计优化数据传输的模型和算法,极大的提高了数据服务的传输效率.
2)SPDServer独立于分布式文件系统,与分布式文件系统耦合程度很低,服务挂掉不会对分布式文件系统产生任何的影响.
由于利用Keepalived[6]和LVS[7]实现高可用,一台机器的服务出现问题,也不会对用户服务产生任何影响.
3)利用LVS对请求做负载均衡,实现用户请求的高并发,同时也使服务具备了非常好的拓展性,可以随着用户请求的增加,相应的增加服务节点,提高服务的响应速度以及传输速度.
4)FTP协议的认证方式是在服务启动时将明文密码配置到服务中,使用过程非常不灵活,而本文提出的SPDServer通过连接MySQL数据库,将用户登录信息和权限信息保存到数据库中,实现动态认证.
同时利用编码探测技术,分析请求中内容的编码格式,做到多种编码格式的兼容,以及针对用户体验做出的其它一些调整,对用户十分友好.
2SPDScheme总体架构SPDScheme是一个面向用户,针对分布式文件系统的数据服务解决方案,整体为C/S架构,其中核心服务SPDServer作用于用户和分布式文件系统之间,是一个相对独立的服务,旨在为用户提供简单、方便、快捷、安全的数据服务,主要由用户认证、文件操作、模式选择、编码兼容和日志收集等模块构成;另外通过Keepalived+LVS实现服务的高可用和高并发.
方案架构如图1所示.
图1方案总体架构2.
1SPDServer底层框架FTP协议建立在客户端-服务器端模型体系结构之上[8],在客户端和服务器端之间使用单独的控制和数据连接.
使用FTP协议进行数据传输,需要有FTP客户端软件和FTP服务端的软件配合使用.
优秀的客户端软件有很多,例如Flashfxp[9]、Filezilla[10]、Xftp[11]等,用户可以选择其中任意一款作为客户端使用.
FTP服计算机系统应用http://www.
c-s-a.
org.
cn2021年第30卷第1期64系统建设SystemConstruction务端工具同样层出不穷,例如Vsftpd[12]、Pyftpdlib[13]、Proftpd[14]、Twisted[15]等,这些服务端软件都有着非常好的性能表现,但是不能直接使用在分布式文件系统上,原因在于这些服务端软件都只能对接操作系统下的文件系统.
若要使得FTP服务端能够对接到分布式文件系统,可以在现有的服务端软件之上进行传输算法、传输模型以及部分功能的重构,会减少大量没有必要的重复研发,因此SPDServer底层框架的选择非常关键.
通过对几款常用服务端软件测试对比如图2.
图2多种FTP软件性能比较从测试数据中可以清楚地了解到,Pyftpdlib在上传、下载速度以及多客户端的连接和断开所用时间上都表现十分优异,因此选取Pyftpdlib软件作为SPDServer的底层框架.
2.
2高可用、高并发方案设计SPDScheme使用Keepalived实现服务的高可用,使用LVS进行负载均衡,实现服务的高并发,并保证服务可以横向拓展,在用户请求增加时,可以通过增加服务节点的数量来增大并发量.
Keepalived的优势在于通过简单的配置就可以实现高可用,使用灵活.
LVS的优势在于极强的负载均衡性能,只分发请求,不会有流量经过的特点,保证了均衡器的IO性能不会受到大规模流量的影响.
同时由于其工作在网络的传输层,上层应用协议支持广泛,FTP协议可以很好的在LVS上层工作.
3SPDServer详细设计在Pyftpdlib底层框架的基础上,SPDServer利用缓冲区[16]、生成器[17]、协程[18]、多线程[19]等技术,针对分布式文件系统的特点进行了数据传输算法和传输模型的优化.
在用户认证、文件操作、模式选择、编码兼容和日志收集方面设计了全新的管理策略.
3.
1传输算法、传输模型的优化对于评价数据服务的性能,上传文件和下载文件速度是一项重要指标.
上传文件时数据流的传输过程是客户端将文件分片发送到SPDServer,SPDserver收到分片的数据再发送到分布式文件系统,下载文件的过程与之相反.
但是这个过程中,存在着容易被忽视的问题,客户端的读写能力和吞吐量相比于分布式文件系统要小的多,如果SPDServer只是简单的接收数据片再发送到分布式文件系统,就会导致部分资源闲置以及没有必要的网络开销.
而SPDServer能够进行高速的数据传输,原因在于使用基于生成器的协议技术、缓冲区技术以及多线程技术用来解决上述存在的问题.
同时,整个数据流的传输过程,可以抽象成为生产者-消费者模型,可以把SPDServer抽象成为中间存放商品的仓库,使用生产者-消费者模型的思想对其进行优化.
利用生成器特性加快传输速度.
利用生成器,本质是一种协程的思想.
若不使用生成器,由于文件数据是分片读取或者写入,每次读取或者写入都要读取该文件对应的元数据信息,但多次查询元数据信息,极大的耗费了传输时间.
利用生成器,就可以保存查询到的元数据在生成器上下文当中,在上传文件时,通过文件操作可以返回一个生成器句柄,每次向生成器写入数据即可;在下载文件时,同样返回一个生成器句柄,每次从生成器读出数据即可.
SPDServer使用生成器避免了大量的元数据查询,在处理每个上传下载任务后可以快速恢复到服务主程序,极大地提高了传输速度.
具体算法步骤如算法1.
2021年第30卷第1期http://www.
c-s-a.
org.
cn计算机系统应用SystemConstruction系统建设65算法1.
基于协程思想的上传算法1.
DefGenerator:2.
Metadata←getMetadata()3.
WhileDATA_PIECE:4.
DATA_PIECE←yield5.
Write(Metadata,DATAPIECE)6.
DefUpload:7.
Generator←getGenerator()8.
WhileGET_DATA_PIECE()://接收数据片9.
Generator.
send(DATA_PIECE)10.
Generator.
close()在协程思想的基础上利用缓冲区加快传输速度.
文件是分片进行传输的,每一片的大小会有一个具体的值.
在上传文件时,如果数据片的大小被设置的很小,数据就会被分为更多的片,在向存储后端发送数据时,每次写入都会有时间开销,次数越多,耗费的时间也会越多.
如果数据片的大小被设置的很大,单次写入的数据越大,一个数据片耗费的时间也会越多,次数虽然变小了,但是总的时间开销依然很大.
于是数据片过大和过小都会造成时间上不必要的耗费,因此这里需要一个经验值让传输速度达到最佳状态,SPDServer采用这样的设计:在内存中开辟一片缓冲区,按数据片的顺序暂存在缓冲区,当缓冲区中数据的大小等于这个经验值时,就可以将缓冲区中的内容一起通过生成器发送到分布式文件系统中.
以字符串拼接的方案作为对比,可以更好地理解缓冲区的作用.
对分片的数据进行拼接,需要多次的赋值操作,本质是对内存的反复申请释放,产生大量的时间开销.
而对于缓冲区来说,只需要每次按顺序将数据片放入缓冲区,这样可以极大地节省反复申请内存的时间.
具体算法步骤如算法2.
算法2.
基于缓冲区的上传算法1.
DefcreateBuffer:2.
Buffer←SYSTEM_CALL()3.
returnBuffer4.
DefUpload:5.
Generator←getGenerator()6.
Buffer←createBuffer()7.
WhileGET_DATA_PIECE()://接收数据片8.
ifsizeof(Buffer)FlashFXP正确响应XFTP正确响应LFTP正确响应GFTP正确响应Filezilla正确响应Windows网络位置正确响应4.
3性能与稳定性测试性能与稳定性的测试用例主要考虑到客户端个数、文件个数、单个文件大小等因素.
测试在不同并发客户端数下,一小时可以上传或者下载的小文件数量,用于测试的小文件的大小都在几个字节左右.
客户端的数量从1个到50个.
测得的结果如图3,横坐标表示并发客户端数,纵坐标表示用时1分钟可以上传或者下载的小文件数目.
图3测试小文件上传下载情况数据统计了多个客户端传输过程中的文件累计传输数量.
可以看到,随着客户端并发数的增大,并没有过多的影响到数据服务的性能.
同时,没有出现明显的波动情况,验证了数据服务的稳定性.
在单客户端下,可以在1分钟内上传600个以上的小文件;在50个客户端同时上传的情况下,也能达到将近6000个小文件,效率很高.
测试在不同并发客户端数下,上传或者下载单个10GB大文件用时.
测试结果如图4,横坐标表示并发客户端数,纵坐标表示上传或者下载单个10GB大文件的用时.
数据统计了在多个客户端传输大文件过程中的最长用时,最短用时,平均用时.
可以看到,随着客户端的增多,数据服务的效率稍有下降,但是总的来看服务依旧是高效、稳定的.
4.
4高可用与并发量测试对iHarbor数据服务的高可用和并发测试情况如下.
在服务运行时,人为停掉一个LVS节点和一个SPDServer服务,数据服务不受任何影响.
用并发测试软件JMeter对启动单个SPDServer的数据服务进行并发测试.
在1s内并发下载100KB的文件,可以保证420个连接的高效服务,吞吐率保持在36req/s.
受硬件资源限制,本次实验测试的最大规模为10个节点.
并且在LVS支持的范围内,每增加一个新的SPDServer节点,就会增加和测试SPDServer节计算机系统应用http://www.
c-s-a.
org.
cn2021年第30卷第1期68系统建设SystemConstruction点相同的处理能力,损耗可忽略不计,可以通过增加节点的方法,增大并发量.
图4测试大文件上传下载情况5结束语随着存储技术的不断发展,越来越多的应用需要建立在方便、快捷的数据服务之上.
同时,越来越多的需求也在被用户提出来,这些需求对存储环境的拓展性、易用性和可靠性提出了更高要求.
本文提出的解决方案经过运行在真实系统上,有效性、可靠性、高效性得到验证,能够为用户提供优质的数据服务.
接下来将继续研究数据传输模型以及算法中的瓶颈,以及SPDServer中各个模块的解耦,如何根据用户需求在拓展功能时更加的方便灵活.
同时希望本文提出的解决方案SPDScheme可以应用到更多的存储系统架构中.
参考文献GhemawatS,GobioffH,LeungST.
Thegooglefilesystem.
Proceedingsofthe19thACMSymposiumonOperatingSystemsPrinciples.
BoltonLanding,NY,USA.
2003.
29–43.
1ShaferJ,RixnerS,CoxAL.
Thehadoopdistributedfilesystem:Balancingportabilityandperformance.
2010IEEEInternationalSymposiumonPerformanceAnalysisofSystems&Software.
WhitePlains,NY,USA.
2010.
122–133.
2AlibabaTaobao.
TFS.
https://github.
com/alibaba/tfs.
3WeilSA,BrandtSA,MillerEL,etal.
Ceph:Ascalable,high-performancedistributedfilesystem.
Proceedingsofthe7thSymposiumonOperatingSystemsDesignand4Implementation.
Berkeley,CA,USA.
2006.
307–320.
何华.
GlusterFS的数据分布策略与性能优化研究[硕士学位论文].
长沙:国防科学技术大学,2013.
5盛乐标,周庆林.
虚拟机环境中Keepalived虚拟IP自动漂移的研究.
电子技术与软件工程,2019,(5):153–154.
6WeiQ,XuGL,LiYL.
Researchonclusterandloadbalancebasedonlinuxvirtualserver.
InternationalConferenceonInformationComputingandApplications.
Tangshan,China.
2010.
169–176.
7GienM.
Afiletransferprotocol(FTP).
ComputerNetworks(1976),1978,2(4–5):312–319.
8苏悦.
FIashFXP使用有秘技.
电脑知识与技术,2006,(7):30–31.
9WoodraskaD,SanfordM,XuDX.
SecuritymutationtestingoftheFileZillaFTPserver.
Proceedingsofthe2011ACMSymposiumonAppliedComputing.
Taichung,China.
2011.
1425–1430.
10黄仕凰.
基于FTP协议的客户端软件开发.
科技信息,2008,(21):164–166.
[doi:10.
3969/j.
issn.
1001-9960.
2008.
21.
130]11刘陆民,董园飞.
基于vsftpd虚拟用户设置的研究与实现.
无线互联科技,2018,15(5):17–18.
[doi:10.
3969/j.
issn.
1672-6944.
2018.
05.
009]12ExtremelyfastandscalablePythonFTPserverlibrary.
https://github.
com/giampaolo/pyftpdlib.
13王钊,唐志,康征.
建立proftp服务器并实现用户访问目录控制和磁盘限额的探索与实践.
数字石油和化工,2009,(10):87–90.
14TwistedMatrixLab.
https://twistedmatrix.
com/trac/.
15LiHL,ThngILJ.
Edgenodebufferusageinopticalburstswitchingnetworks.
PhotonicNetworkCommunications,2007,13(1):31–51.
16RadoeviD,MagdaleniI.
Pythonimplementationofsourcecodegeneratorbasedondynamicframes.
2011Proceedingsofthe34thInternationalConventionMIPRO.
Opatija,Croatia.
2011.
969–974.
17SpiveyM.
Fastercoroutinepipelines.
ProceedingsoftheACMonProgrammingLanguages,2017,1(ICFP):5.
18RothA,SohiGS.
Speculativedata-drivenmultithreading.
ProceedingsHPCA7thInternationalSymposiumonHigh-PerformanceComputerArchitecture.
Monterrey,Mexico.
2001.
37–48.
19张欣艳.
流模式下FTP文件传输效率分析及改进.
智能计算机与应用,2019,9(2):126–129.
[doi:10.
3969/j.
issn.
2095-2163.
2019.
02.
029]20赵学作.
打造安全可控的FTP服务器.
网络安全和信息化,2019,(7):125–127.
21DanBlanchard.
Chardet.
https://github.
com/chardet.
22SreeTR,BhanuSMS.
Secureloggingschemeforforensicanalysisincloud.
ConcurrencyandComputation:PracticeandExperience,2019,31(15):e5143.
232021年第30卷第1期http://www.
c-s-a.
org.
cn计算机系统应用SystemConstruction系统建设69
hostsailor怎么样?hostsailor成立多年,是一家罗马尼亚主机商家,机房就设在罗马尼亚,具说商家对内容管理的还是比较宽松的,商家提供虚拟主机、VPS及独立服务器,今天收到商家推送的八月优惠,针对所有的产品都有相应的优惠,商家的VPS产品分为KVM和OpenVZ两种架构,OVZ的比较便宜,有这方面需要的朋友可以看看。点击进入:hostsailor商家官方网站HostSailor优惠活动...
如何低价香港服务器购买?想要做一个个人博客,想用香港服务器,避免繁琐备案,性能不需要多高,只是记录一些日常而已,也没啥视频之类的东西,想问问各位大佬有没有低价的香港服务器推荐?香港距大陆近,相比美国服务器最大的优势在于延迟低,ping值低,但是带宽紧张,普遍都是1M,一般戏称其为“毛细血管”。同时价格普遍高,优质稳定的一般价格不菲。大厂云梯队阿里云、腾讯云两家都有香港服务器,要注意的是尽量不要选择...
IT狗为用户提供 在线ping、在线tcping、在线路由追踪、域名被墙检测、域名被污染检测 等实用工具。【工具地址】https://www.itdog.cn/【工具特色】1、目前同类网站中,在线ping 仅支持1次或少量次数的测试,无法客观的展现目标服务器一段时间的网络状况,IT狗Ping工具可持续的进行一段时间的ping测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...
flashfxp为你推荐
TD-SCDMAsnsphpadmin下载phpmyadmin怎么安装啊?可以直接下载安装吗?还需要下载其他数据库吗?字节跳动回应TikTok易主贾斯汀比伯的confident他在mv女主说了什么,大神回复,采纳重庆网站制作重庆网站制作哪家好,重庆做网站制作的公司有谁比较了解的,应该去哪里做好些?资费标准联通所有套餐介绍购物车通过自己的体会总结购物车的作用300051三五互联请问300051三五互联还会继续盘升吗?oa办公软件价格一套专业版的oa办公系统多少钱?网站制作套餐制作一个公司网站究竟需要多少费用呢??免费代理加盟怎么开免费的代理网店
猫咪永久域名收藏地址 希网动态域名 外贸主机 网络星期一 好玩的桌面 512m内存 网站实时监控 国外网站代理服务器 个人空间申请 100m免费空间 idc资讯 169邮箱 域名评估 共享主机 世界测速 爱奇艺vip免费试用7天 美国在线代理服务器 能外链的相册 linux使用教程 drupal安装 更多