CN109815207A - 数据存储方法和客户端代理 - Google Patents
数据存储方法和客户端代理 Download PDFInfo
- Publication number
- CN109815207A CN109815207A CN201811618513.3A CN201811618513A CN109815207A CN 109815207 A CN109815207 A CN 109815207A CN 201811618513 A CN201811618513 A CN 201811618513A CN 109815207 A CN109815207 A CN 109815207A
- Authority
- CN
- China
- Prior art keywords
- file
- node server
- written
- client
- duplication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储方法和客户端代理,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;客户端代理接收到客户端的写请求时,复制写请求对应的第一目标文件至少一份,将第一目标文件及其复制文件写入不同的文件节点服务器,复制第一目标文件对应的第一元数据文件至少一份,更新第一元数据文件及其复制文件中的文件存储地址信息,将第一元数据文件及其复制文件写入不同的元数据节点服务器。本发明的客户端代理,结构简单,扩展性强,其数据存储方法具备高可用和容灾备份能力。
Description
技术领域
本发明涉及计算机领域,特别涉及一种数据存储方法和客户端代理。
背景技术
随着信息化的深入开展,各行各业的业务系统所产生的数据越来越多,由于传统的集中式存储方案(集中式存储是指为待存储的数据制定一个特定的存储区域,如数据中心主机,将所有都存储在该区域中)将所有的数据均存储在数据中心主机上,若数据中心主机出故障,则整个系统无法存储和提取数据,即集中式存储方案相较于分布式数据存储,数据稳定性较低,故而分布式数据存储应运而生。
分布式数据存储系统既具有集群系统的可扩/缩容的特性,又可以进行分布式操作。因此,在数据存储量发生变化时,分布式数据存储系统能够通过增加/移除集群中的节点服务器(或数据存储节点)实现对分布式数据存储系统的扩/缩容。
在现有的分布式数据存储系统中,通常可以采用一致性哈希算法对集群进行分片,而后根据键值对数据(key-value)等进行存储。但是此种存储系统在存储数据量发生变化而需要增加/移除节点服务器时,由于一致性哈希算法的限制,使得相邻存储节点的键值(key)映射发生的变化,容易导致数据的丢失,集群扩展性差。
发明内容
有鉴于此,本发明提供一种数据存储方法和客户端代理,以解决分布式数据存储系统数据容易丢失和扩展性差的问题。
本发明提供一种数据存储方法,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;
客户端代理接收到客户端的写请求时,复制写请求对应的第一目标文件至少一份,将第一目标文件及其复制文件写入不同的文件节点服务器,复制第一目标文件对应的第一元数据文件至少一份,更新第一元数据文件及其复制文件中的文件存储地址信息,将第一元数据文件及其复制文件写入不同的元数据节点服务器。
一种客户端代理,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;
客户端代理接收到客户端的写请求时,复制写请求对应的第一目标文件至少一份,将第一目标文件及其复制文件写入不同的文件节点服务器,复制第一目标文件对应的第一元数据文件至少一份,更新第一元数据文件及其复制文件中的文件存储地址信息,将第一元数据文件及其复制文件写入不同的元数据节点服务器。
本发明的数据存储方法,通过设置客户端代理,将客户端的文件及其元数据文件(或复制)复制多份,然后分散保存到不同文件节点服务器和元数据节点服务器,即使一个节点出现故障,也不会丢失文件,使得整个系统具有高可用和容灾备份能力。
另一方面,本申请未采用哈希算法,而是将文件的存储地址保存到元数据文件中,当存储数据量发生变化而需要增加/移除节点服务器时,不受哈希算法的限制,文件的不会丢失,且该系统结构简单、易于扩展。
附图说明
图1为本发明存储系统第一架构图;
图2为本发明存储系统第二架构图;
图3为本发明存储系统第三架构图;
图4为本发明数据存储方法的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明设计了一种新的存储系统,该存储系统在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2。
如图1所示,在客户端与存储设备之间设置了一个客户端代理,该客户端代理前端与所有的客户端连接,客户端后端与所有的文件节点服务器和元数据节点服务器连接。
或者如图2所示,设置2个客户端代理:客户端代理1和客户端代理2,客户端代理1与客户端代理2前端连接的客户端不同,但是客户端代理1与客户端代理2后端与所有的文件节点服务器和元数据节点服务器连接。在图2中还可以设置更多的客户端代理,每个客户端代理连接的客户端不同,但是每个客户端均与所有的存储设备连接。
或者如图3所示,设置2个客户端代理:客户端代理1和客户端代理2,客户端代理1与客户端代理2前端连接的客户端不同,客户端代理1与客户端代理2后端连接的文件节点服务器和元数据节点服务器也不同。在图3中还可以设置更多的客户端代理,每个客户端代理连接的客户端、文件节点服务器和元数据节点服务器均不同。图3中的N1和N2代理不同的N,M1和M2代理不同的M。
基于上述的存储系统,本发明的数据存储方法如图4所示,包括:
S11:客户端代理接收到客户端的写请求时,复制写请求对应的第一目标文件至少一份,将第一目标文件及其复制文件写入不同的文件节点服务器,
S12:复制第一目标文件对应的第一元数据文件至少一份,更新第一元数据文件及其复制文件中的文件存储地址信息,将第一元数据文件及其复制文件写入不同的元数据节点服务器。
S11和S12中写入的文件节点服务器和元数据服务器为该客户端代理连接的存储设备,接收的写请求的客户端也与客户端代理相连。
为了避免无效复制和存储,在图4的方法中第一目标文件及其复制文件总数≤N,第一元数据文件及其复制文件总数≤M。
当某个节点故障后,为确保存储系统仍具有高可用,可使得M、N≥3。
S12中第一元数据文件及其复制文件中的文件存储地址信息可以是一个文件的文件存储地址信息,也可以是至少两个文件的存储地址信息,或者所有文件的存储地址信息。
在图4的方法中,客户端代理先为第一目标文件及其复制文件选择“文件节点服务器”,并将一个文件写入一个节点服务器,如果某一个节点服务器写入失败,可更换另一个节点服务器写入,直到第一目标文件及其复制文件均成功写入不同的文件节点服务器。
待第一目标文件及其复制文件均成功写入不同的文件节点服务器后,根据每个文件的存储地址更新第一元数据文件(第一目标文件的元数据文件)及其复制文件中的文件存储地址信息,更新后将第一元数据文件及其复制文件写入不同的元数据节点服务器。
例如某个客户端代理连接的文件节点服务器包括:文件节点服务器1、文件节点服务器2、文件节点服务器3、文件节点服务器4和文件节点服务器5,连接的元数据节点服务器包括:元数据节点服务器1、元数据节点服务器2和元数据节点服务器3。
则当该客户端代理接收到第一个写请求时,将第一份目标文件复制一份(也可以复制更多),记原文件和复制文件为A1和A2,将A1写入文件节点服务器1、A2写入文件节点服务器2,记其元数据文件和复制文件为a1和a2,将a1写入元数据节点服务器1、将a2写入元数据节点服务器2。
当该客户端代理接收到第二个写请求时,将第二份目标文件复制一份(也可以复制更多),记原文件和复制文件为B1和B2,将B1写入文件节点服务器3、B2写入文件节点服务器4,记其元数据文件和复制文件为b1和b2,将b1写入元数据节点服务器3、将b2写入元数据节点服务器1。
当该客户端代理接收到第三个写请求时,将第三份目标文件复制一份(也可以复制更多),记原文件和复制文件为C1和C2,将C1写入文件节点服务器5、C2写入文件节点服务器1,记其元数据文件和复制文件为c1和c2,将c1写入元数据节点服务器2、将c2写入元数据节点服务器3。
以上采用的是轮流写入各文件节点服务器和各元数据节点服务器的方法,也可以从客户端代理连接的节点服务器中,任选x(x=原文件和复制文件总数)个数的节点服务器写入。
本发明的数据存储方法,通过设置客户端代理,将客户端的文件及其元数据文件(或复制)复制多份,然后分散保存到不同文件节点服务器和元数据节点服务器,即使一个节点出现故障,也不会丢失文件,使得整个系统具有高可用和容灾备份能力。
另一方面,本申请未采用哈希算法,而是将文件的存储地址保存到元数据文件中,当存储数据量发生变化而需要增加/移除节点服务器时,不受哈希算法的限制,文件的不会丢失,且该系统结构简单、易于扩展。
当图4中的N个文件节点服务器位于不同的数据中心;图4中“将第一目标文件及其复制文件写入不同的文件节点服务器”可以扩展为:将第一目标文件及其复制文件写入不同数据中心的文件节点服务器,一个文件写入一个数据中心的一个文件节点服务器。
将第一目标文件及其复制文件写入不同数据中心可进一步确保整个系统具有高可用和容灾备份能力。
同时为了使存储分布更加均衡,将一个文件写入一个数据中心的一个文件节点服务器时,可以将该文件写入一个数据中心中剩余存储空间最大的文件节点服务器。
当图4中的M个元数据节点服务器位于不同的数据中心;图4中“将第一元数据文件及其复制文件写入不同的元数据节点服务器”可以扩展为:将第一元数据文件及其复制文件写入不同数据中心的元数据节点服务器,一个元数据文件写入一个数据中心的一个元数据节点服务器。
将第一元数据文件及其复制文件写入不同数据中心可进一步确保整个系统具有高可用和容灾备份能力。
同时为了使存储分布更加均衡,将一个元数据文件写入一个数据中心的一个元数据节点服务器时,可以将该元数据文件写入一个数据中心中剩余存储空间最大的元数据节点服务器。
此外,图4的方法还包括:当客户端代理接收到客户端的读请求时,遍历该客户端连接的元数据节点服务器获取读请求对应的第二元数据文件,根据第二元数据文件中的文件存储地址信息读取第二目标文件,将第二目标文件反馈给客户端。
多份元数据文件分布在不同的元数据节点服务器,只要搜索到任一元数据文件即可停止遍历,除非该元数据文件中存储地址对应的所有文件节点服务器发生故障。
为了提高遍历的效率,节省时间,遍历元数据节点服务器还可以分至少2次遍历,且后一次遍历的元数据节点服务器个数大于前一次遍历的元数据节点服务器个数。
例如第一次遍历1个元数据节点服务器,第二次遍历2个元数据节点服务器,第三次遍历4个元数据节点服务器,第4次遍历8个元数据节点服务器…第y次遍历2y个元数据节点服务器。
如果客户端代理连接的元数据节点服务器只有2个,则任选一个元数据节点服务器读取即可。
本发明还提供一种客户端代理,如图1-3所示,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;
客户端代理接收到客户端的写请求时,复制写请求对应的第一目标文件至少一份,将第一目标文件及其复制文件写入不同的文件节点服务器,复制第一目标文件对应的第一元数据文件至少一份,更新第一元数据文件及其复制文件中的文件存储地址信息,将第一元数据文件及其复制文件写入不同的元数据节点服务器。
当N个文件节点服务器位于不同的数据中心时;将第一目标文件及其复制文件写入不同的文件节点服务器可扩展为:将第一目标文件及其复制文件写入不同数据中心的文件节点服务器,一个文件写入一个数据中心的一个文件节点服务器。
当M个元数据节点服务器位于不同的数据中心时;将第一元数据文件及其复制文件写入不同的元数据节点服务器可扩展为:将第一元数据文件及其复制文件写入不同数据中心的元数据节点服务器,一个元数据文件写入一个数据中心的一个元数据节点服务器。
上述一个文件写入一个数据中心的一个文件节点服务器还包括:一个文件写入一个数据中心中剩余存储空间最大的文件节点服务器。
上述一个元数据文件写入一个数据中心的一个元数据节点服务器还包括:一个元数据文件写入一个数据中心中剩余存储空间最大的元数据节点服务器。
当客户端代理接收到客户端的读请求时,遍历元数据节点服务器获取读请求对应的第二元数据文件,根据第二元数据文件中的文件存储地址信息读取第二目标文件,将第二目标文件反馈给客户端。
其中,遍历元数据节点服务器包括:分至少2次遍历元数据节点服务器,且后一次遍历的元数据节点服务器个数大于前一次遍历的元数据节点服务器个数。
以上所述仅为本发明的较佳实施例而已,并不用以限定本发明的包含范围,凡在本发明技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据存储方法,其特征在于,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的所述存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;
所述客户端代理接收到所述客户端的写请求时,复制所述写请求对应的第一目标文件至少一份,将所述第一目标文件及其复制文件写入不同的文件节点服务器,复制所述第一目标文件对应的第一元数据文件至少一份,更新所述第一元数据文件及其复制文件中的文件存储地址信息,将所述第一元数据文件及其复制文件写入不同的元数据节点服务器。
2.根据权利要求1所述的方法,其特征在于,所述客户端代理接收到所述客户端的读请求时,遍历所述元数据节点服务器获取所述读请求对应的第二元数据文件,根据所述第二元数据文件中的文件存储地址信息读取第二目标文件,将所述第二目标文件反馈给所述客户端。
3.根据权利要求1所述的方法,其特征在于,所述N个文件节点服务器位于不同的数据中心;
所述将所述第一目标文件及其复制文件写入不同的文件节点服务器包括:将所述第一目标文件及其复制文件写入不同数据中心的文件节点服务器,一个文件写入一个数据中心的一个文件节点服务器。
4.根据权利要求1所述的方法,其特征在于,所述M个元数据节点服务器位于不同的数据中心;
将所述第一元数据文件及其复制文件写入不同的元数据节点服务器包括:将所述第一元数据文件及其复制文件写入不同数据中心的元数据节点服务器,一个元数据文件写入一个数据中心的一个元数据节点服务器。
5.根据权利要求3所述的方法,其特征在于,所述一个文件写入一个数据中心的一个文件节点服务器包括:一个文件写入一个数据中心中剩余存储空间最大的文件节点服务器。
6.根据权利要求4所述的方法,其特征在于,所述一个元数据文件写入一个数据中心的一个元数据节点服务器包括:一个元数据文件写入一个数据中心中剩余存储空间最大的元数据节点服务器。
7.根据权利要求2所述的方法,其特征在于,所述遍历所述元数据节点服务器包括:分至少2次遍历所述元数据节点服务器,且后一次遍历的元数据节点服务器个数大于前一次遍历的元数据节点服务器个数。
8.一种客户端代理,其特征在于,在客户端与存储设备之间设置至少一个客户端代理,任一客户端代理连接的所述存储设备包括:N个文件节点服务器和M个元数据节点服务器,M、N≥2;
所述客户端代理接收到所述客户端的写请求时,复制所述写请求对应的第一目标文件至少一份,将所述第一目标文件及其复制文件写入不同的文件节点服务器,复制所述第一目标文件对应的第一元数据文件至少一份,更新所述第一元数据文件及其复制文件中的文件存储地址信息,将所述第一元数据文件及其复制文件写入不同的元数据节点服务器。
9.根据权利要求8所述的客户端代理,其特征在于,所述客户端代理接收到所述客户端的读请求时,遍历所述元数据节点服务器获取所述读请求对应的第二元数据文件,根据所述第二元数据文件中的文件存储地址信息读取第二目标文件,将所述第二目标文件反馈给所述客户端。
10.根据权利要求8所述的客户端代理,其特征在于,所述N个文件节点服务器位于不同的数据中心;
所述将所述第一目标文件及其复制文件写入不同的文件节点服务器包括:将所述第一目标文件及其复制文件写入不同数据中心的文件节点服务器,一个文件写入一个数据中心的一个文件节点服务器。
11.根据权利要求8所述的客户端代理,其特征在于,所述M个元数据节点服务器位于不同的数据中心;
将所述第一元数据文件及其复制文件写入不同的元数据节点服务器包括:将所述第一元数据文件及其复制文件写入不同数据中心的元数据节点服务器,一个元数据文件写入一个数据中心的一个元数据节点服务器。
12.根据权利要求10所述的客户端代理,其特征在于,所述一个文件写入一个数据中心的一个文件节点服务器包括:一个文件写入一个数据中心中剩余存储空间最大的文件节点服务器。
13.根据权利要求11所述的客户端代理,其特征在于,所述一个元数据文件写入一个数据中心的一个元数据节点服务器包括:一个元数据文件写入一个数据中心中剩余存储空间最大的元数据节点服务器。
14.根据权利要求9所述的客户端代理,其特征在于,所述遍历所述元数据节点服务器包括:分至少2次遍历所述元数据节点服务器,且后一次遍历的元数据节点服务器个数大于前一次遍历的元数据节点服务器个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811618513.3A CN109815207A (zh) | 2018-12-28 | 2018-12-28 | 数据存储方法和客户端代理 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811618513.3A CN109815207A (zh) | 2018-12-28 | 2018-12-28 | 数据存储方法和客户端代理 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815207A true CN109815207A (zh) | 2019-05-28 |
Family
ID=66602583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811618513.3A Pending CN109815207A (zh) | 2018-12-28 | 2018-12-28 | 数据存储方法和客户端代理 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815207A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633378A (zh) * | 2019-08-19 | 2019-12-31 | 杭州欧若数网科技有限公司 | 一种支持超大规模关系网络的图数据库构建方法 |
CN111209263A (zh) * | 2020-01-14 | 2020-05-29 | 中国建设银行股份有限公司 | 数据存储方法、装置、设备及存储介质 |
CN114138566A (zh) * | 2022-02-07 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 虚拟机的数据存储方法、装置、虚拟机及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989999A (zh) * | 2010-11-12 | 2011-03-23 | 华中科技大学 | 一种分布式环境中的分级存储系统 |
CN102402530A (zh) * | 2010-09-13 | 2012-04-04 | 方正国际软件有限公司 | 一种元数据分布式查询方法、装置及系统 |
CN102420854A (zh) * | 2011-11-14 | 2012-04-18 | 西安电子科技大学 | 面向云存储的分布式文件系统 |
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN107667351A (zh) * | 2015-05-27 | 2018-02-06 | 谷歌公司 | 用于移动设备上的自动基于云的全数据备份和恢复的系统和方法 |
-
2018
- 2018-12-28 CN CN201811618513.3A patent/CN109815207A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402530A (zh) * | 2010-09-13 | 2012-04-04 | 方正国际软件有限公司 | 一种元数据分布式查询方法、装置及系统 |
CN101989999A (zh) * | 2010-11-12 | 2011-03-23 | 华中科技大学 | 一种分布式环境中的分级存储系统 |
CN102420854A (zh) * | 2011-11-14 | 2012-04-18 | 西安电子科技大学 | 面向云存储的分布式文件系统 |
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN107667351A (zh) * | 2015-05-27 | 2018-02-06 | 谷歌公司 | 用于移动设备上的自动基于云的全数据备份和恢复的系统和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633378A (zh) * | 2019-08-19 | 2019-12-31 | 杭州欧若数网科技有限公司 | 一种支持超大规模关系网络的图数据库构建方法 |
CN111209263A (zh) * | 2020-01-14 | 2020-05-29 | 中国建设银行股份有限公司 | 数据存储方法、装置、设备及存储介质 |
CN114138566A (zh) * | 2022-02-07 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 虚拟机的数据存储方法、装置、虚拟机及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7239605B2 (en) | Item and method for performing a cluster topology self-healing process in a distributed data system cluster | |
CN111078121B (zh) | 一种分布式存储系统数据迁移方法、系统、及相关组件 | |
CN106547859B (zh) | 一种多租户数据存储系统下的数据文件的存储方法及装置 | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
CN102891849B (zh) | 业务数据同步方法、恢复方法及装置和网络设备 | |
US20160162520A1 (en) | Data Storage Method and Apparatus for Distributed Database | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
EP3575968A1 (en) | Method and device for synchronizing active transaction lists | |
CN112764968B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN109815207A (zh) | 数据存储方法和客户端代理 | |
CN107798130A (zh) | 一种分布式存储的快照方法 | |
CN102843403A (zh) | 基于分布式文件系统的文件处理方法、系统及客户端 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
JP2012221419A (ja) | 情報記憶システム及びそのデータ複製方法 | |
CN105574187A (zh) | 一种异构数据库复制事务一致性保障方法及系统 | |
CN104765661A (zh) | 一种云存储服务中元数据服务节点的多节点热备方法 | |
US11188258B2 (en) | Distributed storage system | |
CN109542861A (zh) | 一种文件管理方法、装置和系统 | |
US11575647B1 (en) | Distributed network address allocation management | |
CN107038092B (zh) | 一种数据复制方法及装置 | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN109271376A (zh) | 数据库升级方法、装置、设备及存储介质 | |
CN101986276A (zh) | 文件存储方法、文件恢复方法、系统及服务器 | |
CN109407975B (zh) | 写数据方法与计算节点以及分布式存储系统 | |
CN105404565B (zh) | 一种双活数据保护方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190528 |
|
RJ01 | Rejection of invention patent application after publication |