CN103281358A - 一种基于一致性hash算法存储资源的方法 - Google Patents

一种基于一致性hash算法存储资源的方法 Download PDF

Info

Publication number
CN103281358A
CN103281358A CN2013101652807A CN201310165280A CN103281358A CN 103281358 A CN103281358 A CN 103281358A CN 2013101652807 A CN2013101652807 A CN 2013101652807A CN 201310165280 A CN201310165280 A CN 201310165280A CN 103281358 A CN103281358 A CN 103281358A
Authority
CN
China
Prior art keywords
value
sample space
resource
space
hash
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
Application number
CN2013101652807A
Other languages
English (en)
Other versions
CN103281358B (zh
Inventor
周瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Opzoon Technology Co Ltd
Original Assignee
Opzoon Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Opzoon Technology Co Ltd filed Critical Opzoon Technology Co Ltd
Priority to CN201310165280.7A priority Critical patent/CN103281358B/zh
Publication of CN103281358A publication Critical patent/CN103281358A/zh
Priority to PCT/CN2013/089254 priority patent/WO2014180139A1/zh
Application granted granted Critical
Publication of CN103281358B publication Critical patent/CN103281358B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于一致性hash算法存储资源的方法,通过从资源集合中选取元素,并计算元素的哈希值,计算公式为h=m%n,其中h为哈希值,m为资源集合M中元素的值,n为大于等于样本空间N的值的最小2次幂;比较h与n的值的大小,如果h小于n则资源集合M中的资源对应于样本空间N的h值的位置,否则对应于样本空间N的h/2值的位置。本发明对计算的hash值进行伙伴处理,避免在映射空间发生变化后hash关系发生激烈变化,也避免资源定位变化的问题,减小变化带来的运算量,同时还能够提高资源存储和读取的速度。

Description

一种基于一致性hash算法存储资源的方法
技术领域
本发明涉及云计算技术领域,尤其涉及一种基于一致性hash算法存储资源的方法。
背景技术
在云存储中,存储的资源与存储位置之间的关系往往记录在一台元数据服务器中,在元数据服务器中往往使用hash(哈希)算法进行处理。传统的哈希算法是指一个集合M,通过某种算法,映射到另外一个较小的集合N。比如现在当前存储的资源有1M的文件,存储在100台机器上,1M的文件与100台机器之间通过某种算法进行映射,可以使用IO请求通过该算法查找文件位置。
在现有算法中,在集合N的样本空间变化之后,集合M与集合N的映射关系将会发生变化,这种变化在云存储中会带来很大的影响。例如,在上述100台机器增加到101台时,1M文件的位置需要重新计算和定位,这种运算量是非常大的。一旦元数据服务器死机,会导致云存储服务中断,而云存储使用集中元数据设计的原因,主要是没有合适的弹性哈希算法,来计算存储的资源所在的存储位置。传统的哈希算法比较注重冲突处理,而在云存储中的哈希算法,更注重hash映射空间变化之后,希望能够尽可能地保持资源与hash值关系的稳定。一旦能保持稳定,则可以抛弃元数据服务器,采用无中心结构来存储资源传统的hash值算法。
但是现有技术中的算法还无法实现当用于存储资源的机器数量发生改变时,仍能保持资源与hash值关系的稳定,降低映射关系的变化。
发明内容
(一)要解决的技术问题
针对上述缺陷,本发明要解决的技术问题是如何解决映射空间变化时降低映射关系的变化,对资源的定位产生尽量小的影响。
(二)技术方案
为解决上述问题,本发明提供了一种基于一致性hash算法存储资源的方法,其特征在于,所述方法具体包括:
S1、从资源集合中选取元素,并计算所述元素的哈希值,计算公式为h=m%n,其中h为所述哈希值,m为资源集合M中元素的值,n为大于等于样本空间N的值的最小2次幂;
S2、比较h与n的值的大小,如果h小于n则所述资源集合M中的资源对应于所述样本空间N的h值的位置,否则对应于所述样本空间N的h/2值的位置。
进一步地,步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于写请求,当存储系统中所述样本空间N的存储空间增大时,n的值变大,并在增加后的样本空间N1的h/2位置处进行写操作。
进一步地,所述步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于写请求,当存储系统中所述样本空间N的存储空间减小时,n的值变小,并在减小后的样本空间N2的h/2位置处进行写操作。
进一步地,所述步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于读请求,在所述样本空间N的h/2位置处进行一级查找,如果找到则直接在所述读请求中相应的操作位置进行读操作,否则继续在所述样本空间N的h/4位置处进行二级查找,并循环上述操作在所述样本空间M的h/2s位置进行s级查找,知道找到为止,其中s为整数且s≥3。
进一步地,所述读请求或写请求中包含读操作或写操作的操作位置。
进一步地,在所述读请求中相应的操作位置进行读操作之后还包括根据查找到的位置对所述资源集合中元素的存储位置进行纠正。
(三)有益效果
本发明提供了一种基于一致性hash算法存储资源的方法,通过对计算的hash值进行伙伴处理,避免在映射空间发生变化后hash关系发生激烈变化,解决了云存储的节点发生动态变化时导致资源定位变化的问题,同时还能够提高资源存储和读取的速度。
附图说明
图1为本发明实施例中一种基于一致性hash算法存储资源的方法的步骤流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明实施例中提供了本发明提供了一种基于一致性hash算法存储资源的方法,步骤流程如图1所示,具体包括以下步骤:
步骤S1:从资源集合中选取元素,并计算该元素的哈希值。
计算哈希值的公式为h=m%n,其中h为计算得到的哈希值,m为资源集合M中元素的值,n为大于等于样本空间N的值的最小2次幂。
样本空间N中是用于存储资源集合M中资源的机器集合,而且m和n之间无明确的大小关系,m可大于等于n,也可小于n,但是n值的取值是根据样本空间N的值计算的,一定要大于等于样本空间N的值的最小2次幂,例如:样本空间N中有3个用于存储资源的机器,则n的值为22=4>3;如果样本空间N中有5个用于存储资源的机器,则n的值为23=8>5。
本实施例中的hash算法是参考现有的伙伴算法得到的。对于固定分区和动态分区方案都存在一定的缺陷,固定分区方案限制活跃进程的数目,而且,可用分区的大小与进程大小非常不匹配,空间的利用率非常低。动态分区的维护十分复杂,而且需要紧凑的开销。一个比较有吸引力的折衷方案是伙伴算法。在伙伴系统中,内存块的大小为2k,L≤K≤U,其中2L为分配的最小块的尺寸,2u为分配的最大块的尺寸。伙伴算法能够高效的分配和回收内存,并可以避免内存碎片的产生,从而提高了物理内存的利用率。伙伴算法一次分配和释放2的幂次方个页面,而本实施例中的hash算法中的样本空间N中资源的数目n就是大于等于样本空间N的最小2次幂。
步骤S2:比较h与n的值的大小,如果h小于n则资源集合M中的资源对应于样本空间N的h值的位置,否则对应于样本空间N的h/2值的位置。
具体的:对于写请求,当存储系统中样本空间N的存储空间增大时,n的值变大,并在增加后的样本空间N1的h/2位置处进行写操作;
对于写请求,当存储系统中样本空间N的存储空间减小时,n的值变小,并在减小后的样本空间N2的h/2位置处进行写操作;
对于读请求,在样本空间N的h/2位置处进行一级查找,如果找到则直接在读请求中相应的操作位置进行读操作,否则继续在样本空间N的h/4位置处进行二级查找,并循环上述操作在样本空间M的h/2s位置进行s级查找,知道找到为止,其中s为整数且s≥3。
读请求或写请求中包含读操作或写操作的操作位置。对于读请求,存储空间改变与否,改变的只是n的值,而算法不会改变。
在读请求中相应的操作位置进行读操作之后还包括根据查找到的位置对资源集合中元素的存储位置进行纠正。
通过使用本实施例中提供的方法,通过对计算的hash值进行伙伴处理,避免在映射空间发生变化后hash关系发生激烈变化,解决了云存储的节点发生动态变化时导致资源定位变化的问题,将重新定位的变化降低到最小范围内,同时还能够提高资源存储和读取的速度。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (6)

1.一种基于一致性hash算法存储资源的方法,其特征在于,所述方法具体包括:
S1、从资源集合中选取元素,并计算所述元素的哈希值,计算公式为h=m%n,其中h为所述哈希值,m为资源集合M中元素的值,n为大于等于样本空间N的值的最小2次幂;
S2、比较h与n的值的大小,如果h小于n则所述资源集合M中的资源对应于所述样本空间N的h值的位置,否则对应于所述样本空间N的h/2值的位置。
2.如权利要求1所述的方法,其特征在于,所述步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于写请求,当存储系统中所述样本空间N的存储空间增大时,n的值变大,并在增加后的样本空间N1的h/2位置处进行写操作。
3.如权利要求1所述的方法,其特征在于,所述步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于写请求,当存储系统中所述样本空间N的存储空间减小时,n的值变小,并在减小后的样本空间N2的h/2位置处进行写操作。
4.如权利要求1所述的方法,其特征在于,所述步骤S2中对应于所述样本空间N的h/2值的位置还包括:
对于读请求,在所述样本空间N的h/2位置处进行一级查找,如果找到则直接在所述读请求中相应的操作位置进行读操作,否则继续在所述样本空间N的h/4位置处进行二级查找,并循环上述操作在所述样本空间M的h/2s位置进行s级查找,知道找到为止,其中s为整数且s≥3。
5.如权利要求2-4中任一项所述的方法,其特征在于,所述读请求或写请求中包含读操作或写操作的操作位置。
6.如权利要求4所述的方法,其特征在于,在所述读请求中相应的操作位置进行读操作之后还包括根据查找到的位置对所述资源集合中元素的存储位置进行纠正。
CN201310165280.7A 2013-05-07 2013-05-07 一种基于一致性hash算法存储资源的方法 Expired - Fee Related CN103281358B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310165280.7A CN103281358B (zh) 2013-05-07 2013-05-07 一种基于一致性hash算法存储资源的方法
PCT/CN2013/089254 WO2014180139A1 (zh) 2013-05-07 2013-12-12 一种基于一致性hash算法存储资源的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310165280.7A CN103281358B (zh) 2013-05-07 2013-05-07 一种基于一致性hash算法存储资源的方法

Publications (2)

Publication Number Publication Date
CN103281358A true CN103281358A (zh) 2013-09-04
CN103281358B CN103281358B (zh) 2016-04-20

Family

ID=49063803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310165280.7A Expired - Fee Related CN103281358B (zh) 2013-05-07 2013-05-07 一种基于一致性hash算法存储资源的方法

Country Status (2)

Country Link
CN (1) CN103281358B (zh)
WO (1) WO2014180139A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014180139A1 (zh) * 2013-05-07 2014-11-13 汉柏科技有限公司 一种基于一致性hash算法存储资源的方法
CN104270458A (zh) * 2014-10-17 2015-01-07 浪潮(北京)电子信息产业有限公司 一种实现云存储系统数据分布管理的方法及装置
CN111031567A (zh) * 2020-01-14 2020-04-17 南通先进通信技术研究院有限公司 一种核心网设备的流量统计方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
WO2012027387A1 (en) * 2010-08-26 2012-03-01 Alibaba Group Holding Limited Method, system and server of removing a distributed caching object
CN102457571A (zh) * 2011-09-15 2012-05-16 中标软件有限公司 一种云存储中数据均衡分布方法
CN102739622A (zh) * 2011-04-15 2012-10-17 北京兴宇中科科技开发股份有限公司 一种可扩展的数据存储系统
US20120271943A1 (en) * 2009-12-31 2012-10-25 Pu Chen Method, apparatus, and system for scheduling distributed buffer resources
CN102819599A (zh) * 2012-08-15 2012-12-12 华数传媒网络有限公司 在一致性哈希数据分布基础上构建层次目录的方法
CN102855294A (zh) * 2012-08-13 2013-01-02 北京联创信安科技有限公司 一种智能哈希数据布局方法、集群存储系统及其方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972366B2 (en) * 2010-09-29 2015-03-03 Red Hat, Inc. Cloud-based directory system based on hashed values of parent and child storage locations
CN103281358B (zh) * 2013-05-07 2016-04-20 汉柏科技有限公司 一种基于一致性hash算法存储资源的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
US20120271943A1 (en) * 2009-12-31 2012-10-25 Pu Chen Method, apparatus, and system for scheduling distributed buffer resources
WO2012027387A1 (en) * 2010-08-26 2012-03-01 Alibaba Group Holding Limited Method, system and server of removing a distributed caching object
CN102739622A (zh) * 2011-04-15 2012-10-17 北京兴宇中科科技开发股份有限公司 一种可扩展的数据存储系统
CN102457571A (zh) * 2011-09-15 2012-05-16 中标软件有限公司 一种云存储中数据均衡分布方法
CN102855294A (zh) * 2012-08-13 2013-01-02 北京联创信安科技有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
CN102819599A (zh) * 2012-08-15 2012-12-12 华数传媒网络有限公司 在一致性哈希数据分布基础上构建层次目录的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014180139A1 (zh) * 2013-05-07 2014-11-13 汉柏科技有限公司 一种基于一致性hash算法存储资源的方法
CN104270458A (zh) * 2014-10-17 2015-01-07 浪潮(北京)电子信息产业有限公司 一种实现云存储系统数据分布管理的方法及装置
CN111031567A (zh) * 2020-01-14 2020-04-17 南通先进通信技术研究院有限公司 一种核心网设备的流量统计方法
CN111031567B (zh) * 2020-01-14 2022-06-24 南通先进通信技术研究院有限公司 一种核心网设备的流量统计方法

Also Published As

Publication number Publication date
WO2014180139A1 (zh) 2014-11-13
CN103281358B (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
CN108804350B (zh) 一种内存访问方法及计算机系统
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
US9830260B2 (en) Method for mapping page address based on flash memory and system therefor
US10083131B2 (en) Generating and/or employing a descriptor associated with a memory translation table
US20100030997A1 (en) Virtual memory management
CN104679778A (zh) 一种搜索结果的生成方法及装置
KR20150095781A (ko) 메모리 리클레임 방법 및 장치
CN103049392B (zh) 缓存目录的实现方法及装置
CN101901248A (zh) 一种布隆过滤器的生成、更新以及查询元素方法和装置
CN101604337A (zh) 一种哈希表项存储、查找装置及方法
CN104361113A (zh) 一种内存-闪存混合存储模式下的olap查询优化方法
CN103942161B (zh) 只读缓存的去冗余系统及方法以及缓存的去冗余方法
CN111459919B (zh) 数据查询方法、加载组件、搜索组件和存储介质
CN103279521A (zh) 一种基于Hadoop的视频大数据分布式解码方法
CN104407879A (zh) 一种电网时序大数据并行加载方法
CN102521312B (zh) 一种文件索引的存储方法及文件系统
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN103309815A (zh) 一种提高固态盘有效容量和寿命的方法和系统
CN114356248B (zh) 一种数据处理方法和装置
CN101751993A (zh) 缓存控制设备和方法
CN103488523A (zh) 一种页的访问方法和页的访问装置、服务器
CN108399175A (zh) 一种数据存储、查询方法及其装置
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
CN105577806A (zh) 一种分布式缓存方法及系统
CN103455284A (zh) 一种读写数据的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160420

Termination date: 20180507

CF01 Termination of patent right due to non-payment of annual fee