一种基于udp分布式小文件存储系统及其数据处理方法

文档序号:7761121阅读:705来源:国知局
专利名称:一种基于udp分布式小文件存储系统及其数据处理方法
技术领域
本发明涉及计算机信息处理技术领域,特别是涉及一种基于UDP分布式小文件 存储系统及其数据处理方法。
背景技术
在图像索引系统中,需要一个庞大的图片存储文件系统。用此文件系统来对图 像索引系统中处理的图片文件存储,并能高速的实时性对图片文件进行读写操作。由于 图片的特殊性,并不需要对文件进行修改操作,只需要对文件系统进行添加与删除操作 即可。目前的分布式文件存储大都是采用TCP的方式进行网络访问。但是由于用户数 量的不断攀升,即使对访问量大的应用实现了可扩展、高可靠的集群部署,仍然有访问 慢的问题。为了提高并发速度与实时性问题,会有很多人希望能在UDP协议上进行大型应 用程序的构建。然而UDP协议本身存在着不通信不可靠的缺点,于是对于基于UDP进 行可靠通信的协议修改工作。目前在网络上有许多人正做着这一工作,UDT、RakNet, eNet等都是构建在UDP之后网络可靠通信开发库。然后这些库开发时都针对了一些特殊 应用来进行设计的,不具备通用性。比如RakNet是为游戏应用而设计,对于实时性等游 戏相关的网络需求有很好的支持,对于大批量数据传输却有点力所不及。而UDT基于一 种基于带宽速率控制的拥塞控制算法进行设计,主要用在小数量的bulk源共享富裕带宽 的情况下,最典型的例子就是建立在光纤广域网上的网格计算。

发明内容
本发明的目的在于克服现有技术之不足,提供一种基于UDP分布式小文件存 储系统及其数据处理方法,利用对外服务器来接收用户的读写要求,封装对内部存储操 作,利用全局命名服务器来对新增文件进行内部唯一命名,利用信息索引库服务器来登 记每个内部文件名所对应的存储器,利用任务管理服务器来执行对存储器的读写管理操 作,利用存储服务器来存放文件内容,利用UDP改装协议,来做为内部服务器的通信 协议,以提高整个平台的并发能力与高速I/O能力,解决了大容量存储和负载均衡的问 题,特别适合以文件为载体的在线服务。本发明解决其技术问题所采用的技术方案是一种基于UDP分布式小文件存储 系统,包括一个或多个第一服务器,该第一服务器内包含有一个对外服务器和一个用来管 理对外服务器的运行与停止、以及定时对对外服务器进行检查的服务监控服务器;该对 外服务器,对外负责向其它系统及用户提供管理控制其文件和目录的接口,对内负责向 其它服务器传送用户的命令,并检查命令执行状态,最后将命令执行结果反馈给用户;—个第二服务器,该第二服务器内包含有一个全局命名服务器和一个用来管理 全局命名服务器的运行与停止、以及定时对全局命名服务器进行检查的服务监控服务器;该全局命名服务器设在客户应用和文件系统之间的一个逻辑层中,该全局命名服务 器为每个新添加的文件分配一个唯一的内部名称;一个第三服务器,该第三服务器内包含有一个信息索引库服务器和一个用来管 理信息索引库服务器的运行与停止、以及定时对信息索引库服务器进行检查的服务监控 服务器;该信息索引库服务器与全局命名服务器一起组成位于客户应用和文件系统之间 一个逻辑层,该信息索引库服务器采用NoSQL数据库,用来保存全局名称与文件存储的 对应Kye-Vahie数据、全局名称与用户路径的对应数据;一个第四服务器,该第四服务器内包含有一个任务管理服务器和一个用来管理 任务管理服务器的运行与停止、以及定时对任务管理服务器进行检查的服务监控服务 器;该任务管理服务器设为系统的控制中心,负责识别并解决任何容量问题,运行存 储服务器负载平衡,优化存储服务器的使用,负责与对外服务器合作进行增加/删除文 件;一个或多个第五服务器,该第五服务器内包含有一个存储服务器和一个用来管 理存储服务器的运行与停止、以及定时对存储服务器进行检查的服务监控服务器;该存 储服务器按照对外服务器与任务管理服务器的指令进行文件写入与读出;该第一服务器、第二服务器、第三服务器、第四服务器和第五服务器的相互之 间是通过用户数据包协议来实现数据的相互传递和处理。所述的用户数据包协议为UDP改装协议,该UDP改装协议具有如下协议格 式2位head 表示消息开始;6位版本号表示该UDP改装协议的版本;8位命令号表示此消息包含的命令;16位生存时间表示此消息所保留的时间,如果超时,此消息会被丢弃,会由 发送端重发一次此消息;32位序列号表示此消息的编号,由系统随机生成,用来确认消息的成功发送 与接收对应;16位子命令与16位序列号由应用程序自己指定,用来进一步明确消息包含内 容;数据表示消息内容;16位数据大小发送数据的大小为子命令、子序列号与数据的总和,用来检查 数据传送过程的完整; 5位key 表示所使用的加密类型;1位ack 代表是否需要接收方进行返回确认包;2位tail 表示消息到此结束。所述的UDP改装协议,包括如下处理流程由发送消息模块负责将m_SendPaCket_LiSt需要发送包队列缓存中的消息包发送 出去,并判断是否超时,一旦超时,会将数据进行重发;由接收消息模块负责接收消息包,并进行判断包的首尾标志与数据长度是否一 致,并把符合条件的消息包放入需要接收包队列缓存中,提供给消息处理模块处理;由消息处理模块对消息包进行处理,并将需要发送的消息包放入m_SendPaCket_ List需要发送包队列缓存中。所述的发送消息模块的发送数据包过程,包括如下步骤al.从m_SendPacket_List需要发送包队列缓存中按顺序取出消息包;a2.查询该消息包的属性,判断该消息包是否已发送过;判断为是时,继续下一 步骤,判断为否时转步骤a5;a3.判断该消息包是否超时重发;判断为是时,继续下一步骤,判断为否时则返 回步骤al ;a4.判断该消息包是否重发超过3次;判断为是时,返回步骤al,判断为否时继
续下一步骤;a5.调用标准UDP SocketAPI发送出该消息包;a6.查询该消息包的消息属性,判断是否需要对方进行确认包,判断为是时,返 回步骤al,判断为否时,将该消息包从m_SendPaCket_LiSt需要发送包队列缓存中删除。所述的接收消息模块的接收数据包过程,包括如下步骤bl.调用标准UDP SocketAPI从网卡上接收新的消息数据;b2.对消息数据包进行验证,判断是否有新消息;判断为是时,继续下一步骤, 判断为否时返回步骤bl ;b3.对该消息数据包的首尾标志进行判断,判断首尾标志与数据长度是否一致; 判断为是时,继续下一步骤,判断为否时则返回步骤bl ;b4.将该消息数据包放入m_ReCVPaCket_LiSt需要接收包队列缓存中,交给消息处
理模块处理。所述的消息处理模块的处理数据包过程,包括如下步骤cl. Wm_RecvPacket_List需要接收包队列缓存中按顺序取出消息包,并将m_ RecvPacket_List需要接收包队列缓存中删除该消息包;c2.判断该消息包否已加密;判断为是时,继续下一步骤,判断为否时转步骤 c4 ;c3.对该消息包进行解密处理;C4.判断该消息包是否为确认包;判断为是时,继续下一步骤,判断为否时转步 骤Cl ;c5. Wm_SendPacket_LiSt需要发送包队列缓存中将确认包所对应发送包删除,而
后返回步骤Cl ;C6.按系统命令执行,而后返回步骤Cl。一种基于UDP分布式小文件存储系统的数据处理方法,包括接受系统外部的用户的访问请求,将用户的指定数据文件从系统中读取出来的 处理步骤;接受系统外部的用户的写入请求,将用户的指定数据文件写入系统中的处理步 骤;系统在读取指定数据文件错误时,系统进行自动恢复的处理步骤;
系统在扩充存储空间时,系统主动进行负载均衡的处理步骤;系统对数据文件进行定期自检的处理步骤。所述的接受系统外部的用户的访问请求,将用户的指定数据文件从系统中读取 出来的处理步骤,包括dl.系统的对外服务器得到来自其它系统或用户的访问请求后,获取请求中的其 它系统或用户的唯一标志字串与所需要访问的文件路径,并将该标志字串与文件路径发 送到系统的信息索引库服务器中;d2.系统的信息索引库服务器根据内部唯一名称查询得到所述访问请求对应文件 所存储的存储服务器的地址,并将此消息返回给对外服务器;d3.对外服务器得到文件对应的存储服务器的地址编号与内部名称、MD5,向系 统的存储服务器发出请求,发送内部名称与MD5;d4.存储服务器接收到对外服务器的请求后,进行读取相应的文件内容,并计算 出MD5进行校验,如果校验通过,存储服务器向对外服务器返回文件内容,否则返回出
曰fe息。所述的接受系统外部的用户的写入请求,将用户的指定数据文件写入系统中的 处理步骤,包括el.系统的对外服务器得到来自其它系统或用户的访问请求后,取得其它系统与 用户的唯一标志字串、所需要写入的文件路径与文件内容,该对外服务器将标志字串与 文件路径发送到系统的全局命名服务器中;e2.全局命名服务器收到对外服务器的请求之后,根据标志字串与文件路径等参 数,生成一个唯一的内部名称,发回给对外服务器;e3.对外服务器将取到的内部名称、标志字串、文件路径与文件内容,发送到系 统的任务管理服务器,由任务管理服务器执行写入文件操作;e4.任务管理服务器收到写入文件请求之后,确定要存储数据文件的存储服务 器;e5.存储服务器收到任务管理服务器的写入命令后,将文件内容写入存储服务器 中,写入完成后,进行MD5检验,若检验正确,存储服务器向任务管理服务器返回成 功消息,若检验不正确,返回步骤e4由任务管理服务器重新确定一个分配存储服务器写 入;e6.任务管理服务器收到存储服务器成功写入的返回消息后,任务管理服务器向 信息索引库服务器写入索引信息;e7.信息索引库服务器向任务管理服务器返回写入成功与否的消息,如果失败, 由任务管理服务器向信息索引库服务器重新发送一次写入索引信息的命令;e8.任务管理服务器向对外服务器返回写入成功与否的消息,对外服务器收到信 息后,向外部系统或用户返回状态消息。所述的系统在读取指定数据文件错误时,系统进行自动恢复的处理步骤,包 括fl.系统的对外服务器收到从系统的存储服务器读取文件时返回的错误编码时, 向系统的任务管理服务器提交文件相应的内部名称与存储服务器地址;
β.任务管理服务器得到对外服务器的自动恢复消息,向系统的信息索引库服务 器发送内部名称,取得要访问的三个存储服务器地址;β.信息索引库服务器得到任务管理服务器发来的内部名称,查询到相应的三个 存储服务器地址,并将三个存储服务器地址信息发回到任务管理服务器中;f4.任务管理服务器将三个存储服务器地址、MD5与内部名称发送到报错的存储 服务器上,让它自行恢复;β.存储服务器收到任务管理服务器的恢复命令后,向其它二个存储服务器读取 内部名称的文件内容,并进行MD5检验,检验通过后,删除本地内部名称的文件内容, 用新的文件内容替代,完成操作后,存储服务器向任务管理服务器发送操作状态。所述的系统在扩充存储空间时,系统主动进行负载均衡的处理步骤,包括gl.系统的各个存储服务器会定期给任务管理服务器发送自身容量消息,包含剩 余空间与剩余空间所占的百分比;g2.任务管理服务器进行比较,当发现有两个存储服务器的剩余空间所占的百分 比相差超过预先确定的阈值时,任务管理服务器向剩余空间所占的百分比较高的一个存 储服务器发送负载均衡命令;该负载均衡命令中包含剩余空间所占的百分比较低的另一 个存储服务器地址;g3.剩余空间所占的百分比较高的存储服务器向剩余空间所占的百分比较低的存 储服务器发送读取随机文件命令;g4.剩余空间所占的百分比较低的存储服务器向剩余空间所占的百分比较高的存 储服务器发送随机文件内容、内部名称与相应MD5值;g5.剩余空间所占的百分比较高的存储服务器保存从剩余空间所占的百分比较低 的存储服务器得到的文件内容、内部名称与相应MD5值,并将文件写入存储设备中,通 过MD5检验之后,向任务管理服务器发送完成命令,包含剩余空间所占的百分比较低的 存储服务器地址、内部名称与相应MD5值;g6.任务管理服务器得到剩余空间所占的百分比较高的存储服务器的反馈消息, 向信息索引库服务器提交更改命令,包含剩余空间所占的百分比较高的存储服务器地 址、剩余空间所占的百分比较低的存储服务器地址、内部名称与相应MD5值;g7.信息索引库服务器得到任务管理服务器的更改命令时,将内部名称中关于存 储服务器地址中的剩余空间所占的百分比较低的存储服务器改为剩余空间所占的百分比 较高的存储服务器,并MD5确认;更新完成后返回状态给任务管理服务器;g8.任务管理服务器得到信息索引库服务器的确认之后,向剩余空间所占的百分 比较低的存储服务器发送删除给定内部名称的文件内容;g9.剩余空间所占的百分比较低的存储服务器删除完成后,向任务管理服务器返 回状态。所述的系统对数据文件进行定期自检的处理步骤,包括hi.系统的存储服务器会定期把存储服务器上的内部名称分批发送到任务管理服 务器上;h2.任务管理服务器收到存储服务器提交上来的内部名称与存储服务器地址后, 进行转发到信息索引库服务器上查询;
h3.信息索引库服务器进行查询确认,并把确认的结果返回给任务管理服务器;h4.任务管理服务器确认该内部名称在信息索引库服务器的查询结果,如果并无 此记录,则任务管理服务器向存储服务器下达删除此内部名称及文件内容的指令;如果 有此记录,任务管理服务器向存储服务器下达查询成功的指令。本发明的有益效果是,由于采用了一个或多个第一服务器、一个第二服务器、 一个第三服务器、一个第四服务器和一个或多个第五服务器来构成基于UDP分布式小文 件存储系统,且第一服务器内包含有一个对外服务器和一个服务监控服务器,第二服务 器内包含有一个全局命名服务器和一个服务监控服务器,第三服务器内包含有一个信息 索引库服务器和一个服务监控服务器,第四服务器内包含有一个任务管理服务器和一个 服务监控服务器,第五服务器内包含有一个存储服务器和一个服务监控服务器;第一服 务器、第二服务器、第三服务器、第四服务器和第五服务器的相互之间是通过UDP改装 协议来实现数据的相互传递和处理;该系统是通过对外服务器向用户与其它系统提供服 务,采用UDP改装协议,做为内部服务器的通信协议,以提高整个平台的并发能力与高 速I/O能力;采用对外服务器来接收用户的读写要求,封装对内部存储操作,对用户而 言是透明;全局命名服务器对新增文件进行内部唯一命名,信息索引库服务器里登记每 个内部文件名所对应的存储器,任务管理服务器执行对存储器的读写管理操作,存储服 务器存放文件内容;该系统在对外服务器上提供了 API访问方法,能为其它系统及用户 提供高效、快速的访问接口,使用户与系统能透明方便的使用与管理此海量、稳定、便 捷分布式小文件存储系统;解决了大容量存储和负载均衡的问题,特别适合以文件为载 体的在线服务。以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种基于UDP 分布式小文件存储系统及其数据处理方法不局限于实施例。


图1是本发明的系统框架图2是改装前后UDP协议栈应用图3是改装后UDP协议-QDP格式图4是QDP协议工作流程示意图5是QDP协议发送消息模块流程示意图6是QDP协议接收消息模块流程示意图7是QDP协议消息处理模块流程示意图8是本发明方法的数据文件读取流程示意图9是本发明方法的数据文件写入流程示意图10是本发明方法的数据文件出错恢复流程示意图11是本发明方法的增加新存储服务器负载勻衡流程示意图
图12是本发明方法的数据文件自检流程示意图。
具体实施例方式
实施例,请参见图1所示,本发明的一种基于UDP分布式小文件存储系统,包括二个第一服务器,该第一服务器内包含有一个对外服务器和一个用来管理对外 服务器的运行与停止、以及定时对对外服务器进行检查的服务监控服务器;该对外服务 器,对外负责向其它系统及用户提供管理控制其文件和目录的接口,对内负责向其它服 务器传送用户的命令,并检查命令执行状态,最后将命令执行结果反馈给用户;当然, 第一服务器也可以选择采用一个或二个以上,根据需要进行设置;一个第二服务器,该第二服务器内包含有一个全局命名服务器和一个用来管理 全局命名服务器的运行与停止、以及定时对全局命名服务器进行检查的服务监控服务 器;该全局命名服务器设在客户应用和文件系统之间的一个逻辑层中,该全局命名服务 器为每个新添加的文件分配一个唯一的内部名称;一个第三服务器,该第三服务器内包含有一个信息索引库服务器和一个用来管 理信息索引库服务器的运行与停止、以及定时对信息索引库服务器进行检查的服务监控 服务器;该信息索引库服务器与全局命名服务器一起组成位于客户应用和文件系统之间 一个逻辑层,该信息索引库服务器采用NoSQL数据库,用来保存全局名称与文件存储的 对应Kye-Vahie数据、全局名称与用户路径的对应数据;信息索引库服务器对于文件存 储的作用就好像是DNS对于网络的作用一样;一个第四服务器,该第四服务器内包含有一个任务管理服务器和一个用来管理 任务管理服务器的运行与停止、以及定时对任务管理服务器进行检查的服务监控服务 器;该任务管理服务器设为系统的控制中心,负责识别并解决任何容量问题,运行存 储服务器负载平衡,优化存储服务器的使用,负责与对外服务器合作进行增加/删除文 件;二个第五服务器,该第五服务器内包含有一个存储服务器和一个用来管理存储 服务器的运行与停止、以及定时对存储服务器进行检查的服务监控服务器;该存储服务 器按照对外服务器与任务管理服务器的指令进行文件写入与读出;当然,第五服务器也 可以选择采用一个或二个以上,根据需要进行设置;第一服务器、第二服务器、第三服务器、第四服务器和第五服务器中均有选用 服务监控服务器,该服务监控服务器负责管理其它服务器的运行与停止,并可以定时对 所管理的其它服务器进行检查,如果所管理的其它服务器出错时,可由它对所管理的其 它服务器进行重启,也可对自身与所管理的其它服务器进行定期重启,及自动更新操 作;该第一服务器、第二服务器、第三服务器、第四服务器和第五服务器的相互之 间是通过用户数据包协议来实现数据的相互传递和处理。本发明的系统提供多个对外服务器的用户访问入口点,以及对内部的文件存储 管理,解决了大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务。在对 外服务器中提供完整的API操作接口,可以方便与第三方软件相合,以扩展第三方软件 的文件存储应用;同时,系统可以在文件数据量的增长时,进行顺滑扩展。所述的用户数据包协议为UDP改装协议。本发明为了系统高速通信的需要对UDP协议进行改造,我们将改装后的UDP协 议称为QDP (Quick UDP)。UDP是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传 送服务。UDP特性有以下几个方面(I)UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传 送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端, UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限 制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段;(2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态 等,因此一台服务机可同时向多个客户机传输相同的消息。(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的 额外开销很小;(4)吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带 宽、源端和终端主机性能的限制;(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的 链接状态表(这里面有许多参数);(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部 后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程 序需要选择合适的报文大小。由于UDP所具有以上的特性,所以在高速的IO数据通信方面,具有较强的优 势。然而UDP也有一些弱点。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收 方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常 人们把UDP协议称为不可靠的传输协议。相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数 据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端 的应用程序向服务器发出了以下4个数据报。DlD22D333D4444但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用D333DlD4444D22为了避免UDP的弱点,本发明在正常的UDP协议通信中增加一个确认,就可 以对消息进行有限的保护以防丢失。在一个正常的对话中,NCPA发送数据消息<data, m>,并等待来自NCPB的确认消息<ack>。当接到这个确认消息时,NCPA关闭对话。 NCPB—旦接收到这一消息<data,m>,就把m传送到b,并用<ack>消息进行应答,然
14后关闭。NCPA 发送 <data,m> ;NCPB接收<data,m>,传送 m,发送 <ack>,关闭;NCPA接收<ack>,通知关闭。如果在某段时间后,NCPA没有接到确认应答,数据丢失的可能性迫使NCPA再 次发送数据<data,m>。(由于缺乏全局状态知识,在接收<data,m>和发送<ack>之 间,NCPA不能观测到是否<data,m>已丢失、<ack>已丢失或NCP B机器已关闭。) 因此,NCPA在有限时间内,等侯接收确认消息,如果不能接收到这一消息,则计时器断 定时间用完,就会产生超时(timeout)信息。显而易见,这种选择重传消息的机制仍然有 丢失的可能性。情形如下NCPA 发送 <data,ml> ;NCPB 接收 <data,ml>,传送 ml,发送 <ack>,关闭;NCPA 超时,发送 <data,ml> ;NCPB 接收 <data,m>,传送 ml,发送 <ack>,关闭;NCPA接收<ack>,通知关闭;NCPA 发送 <data,m2> ;DN<data, m2> 丢失;NCPA 接收 <ack> (Step 2),通知关闭。这样会使m2消息没有被成功发送。为了确认消息的成功发送与接收对应。在 协议中添加一个序列号,可避免以前对话的信息传送。NCPA 发送〈data, ml, x> ;NCPB 接收 <data,ml, x>,传送 ml,发送 <ack,x>,关闭;NCPA 接收 <ack,x>,通知关闭。QDP主要的目标就是在UDP层之上实现以上的协议算法,使得应用程序能够在 UDP层之上获得通用、可靠、高效的通信能力。QDP提供的用于开发的应用程序接口与 SocketAPI非常相像,姑且称之为QDP SocketAPI,基本上的函数名与参数等都与Socket API相一致,但是QDP Socket API的API接口都位于命名空间QDP当中。QDP协议栈
应用如图2所示。参见图3所示,所述UDP改装协议即QDP具有如下协议格式2位head 表示消息开始;6位版本号表示该QDP的版本,为以后可能QDP协议升级留下空间;8位命令号表示此消息包含的命令;16位生存时间表示此消息所保留的时间,如果超时,此消息会被丢弃,会由 发送端重发一次此消息;32位序列号表示此消息的编号,由系统随机生成,用来确认消息的成功发送 与接收对应;16位子命令与16位序列号由应用程序自己指定,用来进一步明确消息包含内 容;数据表示消息内容;
16位数据大小发送数据的大小为子命令、子序列号与数据的总和,用来检查 数据传送过程的完整;5位key 表示所使用的加密类型;1位ack 代表是否需要接收方进行返回确认包;2位tail 表示消息到此结束。参见图4所示,所述的UDP改装协议即QDP协议,包括如下处理流程由发送消息模块负责将m_SendPaCket_LiSt需要发送包队列缓存中的消息包发送 出去,并判断是否超时,一旦超时,会将数据进行重发;由接收消息模块负责接收消息包,并进行判断包的首尾标志与数据长度是否一 致,并把符合条件的消息包放入需要接收包队列缓存中,提供给消 息处理模块处理;由消息处理模块对消息包进行处理,并将需要发送的消息包放入m_SendPaCket_ List需要发送包队列缓存中;消息处理模块是协议中主要处理流程,可以创建多个实 例,以提高消息包并发处理速度,主动确认返回消息包,并主动将其对应的消息包从m_ SendPacket_List 队列中消除。参见图5所示,所述的发送消息模块的发送数据包过程,包括如下步骤al.从m_SendPacket_List需要发送包队列缓存中按顺序取出消息包;如图5框 501所示的步骤;a2.查询该消息包的属性,判断该消息包是否已发送过;判断为是时,继续下一 步骤,判断为否时转步骤a5;如图5框502所示的步骤;a3.判断该消息包是否超时重发;判断为是时,继续下一步骤,判断为否时则返 回步骤al ;如图5框503所示的步骤;a4.判断该消息包是否重发超过3次;判断为是时,返回步骤al,判断为否时继 续下一步骤;如图5框504所示的步骤;a5.调用标准UDP SocketAPI发送出该消息包;如图5框505所示的步骤;a6.查询该消息包的消息属性,判断是否需要对方进行确认包,判断为是时,返 回步骤al,判断为否时,将该消息包从m_SendPaCket_LiSt需要发送包队列缓存中删除; 如图5框506所示的步骤。参见图6所示,所述的接收消息模块的接收数据包过程,包括如下步骤bl.调用标准UDP SocketAPI从网卡上接收新的消息数据;如图6框601所示的
步骤;b2.对消息数据包进行验证,判断是否有新消息;判断为是时,继续下一步骤, 判断为否时返回步骤bl ;如图6框602所示的步骤;b3.对该消息数据包的首尾标志进行判断,判断首尾标志与数据长度是否一致; 判断为是时,继续下一步骤,判断为否时则返回步骤bl ;如图6框603所示的步骤;b4.将该消息数据包放入m_ReCVPaCket_LiSt需要接收包队列缓存中,交给消息处 理模块处理;如图6框604所示的步骤。参见图7所示,所述的消息处理模块的处理数据包过程,包括如下步骤cl. Wm_RecvPacket_List需要接收包队列缓存中按顺序取出消息包,并将m_RecvPacket_List需要接收包队列缓存中删除该消息包;如图7框701所示的步骤;
c2.判断该消息包否已加密;判断为是时,继续下一步骤,判断为否时转步骤 c4 ;如图7框702所示的步骤; C3.对该消息包进行解密处理;如图7框703所示的步骤;c4.判断该消息包是否为确认包;判断为是时,继续下一步骤,判断为否时转步 骤Cl ;如图7框704所示的步骤;c5. Wm_SendPacket_LiSt需要发送包队列缓存中将确认包所对应发送包删除,而
后返回步骤Cl ;如图7框705所示的步骤;c6.按系统命令执行,而后返回步骤Cl ;如图7框706所示的步骤。在本发明中,配备大容量的存储设备,需要对这些设备进行管理,同时还要为 其它系统与用户提供良好的文件存储服务。本发明将系统中所有的存储设备整合起来, 建立一个统一的名字空间(各个服务器的IP地址与目录组织),在集成的个个存储服务的 目录结构是一致,其它系统与用户可以以透明的方式通过对外服务器访问其文件。本发明的一种基于UDP分布式小文件存储系统的数据处理方法,包括接受系统外部的用户的访问请求,将用户的指定数据文件从系统中读取出来的 处理步骤;接受系统外部的用户的写入请求,将用户的指定数据文件写入系统中的处理步 骤;系统在读取指定数据文件错误时,系统进行自动恢复的处理步骤;系统在扩充存储空间时,系统主动进行负载均衡的处理步骤;系统对数据文件进行定期自检的处理步骤。参见图8所示,所述的接受系统外部的用户的访问请求,将用户的指定数据文 件从系统中读取出来的处理步骤,包括dl.系统的对外服务器得到来自其它系统或用户的访问请求后,获取请求中的其 它系统或用户的唯一标志字串与所需要访问的文件路径,并将该标志字串与文件路径发 送到系统的信息索引库服务器中,查询所对应的内部唯一名称;如图8所示的步骤8.1;其中信息索引库服务器中的外部映射数据采用如下的结构形式
权利要求
1.一种基于UDP分布式小文件存储系统,其特征在于包括一个或多个第一服务器,该第一服务器内包含有一个对外服务器和一个用来管理对 外服务器的运行与停止、以及定时对对外服务器进行检查的服务监控服务器;该对外服 务器,对外负责向其它系统及用户提供管理控制其文件和目录的接口,对内负责向其它 服务器传送用户的命令,并检查命令执行状态,最后将命令执行结果反馈给用户;一个第二服务器,该第二服务器内包含有一个全局命名服务器和一个用来管理全局 命名服务器的运行与停止、以及定时对全局命名服务器进行检查的服务监控服务器;该 全局命名服务器设在客户应用和文件系统之间的一个逻辑层中,该全局命名服务器为每 个新添加的文件分配一个唯一的内部名称;一个第三服务器,该第三服务器内包含有一个信息索引库服务器和一个用来管理信 息索引库服务器的运行与停止、以及定时对信息索引库服务器进行检查的服务监控服务 器;该信息索引库服务器与全局命名服务器一起组成位于客户应用和文件系统之间一个 逻辑层,该信息索引库服务器采用NoSQL数据库,用来保存全局名称与文件存储的对应 Kye-Vahie数据、全局名称与用户路径的对应数据;一个第四服务器,该第四服务器内包含有一个任务管理服务器和一个用来管理任务 管理服务器的运行与停止、以及定时对任务管理服务器进行检查的服务监控服务器;该 任务管理服务器设为系统的控制中心,负责识别并解决任何容量问题,运行存储服务器 负载平衡,优化存储服务器的使用,负责与对外服务器合作进行增加/删除文件;一个或多个第五服务器,该第五服务器内包含有一个存储服务器和一个用来管理存 储服务器的运行与停止、以及定时对存储服务器进行检查的服务监控服务器;该存储服 务器按照对外服务器与任务管理服务器的指令进行文件写入与读出;该第一服务器、第二服务器、第三服务器、第四服务器和第五服务器的相互之间是 通过用户数据包协议来实现数据的相互传递和处理。
2.根据权利要求1所述的基于UDP分布式小文件存储系统,其特征在于所述的用 户数据包协议为UDP改装协议,该UDP改装协议具有如下协议格式2位head:表示消息开始; 6位版本号表示该UDP改装协议的版本; 8位命令号表示此消息包含的命令;16位生存时间表示此消息所保留的时间,如果超时,此消息会被丢弃,会由发送 端重发一次此消息;32位序列号表示此消息的编号,由系统随机生成,用来确认消息的成功发送与接 收对应;16位子命令与16位序列号由应用程序自己指定,用来进一步明确消息包含内容;数据表示消息内容;16位数据大小发送数据的大小为子命令、子序列号与数据的总和,用来检查数据 传送过程的完整;5位key 表示所使用的加密类型; 1位ack:代表是否需要接收方进行返回确认包;2位tail:表示消息到此结束。
3.根据权利要求2所述的基于UDP分布式小文件存储系统,其特征在于所述的 UDP改装协议,包括如下处理流程由发送消息模块负责需要发送包队列缓存中的消息包发送出 去,并判断是否超时,一旦超时,会将数据进行重发;由接收消息模块负责接收消息包,并进行判断包的首尾标志与数据长度是否一致, 并把符合条件的消息包放入到m_ReCVPaCket_LiSt需要接收包队列缓存中,提供给消息处 理模块处理;由消息处理模块对消息包进行处理,并将需要发送的消息包放入m_SendPaCket_LiSt 需要发送包队列缓存中。
4.根据权利要求3所述的基于UDP分布式小文件存储系统,其特征在于所述的发 送消息模块的发送数据包过程,包括如下步骤al. Wm_SendPacket_LiSt需要发送包队列缓存中按顺序取出消息包; a2.查询该消息包的属性,判断该消息包是否已发送过;判断为是时,继续下一步 骤,判断为否时转步骤a5;a3.判断该消息包是否超时重发;判断为是时,继续下一步骤,判断为否时则返回步 骤al ;a4.判断该消息包是否重发超过3次;判断为是时,返回步骤al,判断为否时继续下一步骤;a5.调用标准UDP SocketAPI发送出该消息包;a6.查询该消息包的消息属性,判断是否需要对方进行确认包,判断为是时,返回步 骤al,判断为否时,将该消息包从m_SendPaCket_LiSt需要发送包队列缓存中删除。
5.根据权利要求3所述的基于UDP分布式小文件存储系统,其特征在于所述的接 收消息模块的接收数据包过程,包括如下步骤bl.调用标准UDP SocketAPI从网卡上接收新的消息数据;b2.对消息数据包进行验证,判断是否有新消息;判断为是时,继续下一步骤,判断 为否时返回步骤bl ;b3.对该消息数据包的首尾标志进行判断,判断首尾标志与数据长度是否一致;判断 为是时,继续下一步骤,判断为否时则返回步骤bl ;b4.将该消息数据包放入m_ReCVPacket_LiSt需要接收包队列缓存中,交给消息处理模 块处理。
6.根据权利要求3所述的基于UDP分布式小文件存储系统,其特征在于所述的消 息处理模块的处理数据包过程,包括如下步骤cl.从m_RecvPacket_List需要接收包队列缓存中按顺序取出消息包,并将m_ RecvPacket_List需要接收包队列缓存中删除该消息包;C2.判断该消息包否已加密;判断为是时,继续下一步骤,判断为否时转步骤c4; c3.对该消息包进行解密处理;c4.判断该消息包是否为确认包;判断为是时,继续下一步骤,判断为否时转步骤Cl ;c5.从m_SendPaCket_LiSt需要发送包队列缓存中将确认包所对应发送包删除,而后返 回步骤Cl ;c6.按系统命令执行,而后返回步骤Cl。
7.一种基于UDP分布式小文件存储系统的数据处理方法,包括接受系统外部的用户的访问请求,将用户的指定数据文件从系统中读取出来的处理 步骤;接受系统外部的用户的写入请求,将用户的指定数据文件写入系统中的处理步骤; 系统在读取指定数据文件错误时,系统进行自动恢复的处理步骤; 系统在扩充存储空间时,系统主动进行负载均衡的处理步骤; 系统对数据文件进行定期自检的处理步骤。
8.根据权利要求7所述的基于UDP分布式小文件存储系统,其特征在于所述的接 受系统外部的用户的访问请求,将用户的指定数据文件从系统中读取出来的处理步骤, 包括dl.系统的对外服务器得到来自其它系统或用户的访问请求后,获取请求中的其它系 统或用户的唯一标志字串与所需要访问的文件路径,并将该标志字串与文件路径发送到 系统的信息索引库服务器中;d2.系统的信息索引库服务器根据内部唯一名称查询得到所述访问请求对应文件所存 储的存储服务器的地址,并将此消息返回给对外服务器;d3.对外服务器得到文件对应的存储服务器的地址编号与内部名称、MD5,向系统的 存储服务器发出请求,发送内部名称与MD5;d4.存储服务器接收到对外服务器的请求后,进行读取相应的文件内容,并计算出 MD5进行校验,如果校验通过,存储服务器向对外服务器返回文件内容,否则返回出错 fn息ο
9.根据权利要求7所述的基于UDP分布式小文件存储系统,其特征在于所述的接 受系统外部的用户的写入请求,将用户的指定数据文件写入系统中的处理步骤,包括el.系统的对外服务器得到来自其它系统或用户的访问请求后,取得其它系统与用户 的唯一标志字串、所需要写入的文件路径与文件内容,该对外服务器将标志字串与文件 路径发送到系统的全局命名服务器中;e2.全局命名服务器收到对外服务器的请求之后,根据标志字串与文件路径等参数, 生成一个唯一的内部名称,发回给对外服务器;e3.对外服务器将取到的内部名称、标志字串、文件路径与文件内容,发送到系统的 任务管理服务器,由任务管理服务器执行写入文件操作;e4.任务管理服务器收到写入文件请求之后,确定要存储数据文件的存储服务器; e5.存储服务器收到任务管理服务器的写入命令后,将文件内容写入存储服务器中, 写入完成后,进行MD5检验,若检验正确,存储服务器向任务管理服务器返回成功消 息,若检验不正确,返回步骤e4由任务管理服务器重新确定一个分配存储服务器写入;e6.任务管理服务器收到存储服务器成功写入的返回消息后,任务管理服务器向信息 索引库服务器写入索引信息;e7.信息索引库服务器向任务管理服务器返回写入成功与否的消息,如果失败,由任务管理服务器向信息索引库服务器重新发送一次写入索引信息的命令;e8.任务管理服务器向对外服务器返回写入成功与否的消息,对外服务器收到信息 后,向外部系统或用户返回状态消息。
10.根据权利要求7所述的基于UDP分布式小文件存储系统,其特征在于所述的系 统在读取指定数据文件错误时,系统进行自动恢复的处理步骤,包括fl.系统的对外服务器收到从系统的存储服务器读取文件时返回的错误编码时,向系 统的任务管理服务器提交文件相应的内部名称与存储服务器地址;f2.任务管理服务器得到对外服务器的自动恢复消息,向系统的信息索引库服务器发 送内部名称,取得要访问的三个存储服务器地址;β.信息索引库服务器得到任务管理服务器发来的内部名称,查询到相应的三个存储 服务器地址,并将三个存储服务器地址信息发回到任务管理服务器中;f4.任务管理服务器将三个存储服务器地址、MD5与内部名称发送到报错的存储服务 器上,让它自行恢复;f5.存储服务器收到任务管理服务器的恢复命令后,向其它二个存储服务器读取内部 名称的文件内容,并进行MD5检验,检验通过后,删除本地内部名称的文件内容,用新 的文件内容替代,完成操作后,存储服务器向任务管理服务器发送操作状态。
11.根据权利要求7所述的基于UDP分布式小文件存储系统,其特征在于所述的系 统在扩充存储空间时,系统主动进行负载均衡的处理步骤,包括gl.系统的各个存储服务器会定期给任务管理服务器发送自身容量消息,包含剩余空 间与剩余空间所占的百分比;g2.任务管理服务器进行比较,当发现有两个存储服务器的剩余空间所占的百分比相 差超过预先确定的阈值时,任务管理服务器向剩余空间所占的百分比较高的一个存储服 务器发送负载均衡命令;该负载均衡命令中包含剩余空间所占的百分比较低的另一个存 储服务器地址;g3.剩余空间所占的百分比较高的存储服务器向剩余空间所占的百分比较低的存储服 务器发送读取随机文件命令;g4.剩余空间所占的百分比较低的存储服务器向剩余空间所占的百分比较高的存储服 务器发送随机文件内容、内部名称与相应MD5值;g5.剩余空间所占的百分比较高的存储服务器保存从剩余空间所占的百分比较低的存 储服务器得到的文件内容、内部名称与相应MD5值,并将文件写入存储设备中,通过 MD5检验之后,向任务管理服务器发送完成命令,包含剩余空间所占的百分比较低的存 储服务器地址、内部名称与相应MD5值;g6.任务管理服务器得到剩余空间所占的百分比较高的存储服务器的反馈消息,向信 息索引库服务器提交更改命令,包含剩余空间所占的百分比较高的存储服务器地址、剩 余空间所占的百分比较低的存储服务器地址、内部名称与相应MD5值;g7.信息索引库服务器得到任务管理服务器的更改命令时,将内部名称中关于存储服 务器地址中的剩余空间所占的百分比较低的存储服务器改为剩余空间所占的百分比较高 的存储服务器,并MD5确认;更新完成后返回状态给任务管理服务器;g8.任务管理服务器得到信息索引库服务器的确认之后,向剩余空间所占的百分比较低的存储服务器发送删除给定内部名称的文件内容;g9.剩余空间所占的百分比较低的存储服务器删除完成后,向任务管理服务器返回状态。
12.根据权利要求7所述的基于UDP分布式小文件存储系统,其特征在于所述的系 统对数据文件进行定期自检的处理步骤,包括hi.系统的存储服务器会定期把存储服务器上的内部名称分批发送到任务管理服务器上;h2.任务管理服务器收到存储服务器提交上来的内部名称与存储服务器地址后,进行 转发到信息索引库服务器上查询;h3.信息索引库服务器进行查询确认,并把确认的结果返回给任务管理服务器; h4.任务管理服务器确认该内部名称在信息索引库服务器的查询结果,如果并无此记 录,则任务管理服务器向存储服务器下达删除此内部名称及文件内容的指令;如果有此 记录,任务管理服务器向存储服务器下达查询成功的指令。
全文摘要
本发明公开了一种基于UDP分布式小文件存储系统及其数据处理方法,包括第一服务器、第二服务器、第三服务器、第四服务器和第五服务器,第一服务器含有对外服务器和服务监控服务器,第二服务器含有全局命名服务器和服务监控服务器,第三服务器含有信息索引库服务器和服务监控服务器,第四服务器含有任务管理服务器和服务监控服务器,第五服务器含有存储服务器和服务监控服务器;第一服务器、第二服务器、第三服务器、第四服务器和第五服务器的相互之间是通过UDP改装协议来实现数据的相互传递和处理。该系统利用UDP改装协议,来做为内部服务器的通信协议,可以提高整个平台的并发能力与高速I/O能力,解决了大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务。
文档编号H04L29/08GK102014150SQ201010296948
公开日2011年4月13日 申请日期2010年9月29日 优先权日2010年9月29日
发明者吴世雄, 林志扬, 章正道 申请人:厦门市美亚柏科信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1