一种数据下载系统及方法_2

文档序号:8383849阅读:来源:国知局
的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0044]本发明实施例首先提供了一种数据下载系统,其示意图如图3所示。在该系统中,包括多个下载集群(图中仅示出一个下载集群),每个下载集群中都包括LVS(LinuxVirtual Server, Linux虚拟服务器)、至少两个下载节点Nginx以及一个HDFS(HadoopDistributed File System,分布式文件系统),其中,Nginx所运行的操作系统通过FUSE (Filesystem in Userspace,用户空间文件系统)挂载HDFS的存储服务。
[0045]为了便于理解本发明实施例,下面首先对HDFS、LVS、Nginx以及FUSE进行简单地介绍。
[0046]HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。正是由于HDFS具有上述特点,本发明实施例试图将HDFS应用到在线的下载服务中,并提供相应的解决方案。当然,在现有技术中,HDFS 一般用于线下的数据存储,尚未有将HDFS应用于在线的数据下载架构中的应用。
[0047]LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS采用IP负载均衡技术和基于内容请求分发技术,其调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器能够自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
[0048]Nginx是一个高性能的HTTP和反向代理服务器,在高连接并发的情况下,Nginx是一个不错的选择。
[0049]FUSE是Linux操作系统中的概念,指完全在用户态实现的文件系统,用于挂载某些网络空间,到本地文件系统的模块。传统上操作系统在内核层面上对文件系统提供支持,而通常内核态的代码难以调试,生产率较低;但在利用了 FUSE之后,能够大幅提高生产率,简化为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。
[0050]基于上述特点,本发明实施例提供了一种新型的数据下载系统。其中,在每个集群内部,数据通过HDFS进行存储,集群最外层暴露LVS虚IP向用户提供服务,也即,由LVS接收用户的下载请求;并且LVS在接收到用户的下载请求之后,会对各个Nginx进行调度,选择合适的Nginx,并将用户的下载请求转发给该选中的Nginx。Nginx在接收到用户的下载请求之后,就可以通过FUSE访问HDFS中存储的数据,以此来响应用户的下载请求。其中,LVS具体在对Nginx进行调度时,可以依据各个Nginx的性能(包括服务器的硬件性能指标等)和/或当前负载状况进行,选择出性能和/或当前负载状态符合预置条件的Nginx,并将用户的下载请求发送给该Nginx即可。
[0051]通过上述系统架构,可以使得本发明实施例提供的数据下载系统具有以下特点:
[0052]第一,由于在下载系统中应用了 HDFS,因此,使得单个下载集群能够提供百TB级别存储,可通过简单的插拔方式增加存储服务器,提高存储能力,满足大存储数据量的需求;同时,由于不使用硬件RAID卡,而是通过HDFS服务对各磁盘进行并行读取,因此,可以实现单机各磁盘独立读取,能够很好地满足用户访问无热点、文件读取分散的高I/O需求,并提高数据吞吐量。实验数据显示,在使用12块7200转SATA盘的情况下,单机的总1PS可达1000以上;最高可实现单机15000以上的并发连接,IGb以上的带宽吞吐。
[0053]第二,由于每个集群仅将LVS暴露给用户,因此,使得每个集群具有高内聚的特点,也即,如果某个或某些Nginx由于发生故障等无法向外提供服务,可以通过LVS在集群内部予以解决(例如,可以对后端Nginx进行可用性监控,对异常Nginx进行秒级摘除等),不会影响到其他的集群。
[0054]第三,可以直接由LVS在集群内部进行负载均衡。
[0055]第四,由于每个集群内容都对数据进行了存储,因此,可以实现数据在不同集群间的完全冗余,可以保证能够快速地进行流量调度与切换。
[0056]第五,采用上述结构,可以很容易的实现对系统的扩展。例如,若发现前端LVS的网络性能成为瓶颈,可增加独立的LVS服务器或在现有服务器上增加网卡,快速实现性能扩展;若数据存储空间不足、或下载服务不能满足需求,可简单通过增加HDFS的数据节点进行存储空间及下载服务性能扩展,相应的,HDFS会自动完成新节点的数据同步。
[0057]由于可以对系统进行扩展,因此,在实际应用中,LVS可以是多个。例如,在图3所示的示意图中,LVS可以为两个,同时向用户提供下载服务。此时,这两个LVS可以互为主备,每个LVS通过一个处于主模式的虚IP向用户提供下载服务,同时存在一个处于备用模式的虚IP ;当一个LVS无法提供服务时,另一个LVS通过启动所述处于备用模式的虚IP来接管该LVS的下载服务。通过这种机制,进一步保证了单个集群内部的高可靠性,避免由于LVS出现故障导致下载服务的失败。
[0058]此外,HDFS还具有以下特点:HDFS是一个主从结构的体系,一个HDFS集群是由名字节点(NameNode,NN)和数据节点(DataNode,DN)组成,名字节点是一个管理文件的命名空间和调节客户端访问文件的主服务器,数据节点用来管理存储。换言之,名字节点操作文件命名空间的文件或目录操作,如打开,关闭,重命名,等等,它同时确定数据与数据节点的映射。数据节点来负责来自文件系统用户的读写请求,同时还要执行数据的创建,删除,和来自名字节点的数据复制指示。其中,名字节点和数据节点都是软件运行在普通的机器之上。
[0059]在实际应用中,为了实现硬件资源的充分利用,降低系统规模,提高系统的维护性,各个服务在物理上可以通过以下方式进行部署:
[0060]参见图4,HDFS的名字节点(NN)服务与LVS服务进行服务器的复用,例如,图4中,当存在两个LVS时,系统中也可以同时存在两个名字节点。也即,在名字节点上部署数据同步客户端,并部署FUSE挂载HDFS,通过FUSE向HDFS更新数据。在下载服务过程中,名字节点仅响应集群内部少量的RPC请求,负载很低;LVS服务属于CPU与网络密集型服务,但效率很高,因此,这样进行复用,能够充分利用系统资源且不会对HDFS服务产生影响。
[0061]另外,如图4所示,每个数据节点可以与一个Nginx复用一台服务器,也即,在每个数据节点(DN)上部署FUSE和Nginx提供下载服务。此时,每个数据节点中存储的数据都可以是全部的数据,并且Nginx的数目与数据节点的数目可以是相同的,也即,在一个集群内部的各个不同的下载节点之间,也可以实现数据的完全冗余。总之,这种机制可以进一步提高系统的可靠性,同时,得益于HDFS的特性,对HDFS数据的绝大多数请求都直接访问本机的HDFS服务,不会发生跨机访问,因此,可以提高响应速度,规避内网传输瓶颈。当然,在实际应用中,在不同的Nginx之间,也可以实现数据的部分冗余。
[0062]需要说明的是,LVS具有两种路由模式,一种是NAT模式,另一种是DR(DirectRouting)模式。在本发明实施例中,LVS可以工作于DR模式,在这种模式下,入流量(用户请求)通过LVS,但出流量(响应数据)可以直接从后面的数据节点返回,不再流经LVS。这样可以避免NAT模式中,出入流量都走LVS,使得LVS成为网络带宽瓶颈的问题。
[0063]在具体实现时,为了更好地适应下载服务高并发、低延迟、高数据吞吐量的要求,还可以对Nginx参数以及HDFS服务进行调整。
[0064]其中,在调整Nginx参数时,可以包括以下方面:(a)关闭SendfiIe选项;(b)将worker进程数从默认的I增加为256 ; (c)将单进程最大连接数调整为512 ; (d)将backlog参数调整为204800 ;(e)将output_buffers设置为“ 1128
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1