一种利用网络存储数据的方法

文档序号:9436192阅读:287来源:国知局
一种利用网络存储数据的方法
【技术领域】
[0001 ] 本发明涉及数据存储,特别涉及一种远程存储方法。
【背景技术】
[0002]近年来,网络服务都需要存储大量小文件,如图片、邮件、电子书、音乐文件、微博文本内容等。目前针对海量大文件的存储和处理系统主要存储元数据的节点和存储文件数据的节点在应用到海量小文件时,遇到很多问题:第一,海量小文件带来了大量的元数据。因为每个目录和文件的元数据信息都存放在名字节点的内存中,如果系统中存在大量的小文件,则无疑会降低整个云平台存储系统的存储效率和存储能力。第二,访问大量小文件的速度远远小于访问相同容量的几个大文件的速度。因为如果访问大量的小文件,需要不断地连接不同的数据服务器,这是一种低效的数据访问模式。而现有的面向海量小文件的云平台存储系统将小文件合并到大块中,虽然减少了小文件占用本地的节点的数目。但需要使用多个服务云平台单元完成存储文件功能,因此使得读写流程繁琐,一次读写需要建立多次网络连接。同时,也使用高负载的名字服务器,这使得现有小文件系统的可用性仍然较低。
[0003]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0004]为解决上述现有技术所存在的问题,本发明提出了一种利用网络存储数据的方法,包括:
[0005]在云平台存储系统中将多个数据服务器在逻辑上组织成环,按照预定义散列算法对数据服务器的ID进行散列,并根据散列值将各个数据服务器分布在整个散列值域的环上;
[0006]云平台存储系统中设置一个主节点,每一个数据服务器周期性地向主节点发送其心跳消息,主节点接收这些消息用于管理云平台的拓扑信息;
[0007]客户端访问主节点获取云平台拓扑信息并缓存在本地,在客户端进行读取和写入时,对文件名进行散列计算,并确定对应的小文件所在的数据服务器,并在相应数据服务器中对小文件进行读取或写入操作。
[0008]优选地,执行以下步骤实现小文件写入过程:
[0009](I)如果客户端是第一次访问云平台存储系统,则客户端访问主节点,请求云平台的拓扑信息,并记录到本地,在连续访问时,如果不是第一次访问云平台存储系统,则客户端本地已缓存了云平台的拓扑信息;
[0010](2)客户端对文件名进行散列,并按照一致性散列算法决定该小文件应由哪一个数据服务器进行处理;
[0011](3)客户端访问步骤(2)中得到的数据服务器,将客户端缓存的云平台拓扑信息、小文件的文件名、小文件内容缓冲区发送到该数据服务器;
[0012](4)数据服务器首先判断客户端缓存的云平台拓扑信息是否过期,即对比数据服务器本身记录的云平台拓扑信息和客户端写请求消息中的云平台拓扑信息的版本号是否一致,如果一致,转步骤(5);如果不一致,则对比客户端写请求消息中的云平台拓扑信息,判断差异是否会影响本次写操作,如果不影响,标记为需要更新并转步骤(5),否则通知客户端写操作失败,并将新的云平台拓扑信息发送给客户端;
[0013](5)数据服务器访问存取信息管理单元,检查该小文件的文件名是否已经存在,若存在,则通知客户端文件名已存在,否则转步骤(6);
[0014](6)数据服务器通过文件块管理单元将小文件的内容写入块中,同时将文件块管理单元得到的存取信息和文件名以键值对形式写入存取信息管理单元,向客户端返回写入成功消息,如果设置了需要更新标记,则同时将新的云平台拓扑信息通知客户端,写操作结束。
[0015]本发明相比现有技术,具有以下优点:
[0016]本发明实现了一种新的面向小文件的云平台存储系统及其存储方法。有如下优占.V.
[0017](I)在云平台拓扑信息没有变化时,连续读写小文件只需一次网络连接。
[0018](2)使用键值对存储来管理文件名与对应存取信息的映射关系。存储更轻量,延迟更低。
[0019](3)主节点负载低,失效后服务恢复更快,因此云平台存储系统可用性更高。
【附图说明】
[0020]图1是根据本发明实施例的利用网络存储数据的方法的流程图。
【具体实施方式】
[0021]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0022]本发明的一方面提供了一种利用网络存储数据的方法。图1是根据本发明实施例的利用网络存储数据的方法流程图。
[0023]本发明首先在云平台存储系统中将所有的数据服务器在逻辑上组织成环。云平台存储系统采用一致性散列方案,按照预定义散列算法对数据服务器的ID进行散列,并根据散列值将各个数据服务器分布在整个散列值域的环上。
[0024]云平台中设置一个主节点即主节点,每一个数据服务器周期性地向主节点发送其心跳消息,主节点接收这些消息,用于管理云平台的拓扑信息。主节点管理的云平台拓扑信息包括云平台中所有活动的数据服务器列表以及当前云平台拓扑信息的版本号。数据服务器列表中保存了每一个活动的数据服务器的ID和这个数据服务器所监听的IP地址和端口。云平台拓扑信息版本号用单调递增的时间戳表示。当云平台有新的数据服务器加入或者原有的数据服务器退出时,主节点重新生成一个云平台拓扑信息,并将这个云平台拓扑信息的版本号设置为当前时间戳,然后主节点将这个新的云平台拓扑信息发送到所有当前活动的数据服务器。这样所有的数据服务器都会保存同样的云平台全局信息。
[0025]客户端在本地缓存云平台拓扑信息。客户端第一次云平台时,会访问主节点获取云平台拓扑信息,并缓存在本地,后续读写时使用本地缓存的云平台拓扑信息。客户端进行读写时,首先根据文件名,按照一致性散列方案,对文件名进行散列计算,并确定该小文件所在的数据服务器。然后对比数据服务器保存的云平台拓扑信息和客户端保存的云平台拓扑信息的版本号,如果版本号一致,则在数据服务器进行实际的读写操作。
[0026]数据服务器有两个主要单元,一个是文件块管理单元,一个是存取信息管理单元。文件块管理单元使用小文件合并成大块的方案。云平台存储系统预先分配好较大的文件块,然后新写入的小文件会写入大块内。在已知小文件所在块号、小文件在块内偏移量和小文件大小这些存取信息的情况下,就可以从一个数据服务器中检索出该小文件。云平台存储系统使用键值对存储来管理文件名到存取信息的映射关系,即:
[0027]Key:filename — Value: (Blockld,Offset, Size)
[0028]本发明实现了一个具备持久化功能的键值对存储。用这个键值对存储来管理存取?目息O
[0029]以下描述了云存储平台中的小文件写入流程:
[0030](I)如果客户端是第一次访问云平台存储系统,则客户端访问主节点,请求云平台的拓扑信息,并记录到本地。在连续访问时,如果不是第一次访问云平台存储系统,则客户端本地已缓存了云平台的拓扑信息。
[0031](2)客户端对文件名进行散列,并按照一致性散列算法决定该小文件应由哪一个数据服务器进行处理。
[0032](3)客户端访问步骤(2)中得到的数据服务器,将客户端缓存的云平台拓扑信息、小文件的文件名、小文件内容缓冲区发送到该数据服务器。
[0033](4)数据服务器首先判断客户端缓存的云平台拓扑信息是否过期,即对比数据服务器本身记录的云平台拓扑信息和客户端写请求消息中的云平台拓扑信息的版本号是否
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1