CN110597459A - 存储方法、主、副节点及包含其的系统 - Google Patents
存储方法、主、副节点及包含其的系统 Download PDFInfo
- Publication number
- CN110597459A CN110597459A CN201910729210.7A CN201910729210A CN110597459A CN 110597459 A CN110597459 A CN 110597459A CN 201910729210 A CN201910729210 A CN 201910729210A CN 110597459 A CN110597459 A CN 110597459A
- Authority
- CN
- China
- Prior art keywords
- node
- node group
- data
- group
- nodes
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例涉及分布式存储技术领域,公开了一种存储方法、主、副节点及包含其的系统。该方法包括:从本节点群的副节点中挑选出备用节点;其中,本节点群为本主节点所在的节点群,备用节点用于在本主节点下线时取代本主节点;监测本节点群的在线节点数量是否小于第一阈值,若小于第一阈值,则从系统中挑选出目标合并节点群,以将本节点群与目标合并节点群合并为新的节点群;其中,合并后的新的节点群存储合并前的各节点群所存储的数据;以及监测本节点群的在线节点数量是否大于第二阈值,若大于第二阈值,则拆分本节点群。本发明实施方式可以进一步提高去中心化分布式存储系统的可用性。
Description
技术领域
本发明涉及分布式存储技术领域,特别涉及一种存储方法、主、副节点及包含其的系统。
背景技术
分布式存储系统是互联网的基石系统之一。目前,知名云厂商以及大型互联网公司都拥有自己的分布式存储系统。基于分布式存储系统可对普通用户提供网盘服务,其能够提供更大的存储容量以及更高的容错性。然而现有的这类服务都是基于中心化的分布式存储系统的,由于中心化的分布式存储系统的正确执行(如安全性、可用性等)依赖于某一个中心机构/模块,因此一旦云厂商的硬件或者网络出现问题,用户就无法访问其存储于中心化分布式存储系统中的数据。如何实现去中心化的高效的分布式存储系统,是目前学术界与工业界的热点研究问题之一。
在去中心化分布式存储系统中,亟需解决的问题之一是节点稳定性问题。任意一台计算机都能够加入并成为整个分布式存储系统中的一个新的存储节点。这些节点的稳定性无法和中心化分布式存储系统中由云厂商维护的存储节点相媲美,其随时可能下线。
实际上在传统的中心化分布式存储系统中,也存在节点意外下线或者受到攻击的情况。为了解决这些问题,在中心化分布式存储系统中,首先会挑选出一个主节点(即Master节点),之后系统的一致性等问题均依赖这一中心化的主节点。一旦主节点下线,会由一个预先指定的备份节点接管主节点的工作。然而在去中心化分布式存储系统中,节点的可用性波动非常大,挑选出的主节点可能会频繁下线,甚至会有所有指定备份节点也同时下线/作恶的情况。对于这类在节点群中存在节点下线、作恶的情况下,让整个节点群达成一致的问题,最为基本的解决方法是Paxos一致性协议。该协议能够在节点群中至多三分之一节点下线/作恶的情况下,帮助整个节点群达成一致。该方案的主要缺点是难以应对去中心化场景下存在的频繁节点上下线情况。Paxos协议要求节点群的规模不发生变化,否则协议需要重新配置运行。在去中心化场景下,节点可能出现频繁的下线情况导致Paxos协议需要重新运行。同时由于在节点数目庞大的情况下,Paxos协议的运行时间较长,最终导致Paxos协议永远无法达成一致。
针对上述问题,现有技术还提出了分布式哈希表。上述存储系统中,所有数据都对应一个用于进行检索的键,并通过一个主节点管理所有键对应数据的分布情况,因此需要类似Paxos的协议预先协商出一个主节点。而分布式哈希表则预先确定键的分布情况,用户只需要对键计算一个哈希值,之后通过检索分布式哈希表,就能够找到该键具体存储在哪一个节点中。具体而言,在去中心化的情况下,分布式哈希表采用路由的方式建立。每个节点都会存储一部分哈希表,同时存储一部分节点信息。当用户需要访问某一个键对应的数据时,在本节点或者请求相邻节点以获得该键对应的哈希表,相邻节点会进一步扩散对该哈希表的查询请求,最终找到目标键对应的哈希表,定位目标数据的存储节点位置。
发明人发现分布式哈希表至少存在以下问题:在去中心化情况下,该方法本身并不保证一定能够找到对应哈希表。分布式哈希表本身不会确保目标需要查询的哈希表条目一定能够通过路由方式找到,换言之,该方法不能确保网络中的在线节点保存着完整的哈希表。因此,该种去中心化分布式存储系统仍不具备高可用性。
发明内容
本发明实施方式的目的在于提供一种存储方法、主、副节点及包含其的系统,以进一步提高去中心化分布式存储系统的可用性。
为解决上述技术问题,本发明的实施方式提供了一种存储方法,应用于去中心化分布式存储系统中的主节点,所述系统包括若干个通信连接的节点群,每个节点群均包括所述主节点以及若干个副节点,且每个所述节点群存储部分数据以使得所述系统存储有所述系统的完整数据;所述方法包括:
从本节点群的副节点中挑选出备用节点;其中,所述本节点群为本主节点所在的节点群,所述备用节点用于在所述本主节点下线时取代所述本主节点;
监测所述本节点群的在线节点数量是否小于第一阈值,若小于所述第一阈值,则从所述系统中挑选出目标合并节点群,以将所述本节点群与所述目标合并节点群合并为新的节点群;其中,合并后的新的节点群存储合并前的各节点群所存储的数据;以及
监测所述本节点群的在线节点数量是否大于第二阈值,若大于所述第二阈值,则拆分所述本节点群;其中,拆分后的各节点群分别存储拆分前的节点群的部分数据以使得拆分后的各节点群存储拆分前的节点群的完整数据。
本发明的实施方式还提供了一种存储方法,应用于去中心化分布式存储系统中的副节点,所述系统包括若干个通信连接的节点群,每个节点群均包括主节点以及若干个所述副节点,且每个所述节点群存储部分哈希表以使得所述系统存储有所述系统的完整哈希表;其中,所述哈希表用于定位请求访问的数据所在的节点群;所述方法包括:
确定本副节点是否被本节点群的主节点指定为备用节点,若被指定为所述备用节点,则在所述本节点群的主节点下线时,将所述本副节点的数据恢复至下线的所述主节点,并取代所述主节点。
本发明的实施方式还提供了一种主节点,包括存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如上所述的存储方法。
本发明的实施方式还提供了一种副节点,包括存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如上所述的存储方法。
本发明的实施方式还提供了一种分布式存储系统,包括若干个通信连接的节点群;
所述节点群包括如上所述的主节点以及若干个如上所述的副节点。
本发明实施方式相对于现有技术而言,去中心化分布式存储系统包括若干个通信连接的节点群,每个节点群均包括主节点以及若干个副节点,且每个节点群存储部分数据以使得系统存储有系统的完整数据。主节点从本节点群的副节点中挑选出备用节点,备用节点用于在本主节点下线时取代本主节点,因此主、副结构构成的节点群在节点频繁下线的情况下更能够保证本节点群数据的完整性,并且,主节点在监测到本节点群的在线节点数量小于第一阈值时,从系统中挑选出目标合并节点群,以将本节点群与目标合并节点群合并为新的节点群,且合并后的新的节点群存储合并前的各节点群所存储的数据,从而可在较多节点下线的情况下保证系统中数据的完整性,进而提高系统的可用性,并且,通过将节点数量较多的节点群进行拆分可提高节点群的响应性能。
作为一个实施例,每个所述节点群均存储部分哈希表以使得所述系统存储有所述系统的完整哈希表;其中,所述哈希表用于定位请求访问的数据所在的节点群;所述方法还包括:
响应于数据访问请求在所述本主节点或者请求所述系统中的其他主节点确定请求访问的数据所在的节点群。
作为一个实施例,从所述系统中挑选出目标合并节点群,具体包括:
将所述本节点群的相邻节点群中在线节点数量较小的节点群作为所述目标合并节点群;其中,所述相邻节点群与所述本节点群存储的部分哈希表的哈希值范围连续。这样可保证合并后的节点群中的数据段连续,便于实现去中心化。
作为一个实施例,所述数据访问请求携带有请求访问的数据键对应的哈希值,所述本主节点存储有部分哈希值范围以及与所述哈希值范围连续的哈希值范围所在的相邻节点群;
所述响应于数据访问请求在本主节点或者请求所述系统的其他主节点确定请求访问的数据所在的节点群,具体包括:
确定本主节点是否存储有所述请求访问的数据键对应的哈希值所在的哈希值范围,若存储有所述哈希值所在的哈希值范围,则访问所述本节点群中的副节点并返回访问结果;若所述本主节点未存储所述哈希值所在的哈希值范围,则向所述本主节点的相邻节点群请求以得到所述请求访问的数据所在的节点群。
作为一个实施例,拆分所述本节点群,具体包括:
确定拆分出去的节点群的主节点以及副节点;
将所述本节点群中划分至拆分出去的节点群的数据转移至所述拆分出去的节点群中。
作为一个实施例,所述从本节点群的副节点中挑选出备用节点,具体包括:
根据所述本节点群中的副节点的以下一者或其任意组合挑选出所述备用节点:
节点下线频率、历史在线时段、节点性能参数。
作为一个实施例,所述方法还包括:
响应于数据读取请求从所述本节点群的N个副节点中分别读取N份目标数据;N为大于2的奇数;
确定读取的所述N份目标数据中是否包含错误数据,若包含错误数据,则执行数据恢复操作。从而使得节点群具有较佳的容错性。
作为一个实施例,所述节点群中的各节点均运行于可信执行环境中。从而可防止节点受到攻击进而破坏整个存储系统的正常运行。
附图说明
图1是根据本发明第一实施方式去中心化分布式存储系统的结构示意图;
图2是根据本发明第一实施方式存储方法的节点群合并流程图;
图3是根据本发明第一实施方式存储方法的节点群定位流程图;
图4是根据本发明第一实施方式存储方法的节点群分裂流程图;
图5是根据本发明第二实施方式主节点的结构示意图;
图6是根据本发明第三实施方式副节点的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本发明而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明所要求保护的技术方案。
本发明的第一实施方式涉及一种存储方法,应用于如图1所示的去中心化分布式存储系统。该系统包括L个通信连接的节点群1,每个节点群1均包括主节点10以及若干个副节点11,其中某个节点群的副节点的数量比如为M个,且每个节点群1存储部分数据以使得该系统存储有系统的完整数据。其中,L、M均为大于一定数值的自然数,本实施方式对于L、M的取值均不作具体限制。本实施方式中,主节点10执行的存储方法包括:从本节点群的副节点中挑选出备用节点,其中,本节点群可以为系统中任意一个节点群,本节点群为本主节点所在的节点群,备用节点用于在本主节点下线时取代本主节点;并监测本节点群的在线节点数量是否小于第一阈值,若小于第一阈值,则从该系统中挑选出目标合并节点群,以将本节点群与目标合并节点群合并为新的节点群,其中,合并后的新的节点群存储合并前的各节点群所存储的数据,以及监测本节点群的在线节点数量是否大于第二阈值,若大于第二阈值,则拆分本节点群,其中,拆分后的各节点群分别存储拆分前的节点群的部分数据以使得拆分后的各节点群存储拆分前的节点群的完整数据。副节点11执行的存储方法包括:确定本副节点是否被本节点群的主节点指定为备用节点,若被指定为备用节点,则在本节点群的主节点下线时,将本副节点的数据恢复至下线的主节点,并取代主节点。本发明实施方式相对于现有技术而言,去中心化分布式存储系统包括若干个通信连接的节点群,每个节点群均包括主节点以及若干个副节点,且每个节点群存储部分数据以使得系统存储有系统的完整数据。主节点从本节点群的副节点中挑选出备用节点,备用节点用于在本主节点下线时取代本主节点,因此主、副结构构成的节点群在节点频繁下线的情况下更能够保证本节点群数据的完整性,并且,主节点在监测到本节点群的在线节点数量小于第一阈值时,从系统中挑选出目标合并节点群,以将本节点群与目标合并节点群合并为新的节点群,且合并后的新的节点群存储合并前的各节点群所存储的数据,从而可在较多节点下线的情况下保证系统中数据的完整性,进而提高系统的可用性;并且,通过将节点数量较多的节点群进行拆分可提高节点群的响应性能。
下面结合图1对本实施方式的存储方法进行详细说明。本实施方式中,主节点10集成备用节点管理模块101、节点群合并模块102、数据定位模块103、元数据管理模块104、数据容错模块105、身份验证模块106以及节点群分裂模块107,并通过集成的备用节点管理模块101、节点群合并模块102等对应的方法确保在节点群中的节点频繁下线、作恶时整个分布式存储系统的数据的完整性,通过节点群分裂模块107实现节点群分裂以使得节点群具有较佳的响应性能,同时还通过集成的数据定位模块103、元数据管理模块104、数据容错模块105以及身份验证模块106等功能模块对应的方法实现分布式存储系统的数据存储以及访问。副节点11集成主节点恢复模块110、数据存储模块111以及身份验证模块112。其中,主节点恢复模块110与主节点10中的备用节点管理模块101相互配合以实现节点群中的主节点下线时,被指定为备用节点的副节点取代主节点,保证节点群数据的可用性。副节点11中的数据存储模块111以及身份验证模块112配合主节点10中的元数据管理模块104、数据容错模块105、身份验证模块106实现节点群数据的访问性以及安全性。其中,主节点10以及副节点均运行于可信执行环境中,即主节点10以及副节点11中的各模块使用的数据均受到可信执行环境保护。
具体而言,主节点10中的备用节点管理模块101用于从本节点群的副节点中挑选出备用节点,备用节点用于在本主节点下线时取代本主节点。具体地,可以根据本节点群中的副节点的以下一者或其任意组合挑选出备用节点:节点下线频率、历史在线时段、节点性能参数。比如,主节点对本节点群中的各副节点的节点下线频率、历史在线时段、节点性能参数等对应的权值进行加权求和后得到各副节点的综合权值,然后将综合权值最大的一个或者多个副节点作为备用节点,然不限于此。
本实施方式中,该去中心化分布式存储系统中的每个节点群管理一部分系统数据。具体而言,系统中的所有数据均采用键值格式存储,通过对数据的键求哈希值,再按照哈希值将系统的数据划分成多份,每份称为一个数据段,每一个节点群管理一个数据段,即负责该数据段的数据存储以及数据访问等。然不限于此,也可以采用其他映射关系将系统的全部数据分配至各个节点群进行管理。同时,每个节点群也记录相邻其他节点群所管理的数据段信息,即本主节点存储有部分哈希值范围以及与该哈希值范围连续的哈希值范围所在的相邻节点群,即相邻节点群与本节点群存储的部分哈希表的哈希值范围连续。换言之,本实施方式中各节点群采用哈希环的方式管理数据段。比如,节点群1管理数据段[M0-M1],节点群2管理数据段[M1-M2],依此类推,节点群M管理数据段[MM-1-MM],在此基础上,不需要中心节点也可方便地实现目标数据的定位。该去中心化分布式存储系统采用分布式哈希表定位请求访问的数据所在的节点群,其中,主节点10中集成的数据定位模块103用于响应于数据访问请求在本主节点或者请求系统中的其他主节点确定请求访问的数据所在的节点群。请参阅图3,该数据定位模块103所对应的数据定位方法包括步骤301至步骤303。
步骤301:确定本主节点是否存储有请求访问的数据键对应的哈希值所在的哈希值范围,若存储有该哈希值所在的哈希值范围,则执行步骤302,若未存储该哈希值所在的哈希值范围,则执行步骤303。
其中,来自于用户端的数据访问请求携带有请求访问的数据键对应的哈希值。本主节点可以在确定出该哈希值所在的哈希值范围存储在本地时执行步骤302,未存储在本地时执行步骤303。
步骤302:访问本节点群中的副节点并返回访问结果。
步骤303:向本主节点的相邻节点群请求以得到请求访问的数据所在的节点群。
具体而言,如果请求访问的数据键对应的哈希值所在的哈希值范围未存储在本主节点时,则根据请求访问的目标数据对应的哈希值以及本主节点存储的相邻节点群中的哈希值范围确定用于定位目标数据的目标相邻节点群。比如,本主节点存储的哈希值范围为M101-M102,目标数据对应的哈希值所在的范围为M120-M121,由于各节点群采用哈希环方式存储数据段,则本主节点通过比较相邻节点群存储的哈希值范围与目标数据的哈希值所在的哈希值范围,即可确定出目标相邻节点群为存储的哈希值范围为M102-M103的相邻节点群,并请求目标相邻节点群继续搜索目标数据所在的节点群,其中,目标相邻节点群的主节点通过执行步骤301至步骤303继续搜索目标数据所在的节点群。由于整个分布式存储系统能够保证系统数据的完整性,所以最终能够定位出目标数据所在的节点群,并返回给用户。
本实施方式中,主节点10集成的数据容错模块105用于响应于数据读取请求从本节点群的N个副节点中分别读取N份目标数据,并确定读取的N份目标数据中是否包含错误数据,若包含错误数据,则执行数据恢复操作。其中N为大于2的奇数。即每个节点群存储的一份数据会被分别存储到N个副节点中。在读取数据时,主节点分别从N个副节点中读取目标数据,如果确定读取的N份目标数据存在差异,则将大于半数(即(N-1)/2份)且相同的目标数据作为正确数据,将与正确数据不同的目标数据作为错误数据,并根据正确数据对错误数据进行恢复。如果确定读取的N份目标数据中不存在半数以上相同的数据,则认为该目标数据错误,并将该目标数据返回用户客户端以进行数据恢复。
本实施方式中,主节点10集成的元数据管理模块104用于存储元数据。元数据包括每条数据的数据键、数据权限、数据备份数量以及数据备份的副节点等,然不限于此。元数据管理模块104还用于在新建数据时,根据预设的数据备份数量挑选副节点,并在每条数据存储完成后,保存该条数据的元数据。在访问数据时,元数据管理模块104还用于校验数据权限,提供备份数据的副节点以便进行数据访问。
本实施方式中,主节点10集成的身份验证模块106用于验证通讯节点的身份,同时也能够证明本节点的身份。具体的身份信息包含两部分:1)代码哈希值,用来确定对方是否为本方法的一个模块;2)各模块是否运行在可信执行环境当中。如果两者都满足,那么身份验证模块将和通讯对象构建一条加密信道,从而保证之后数据交互的安全性。
本实施方式中,副节点11中集成的主节点恢复模块110用于在本副节点被指定为备用节点时,将本副节点中的数据与主节点进行同步,比如将主节点中的元数据同步至本副节点。在备用节点监测到主节点下线时,通过同步的元数据将本副节点恢复为主节点,并且通知节点群中的其他副节点。如果该副节点11不是备用节点,则其可以存储所有被指定为备用节点的副节点信息,并在检测到主节点下线时,与新的主节点通信。
本实施方式中,副节点11中集成的数据存储模块111用于实现数据存储。比如,在接收到主节点的数据写入请求时,将数据加密后存储在本地的存储设备(如硬盘)中。数据加密秘钥也存储在副节点中,秘钥的安全性可由可信执行环境保证。在接收到数据读取请求时,对数据进行解密并返回。
副节点11中的身份验证模块与主节点10中的身份验证模块作用相同,此处不再赘述。
请参阅图2,为主节点中集成的节点群合并模块102所对应的节点群合并方法的流程图,该方法包括步骤201、步骤202。
步骤201:监测本节点群的在线节点数量是否小于第一阈值,若小于第一阈值,则执行步骤202,若大于第一阈值,则返回执行步骤201。
其中,第一阈值可以根据节点群的性能以及可用性确定,比如节点群的响应性能会随第一阈值的增大而下降,而第一阈值过小时,如果节点群内同时有较多节点下线会影响该节点群的可用性(可能导致部分数据无法正常访问),因此可在权衡节点群的可用性以及性能的基础上设置合适的第一阈值。第一阈值例如为5,然不限于此。
步骤202:从系统中挑选出目标合并节点群,以将本节点群与目标合并节点群合并为新的节点群。
其中,合并后的新的节点群存储合并前的各节点群所存储的数据。
举例而言,可将本节点群的相邻节点群中在线节点数量较小的节点群作为目标合并节点群。
在实际应用中,如果一个节点群中的节点陆续下线导致节点群内的在线节点数小于第一阈值,则主节点会从相邻节点群中挑选出节点数量较少的节点群作为目标合并节点群,并向目标合并节点群发起合并请求。由于合并前的节点群存储的哈希值范围是连续的,所以合并后的节点群的哈希值范围也是连续的。发起合并请求的节点群的主节点会将存储的所有元数据信息发送至目标合并节点群的主节点,且该节点群的所有副节点也加入目标合并节点群。目标合并节点群的主节点作为合并后的新的节点群的主节点。发起合并请求的节点群的主节点将自身置为一个副节点并加入目标合并节点群,然不限于此。合并后的新的节点群的主节点将其存储的哈希值范围更新为合并前的节点群的哈希值范围之和。因此,通过节点群的合并可避免由于节点群内的节点频繁下线、作恶导致的节点群内的在线节点数量过少而可能引起的部分数据无法正常访问,从而保证整个去中心化分布式存储系统的数据的完整性,进而提高其可用性。
下面对基于本实施方式的去中心化分布式存储系统的数据插入流程进行详细说明。用户客户端根据请求插入的数据的键,计算其对应的哈希值,并向预先已知的某个节点群发起携带有该哈希值的插入请求。该节点群的主节点通过执行步骤301至步骤303定位出该哈希值对应的目标节点群,并将该目标节点群信息返回至用户客户端。用户客户端将数据键值对、数据权限等信息发送至目标节点群的主节点,发起数据插入请求。该目标节点群的主节点接收到数据插入请求后,挑选出N个副节点,并将请求插入的数据存入N个副节点。每个副节点将数据加密后,存储到本副节点的外部存储设备当中。当N个副节点均完成数据存储后,该目标节点群的主节点会对应存储新插入的数据的元数据,具体请参考前述的元数据管理模块104,此处不再赘述。数据插入完成之后,主节点将结果返回至用户客户端。
下面对基于本实施方式的去中心化分布式存储系统的数据访问流程进行详细说明。
用户客户端计算得到请求访问的数据的键对应的哈希值,并向已知的系统中的某个节点群发起查询请求。接收到该查询请求的主节点执行步骤301至步骤303后将存储该哈希值对应的数据的目标节点群信息返回至用户客户端。用户客户端将数据访问请求发送至该目标节点群的主节点。该目标节点群的主节点根据存储的元数据确定用户是否具有目标数据的访问权限,在具有访问权限时,如果是读取请求,则从副节点中读取出N份数据并进行数据完整性校验,如果是写入请求,则向副节点中写入N份目标数据。在不具有访问权限时则拒绝本次访问。数据访问操作完成后返回结果至用户客户端。
值得一提的是,在去中心化的分布式存储系统中,任意存储节点都可能是受攻击者操控的恶意节点,其可能会企图窃取用户存储的数据,甚至破坏整个存储系统的正常运行。可信执行环境是通过软硬件技术构建出的执行环境,能够保证环境内运行的应用程序不受来自操作系统的攻击。本实施方式对于可信执行环境的实现方式不做具体限制。本实施方式中,系统的所有节点均运行在可信执行环境之中,所有节点在通讯时均会对通讯目标进行身份验证,用户客户端在与存储节点通信时也可验证节点身份以及节点是否运在可信执行环境中,从而防止恶意的节点拥有者控制节点逻辑,影响整个存储系统的正常运行。
请参阅图4,本实施方式中,主节点10中集成的节点群分裂模块107用于实现节点群分裂,该节点群分裂方法包括步骤401、步骤402。
步骤401:监测本节点群的在线节点数量是否大于第二阈值,若大于第二阈值,则执行步骤402,若小于或者等于第二阈值,则返回步骤401。
由于节点群的访问性能会随着节点群内的在线节点数量的增大而降低,因此可根据实际需要设置合适的第二阈值。需要说明的是,本实施方式中的第二阈值应大于第一阈值。第二阈值例如是30个,然不限于此。
步骤402:拆分本节点群。其中,拆分后的各节点群分别存储拆分前的节点群的部分数据以使得拆分后的各节点群存储拆分前的节点群的完整数据。
具体而言,拆分前的节点群的主节点确定拆分出去的节点群的主节点以及副节点,将本节点群中划分至拆分出去的节点群的数据转移至拆分出去的节点群中。在实际应用中,当主节点监测到本节点群内的在线节点数量过大时,可以对主节点存储的数据段均匀划分为多份,比如两份,然不限于此,例如对于划分后的多个数据段是否相同也不做限制。主节点确定一个副节点作为拆分出去的节点群的主节点,可以采用类似备用节点的挑选方法挑选分裂后的节点群的主节点,此处不再赘述。根据数据段的划分结果对数据进行迁移,保证划分至拆分出去的节点群的数据均存储在其副节点中。下面举例说明节点群的分裂流程。在节点群确定出其节点数量大于第二阈值时,主节点将该节点群的数据段平均划分成两个连续的子数据段,将其中一个子数据段保留在分裂前的主节点中,将另一个子数据段发送至分裂后的节点群的主节点,然后根据分裂后的两个节点群各自的子数据段的信息进行数据迁移,使得分裂后的两个节点群中的任意副节点不会存储另一节点群的子数据段对应的数据。
本实施方式与现有技术相比,通过主-副节点构成的节点群以及动态调整节点群的节点数量,防止节点群的节点数量过小从而在节点频繁下线、作恶的情况下保证整个系统数据的完整性,提升系统的可用性,通过分布式哈希表实现目标数据所在节点群的定位,使得系统实现去中心化。并且通过利用可信执行环境技术,可有效防止恶意节点影响整个系统的正确执行,同时保护用户数据不被窃取。并且通过节点群自动分裂确保节点群的规模在一定范围内,从而保证系统的响应性能。
本发明的第二实施方式涉及一种主节点。如图5所示,该主节点包括存储器502和处理器501,存储器存储计算机程序,处理器运行所述计算机程序以实现如第一实施方式中的主节点对应的存储方法。
具体地,该主节点可以包括一个或多个处理器501以及存储器502,图5中以一个处理器501为例。处理器501、存储器502可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述存储方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器502中,当被一个或者多个处理器501执行时,执行上述任意方法实施方式中的存储方法。
上述主节点可执行本发明实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
本发明的第三实施方式涉及一种副节点。如图6所示,该副节点包括存储器602和处理器601,存储器存储计算机程序,处理器运行所述计算机程序以实现如第一实施方式中的副节点对应的存储方法。
本发明的第四实施方式涉及一种分布式存储系统,请继续参阅图1,该系统包括若干个通信连接的节点群1,各节点群1包括主节点10以及若干个副节点11。其中,主节点10可以为第二实施方式所述的主节点,副节点11可以为第三实施方式所述的副节点。
本实施方式与现有技术相比,通过主-副节点构成的节点群以及动态调整节点群的节点数量,防止节点群的节点数量过小从而在节点频繁下线、作恶的情况下保证整个系统数据的完整性,提升系统的可用性,通过分布式哈希表实现目标数据所在节点群的定位,使得系统实现去中心化。并且通过利用可信执行环境技术,可有效防止恶意节点影响整个系统的正确执行,同时保护用户数据不被窃取。并且通过节点群自动分裂确保节点群的规模在一定范围内,从而保证系统的响应性能。
本发明的第五实施方式涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (12)
1.一种存储方法,其特征在于,应用于去中心化分布式存储系统中的主节点,所述系统包括若干个通信连接的节点群,每个节点群均包括所述主节点以及若干个副节点,且每个所述节点群存储部分数据以使得所述系统存储有所述系统的完整数据;所述方法包括:
从本节点群的副节点中挑选出备用节点;其中,所述本节点群为本主节点所在的节点群,所述备用节点用于在所述本主节点下线时取代所述本主节点;
监测所述本节点群的在线节点数量是否小于第一阈值,若小于所述第一阈值,则从所述系统中挑选出目标合并节点群,以将所述本节点群与所述目标合并节点群合并为新的节点群;其中,合并后的新的节点群存储合并前的各节点群所存储的数据;以及
监测所述本节点群的在线节点数量是否大于第二阈值,若大于所述第二阈值,则拆分所述本节点群;其中,拆分后的各节点群分别存储拆分前的节点群的部分数据以使得拆分后的各节点群存储拆分前的节点群的完整数据。
2.根据权利要求1所述的存储方法,其特征在于,每个所述节点群均存储部分哈希表以使得所述系统存储有所述系统的完整哈希表;其中,所述哈希表用于定位请求访问的数据所在的节点群;所述方法还包括:
响应于数据访问请求在所述本主节点或者请求所述系统中的其他主节点确定请求访问的数据所在的节点群。
3.根据权利要求2所述的存储方法,其特征在于,从所述系统中挑选出目标合并节点群,具体包括:
将所述本节点群的相邻节点群中在线节点数量较小的节点群作为所述目标合并节点群;其中,所述相邻节点群与所述本节点群存储的部分哈希表的哈希值范围连续。
4.根据权利要求2所述的存储方法,其特征在于,所述数据访问请求携带有请求访问的数据键对应的哈希值,所述本主节点存储有部分哈希值范围以及与所述哈希值范围连续的哈希值范围所在的相邻节点群;
所述响应于数据访问请求在本主节点或者请求所述系统的其他主节点确定请求访问的数据所在的节点群,具体包括:
确定本主节点是否存储有所述请求访问的数据键对应的哈希值所在的哈希值范围,若存储有所述哈希值所在的哈希值范围,则访问所述本节点群中的副节点并返回访问结果;若所述本主节点未存储所述哈希值所在的哈希值范围,则向所述本主节点的相邻节点群请求以得到所述请求访问的数据所在的节点群。
5.根据权利要求1所述的存储方法,其特征在于,拆分所述本节点群,具体包括:
确定拆分出去的节点群的主节点以及副节点;
将所述本节点群中划分至拆分出去的节点群的数据转移至所述拆分出去的节点群中。
6.根据权利要求1所述的存储方法,其特征在于,所述从本节点群的副节点中挑选出备用节点,具体包括:
根据所述本节点群中的副节点的以下一者或其任意组合挑选出所述备用节点:
节点下线频率、历史在线时段、节点性能参数。
7.根据权利要求1所述的存储方法,其特征在于,所述方法还包括:
响应于数据读取请求从所述本节点群的N个副节点中分别读取N份目标数据;N为大于2的奇数;
确定读取的所述N份目标数据中是否包含错误数据,若包含错误数据,则执行数据恢复操作。
8.根据权利要求1所述的存储方法,其特征在于,所述节点群中的各节点均运行于可信执行环境中。
9.一种存储方法,其特征在于,应用于去中心化分布式存储系统中的副节点,所述系统包括若干个通信连接的节点群,每个节点群均包括主节点以及若干个所述副节点,且每个所述节点群存储部分哈希表以使得所述系统存储有所述系统的完整哈希表;其中,所述哈希表用于定位请求访问的数据所在的节点群;所述方法包括:
确定本副节点是否被本节点群的主节点指定为备用节点,若被指定为所述备用节点,则在所述本节点群的主节点下线时,将所述本副节点的数据恢复至下线的所述主节点,并取代所述主节点。
10.一种主节点,其特征在于,包括存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如权利要求1至8中任一项所述的存储方法。
11.一种副节点,其特征在于,包括存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如权利要求9所述的存储方法。
12.一种分布式存储系统,其特征在于,包括若干个通信连接的节点群;
所述节点群包括如权利要求10所述的主节点以及若干个如权利要求11所述的副节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910729210.7A CN110597459B (zh) | 2019-08-08 | 2019-08-08 | 存储方法、主、副节点及包含其的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910729210.7A CN110597459B (zh) | 2019-08-08 | 2019-08-08 | 存储方法、主、副节点及包含其的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597459A true CN110597459A (zh) | 2019-12-20 |
CN110597459B CN110597459B (zh) | 2023-04-11 |
Family
ID=68853867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910729210.7A Active CN110597459B (zh) | 2019-08-08 | 2019-08-08 | 存储方法、主、副节点及包含其的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597459B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010119A (zh) * | 2021-04-27 | 2021-06-22 | 宏图智能物流股份有限公司 | 一种通过主备方式实现语音数据分布式存储的方法 |
CN115695320A (zh) * | 2023-01-04 | 2023-02-03 | 苏州浪潮智能科技有限公司 | 一种前后端负载管理方法、系统、设备及计算机存储介质 |
US11928204B2 (en) | 2020-12-15 | 2024-03-12 | Foris Technology Pte Ltd | Method and system with multiple heterogeneous TEE implementations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107277144A (zh) * | 2017-06-22 | 2017-10-20 | 浙江力石科技股份有限公司 | 一种分布式高并发云存储数据库系统及其负荷均衡方法 |
CN109327548A (zh) * | 2018-11-27 | 2019-02-12 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法及区块链更新系统 |
CN109783564A (zh) * | 2019-01-28 | 2019-05-21 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
-
2019
- 2019-08-08 CN CN201910729210.7A patent/CN110597459B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107277144A (zh) * | 2017-06-22 | 2017-10-20 | 浙江力石科技股份有限公司 | 一种分布式高并发云存储数据库系统及其负荷均衡方法 |
CN109327548A (zh) * | 2018-11-27 | 2019-02-12 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法及区块链更新系统 |
CN109783564A (zh) * | 2019-01-28 | 2019-05-21 | 上海雷腾软件股份有限公司 | 支持多节点的分布式缓存方法及设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928204B2 (en) | 2020-12-15 | 2024-03-12 | Foris Technology Pte Ltd | Method and system with multiple heterogeneous TEE implementations |
CN113010119A (zh) * | 2021-04-27 | 2021-06-22 | 宏图智能物流股份有限公司 | 一种通过主备方式实现语音数据分布式存储的方法 |
CN113010119B (zh) * | 2021-04-27 | 2022-09-30 | 宏图智能物流股份有限公司 | 一种通过主备方式实现语音数据分布式存储的方法 |
CN115695320A (zh) * | 2023-01-04 | 2023-02-03 | 苏州浪潮智能科技有限公司 | 一种前后端负载管理方法、系统、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110597459B (zh) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750334B (zh) | 一种基于Ceph的网络靶场后端存储系统设计方法 | |
US10726144B1 (en) | Token-based storage service | |
US10154086B1 (en) | Distributed consumer cloud storage system | |
CN107193490B (zh) | 一种基于区块链的分布式数据存储系统及方法 | |
US10069630B2 (en) | Synchronizing credential hashes between directory services | |
CN110597459B (zh) | 存储方法、主、副节点及包含其的系统 | |
CN109542611B (zh) | 数据库即服务系统、数据库调度方法、设备及存储介质 | |
CN103354923B (zh) | 一种数据重建方法、装置和系统 | |
US9690835B2 (en) | System and method for providing a transactional command line interface (CLI) in a network environment | |
EP3564835B1 (en) | Data redistribution method and apparatus, and database cluster | |
US10158579B2 (en) | Resource silos at network-accessible services | |
US9594922B1 (en) | Non-persistent shared authentication tokens in a cluster of nodes | |
US20120151563A1 (en) | Automated management of system credentials | |
US10191958B1 (en) | Storage provisioning in a data storage environment | |
US10515228B2 (en) | Commit and rollback of data streams provided by partially trusted entities | |
WO2021226344A1 (en) | Providing data management as-a-service | |
US11693581B2 (en) | Authenticated stateless mount string for a distributed file system | |
US20200125452A1 (en) | Systems and methods for cross-regional back up of distributed databases on a cloud service | |
CN111026711A (zh) | 基于区块链数据存储方法、装置、计算机设备及存储介质 | |
US10678754B1 (en) | Per-tenant deduplication for shared storage | |
CN114840488B (zh) | 一种基于超融合结构的分布式存储方法、系统及存储介质 | |
US20200081869A1 (en) | File storage method and storage apparatus | |
EP4081888A1 (en) | Dynamic adaptive partition splitting | |
CN105488139A (zh) | 基于用电信息采集系统的跨平台存储数据迁移的方法 | |
CN111831743B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |