CN108124012A - 一种基于哈希算法的分布式缓存计算方法 - Google Patents
一种基于哈希算法的分布式缓存计算方法 Download PDFInfo
- Publication number
- CN108124012A CN108124012A CN201711396873.9A CN201711396873A CN108124012A CN 108124012 A CN108124012 A CN 108124012A CN 201711396873 A CN201711396873 A CN 201711396873A CN 108124012 A CN108124012 A CN 108124012A
- Authority
- CN
- China
- Prior art keywords
- server
- cache
- file
- hash
- cache server
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/061—Improving I/O performance
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Abstract
本发明公开了一种基于哈希算法的分布式缓存计算方法,涉及企业信息化技术领域,技术方案为包括S1、建立多个服务器组成的分布式缓存集群;S2、对分布式缓存文件存取算法上使用哈希算法,对服务器数量取模方法改成对232取模,232定义成一个虚拟圆;S3、根据所述S2的定义,则服务器在圆中的位置为Hash(nodeA的IP地址)%232,即得到一个0到232‑1之间的值,这个值就是服务器所在的所述S2定义的虚拟圆中位置值。本发明的有益效果是:通过哈希算法引入虚拟节点解决缓存服务器数量发生变化时对缓存文件和系统的影响,提高缓存服务器和系统的高可用性,保证系统的快速响应和稳定运行。
Description
技术领域
本发明涉及企业信息化技术领域,特别涉及一种基于哈希算法的分布式缓存计算方法。
背景技术
随着企业信息化建设越来越完善,数据量和响应速度成为了企业成功的关键,企业对数据的存储、读取效率有着很高的要求,在高并发环境下,大量的读、写请求涌向磁盘文件,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此分布式缓存应运而生。
通常我们解决磁盘IO瓶颈会采用多台机器做缓存集群,来平均负载大量的读、写请求,例如:我们将12000个文件缓存存放在3台缓存服务器上,每台机器存放4000个文件,这样同时并发读、写文件时就会多台服务器来负载请求,保证读、写效率。我们在上传文件时需要计算每个文件存放在哪个缓存服务器,通常简答的算法可以根据文件顺序号%3(台服务器)=0或1或2,0存放在第一台服务器,1存放在第二台服务器,2存放在第三台服务器。由于文件顺序号不变,读文件时也可采用相同的方法,读文件1时去第一台服务器上取,读文件2时去第二台服务器上取,读文件3时去第三台服务器上取,看似没有问题。但是如果3台服务器不能满足缓存的需求,需要再增加2台服务器,如果还按照上述方法读取文件,由于缓存服务器数量由3变成了5,会导致一定时间内取不到缓存文件,取不到缓存文件后只能继续向后端服务器请求数据。同理,如果3台服务器中有一台发生了故障需要移除,那服务器数量由3变成了2,这样所有以前缓存的文件都将没有意义,大量缓存文件失效,此时缓存服务器已经无法承担部分压力的作用,可能会导致后端服务器压力过大宕机,整个系统被压垮。
当缓存服务器数量发生变化时,几乎所有缓存的位置都会发生了改变,会引起缓存的数据丢失,会导致整个系统压力过大而压垮,这是传统做法的问题。
发明内容
为了实现上述发明目的,一种基于哈希算法的分布式缓存计算方法,通过有效合理的计算分配,使缓存服务器数量发生变化时,影响降到最低,来保证以前缓存的数据可用和系统的正常运行。
其技术方案为:一种基于哈希算法的分布式缓存计算方法,包括:
S1、建立多个服务器组成的分布式缓存集群;
S2、对分布式缓存文件存取算法上使用哈希算法,对服务器数量取模方法改成对232取模, 232定义成一个虚拟圆,这个圆由232个点组成,第一个点是0,最后一个点是232-1;
S3、根据缓存服务器的数量将缓存服务器定义为服务器nodeA、nodeB、nodeC、nodeD……nodeN,根据所述S2的定义,则服务器在圆中的位置为Hash(nodeA的IP地址)%232,即得到一个0到232-1之间的值,这个值就是服务器所在的所述S2定义的虚拟圆中位置值;
此处Hash,一般翻译做“散列”,也有直接音译为“哈希”的,是用来解决数据和数据之间对应关系的一种算法。就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
S4、存取文件时使用Hash(文件顺序号)%232,得到的值即虚拟圆中的对应位置值,根据这个文件所在虚拟圆中的位置顺时针向下查找到的第一台缓存服务器即为文件存放的服务器;
S5、当某个缓存服务器出现问题移除,则原本位于其上的文件重新缓存到与其相邻的下一个服务器上,其它缓存文件不受影响。
S6、当增设一台缓存服务器时,影响的缓存文件为在新增加这台服务器的位置到其逆时针查找上一台服务器之间的缓存数据。对于缓存文件的具体影响是:由于缓存文件所在服务器的查找是根据圆中的位置顺时针向下查找服务器,所以当增设一台缓存服务器时,在这台服务器逆时针向上相邻的服务器之间的文件数据以前会定位到新增设服务器顺时针向下相邻的那台服务器,现在就会定位到新增设的这台服务器,新增设服务器后第一次访问需要重新缓存文件。
优选为,所述S3中在缓存服务器的基础上,引入虚拟节点,为每个物理服务器虚拟至少两个虚拟服务器,增加一个虚拟缓存服务器和实际缓存服务器的一个映射关系来均匀地使缓存服务器分布在Hash环中。
本发明实施例提供的技术方案带来的有益效果是:通过哈希算法引入虚拟节点解决缓存服务器数量发生变化时对缓存文件和系统的影响,提高缓存服务器和系统的高可用性,保证系统的快速响应和稳定运行。
附图说明
图1基于哈希算法的分布式缓存计算Hash环效果图;
图2基于哈希算法的分布式缓存计算缓存服务器位置效果图;
图3基于哈希算法的分布式缓存计算文件查找缓存服务器效果图;
图4基于哈希算法的分布式缓存计算nodeC故障移除效果图;
图5基于哈希算法的分布式缓存计算新增nodeE节点效果图;
图6基于哈希算法的分布式缓存计算Hash环偏斜效果图;
图7基于哈希算法的分布式缓存计算虚拟节点效果图;
图8基于哈希算法的分布式缓存计算缓存服务器部署流程图;
图9基于哈希算法的分布式缓存计算文件读取流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
本发明提供一种基于哈希算法的分布式缓存计算方法,对分布式缓存文件存取算法上使用哈希算法,将上面对服务器数量取莫方法改成对232取莫,把232想象成一个圆,这个圆由232个点组成,第一个点是0,最后一个点是232-1,参照图1。
假设我们有四台缓存服务器nodeA、nodeB、nodeC、nodeD,这四台服务器在圆中的位置就是Hash(nodeA的IP地址)%232,这样就得到一个0到232-1之间的值,这个值就是服务器所在的圆中位置,以此类推四台服务器的位置参照图2。
存取文件时使用Hash(文件顺序号)%232,得到的值即圆中的位置,根据这个文件所在圆中的位置顺时针向下查找到的第一台缓存服务器即为文件存放的服务器,参照图3,file1和file2文件存放nodeB服务器。
假设缓存服务器nodeC发生了故障需要移除,所影响的只是file3和file4缓存文件,file3和file4文件会重新缓存在nodeD服务器上,而其他的缓存文件则不受影响,参照图4。同理,如果增加一台缓存服务器nodeE,影响的缓存文件只是新增加这台服务器的位置到逆时针查找上一台服务器之间的缓存数据,参照图5,只影响到file5,而其他的缓存文件则不受影响。
在实际使用过程中可能会将缓存服务器计算后映射的位置如图6。这样nodeA服务器的命中率就远高于其他三个服务器,会导致Hash环的偏斜问题,因此我们解决这个问题引入虚拟节点,即实际缓存服务器是nodeA、nodeB、nodeC、nodeD,但我们虚拟出来的服务器是nodeA1、nodeA2、nodeB1、nodeB2、nodeC1、nodeC2、nodeD1、nodeD2,每台物理服务器虚拟出两个虚拟服务器,这个可以根据实际需求扩展,这样我们只需增加一个虚拟缓存服务器和实际缓存服务器的一个映射关系来尽量均匀地使缓存服务器分布在Hash环中,参照图7。
假设一个公司的业务系统需要读取大量的图片,该公司有4台前端缓存服务器和2台负载后端服务器,每台前端服务器虚拟两个缓存服务器节点,即产生8台缓存服务器节点。
首先进行服务器位置算法部署,参见图8,将每个服务器通过Hash(虚拟节点缓存服务器IP#1)%232,得值即为该缓存服务器所在Hash环的位置,效果参见7。
当文件进行存取时,文件读取的流程参照图9,首先根据Hash(文件顺序号)%232,得到一个Hash环的位置,从该位置顺时针向下找到最近的一台服务器为命中服务器,从该服务器读取文件,如果文件存在直接返回,如果文件不存在再请求后台服务器获取到文件进行缓存返回。
当改公司因为业务扩展需要增加服务器时,参见图5,只影响到file5缓存文件。当某台服务器发生故障需要移除时参见图4,只影响到file3和file4缓存文件,这种部署和存取算法的优点就是在新增和移除服务器时对缓存文件的影响将至最低,从而减轻了后端服务器的压力,保障了系统的正常运行。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于哈希算法的分布式缓存计算方法,其特征在于:
S1、建立多个服务器组成的分布式缓存集群;
S2、对分布式缓存文件存取算法上使用哈希算法,对服务器数量取模方法改成对232取模, 232定义成一个虚拟圆,这个虚拟圆由232个点组成,第一个点是0,最后一个点是232-1;
S3、根据缓存服务器的数量将缓存服务器定义为服务器nodeA、nodeB、nodeC、nodeD……nodeN,根据所述S2的定义,则服务器在圆中的位置为Hash(nodeA的IP地址)%232,即得到一个0到232-1之间的值,这个值就是服务器所在的所述S2定义的虚拟圆中位置值;
S4、存取文件时使用Hash(文件顺序号)%232,得到的值即虚拟圆中的对应位置值,根据这个文件所在虚拟圆中的位置顺时针向下查找到的第一台缓存服务器即为文件存放的服务器;
S5、当某个缓存服务器出现问题移除,则原本位于其上的文件重新缓存到与其相邻的下一个服务器上,其它缓存文件不受影响;
S6、当增设一台缓存服务器时,影响的缓存文件为在新增加这台服务器的位置到其逆时针查找上一台服务器之间的缓存数据。
2.根据权利要求1所述的基于哈希算法的分布式缓存计算方法,其特征在于,所述S3中在缓存服务器的基础上,引入虚拟节点,为每个物理服务器虚拟至少两个虚拟服务器,增加一个虚拟缓存服务器和实际缓存服务器的一个映射关系来均匀地使缓存服务器分布在Hash环中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711396873.9A CN108124012A (zh) | 2017-12-21 | 2017-12-21 | 一种基于哈希算法的分布式缓存计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711396873.9A CN108124012A (zh) | 2017-12-21 | 2017-12-21 | 一种基于哈希算法的分布式缓存计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108124012A true CN108124012A (zh) | 2018-06-05 |
Family
ID=62231171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711396873.9A Pending CN108124012A (zh) | 2017-12-21 | 2017-12-21 | 一种基于哈希算法的分布式缓存计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108124012A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218438A (zh) * | 2018-10-12 | 2019-01-15 | 山东科技大学 | 一种分布式缓存服务器集群的性能优化方法 |
CN109246250A (zh) * | 2018-11-08 | 2019-01-18 | 程桂平 | 根据服务器数量的改变而调整虚拟节点数量的方法 |
CN110908590A (zh) * | 2018-09-17 | 2020-03-24 | 中国电力科学研究院有限公司 | 一种变电站数据的分布式存储方法及系统 |
CN111274310A (zh) * | 2018-12-05 | 2020-06-12 | 中国移动通信集团山东有限公司 | 一种分布式数据缓存方法及系统 |
CN111917853A (zh) * | 2020-07-24 | 2020-11-10 | 山东云缦智能科技有限公司 | 用于内容分发网络的分布式缓存扩缩容的优化方法 |
CN112162987A (zh) * | 2020-10-12 | 2021-01-01 | 北京字跳网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112558869A (zh) * | 2020-12-11 | 2021-03-26 | 北京航天世景信息技术有限公司 | 基于大数据遥感影像缓存方法 |
CN114428585A (zh) * | 2020-10-29 | 2022-05-03 | 北京奇艺世纪科技有限公司 | 数据存储方法、装置及电子设备 |
CN117834642A (zh) * | 2024-03-04 | 2024-04-05 | 中国人民解放军国防科技大学 | 一种海量二维码分布式生成方法、系统及存储介质 |
CN117834642B (zh) * | 2024-03-04 | 2024-05-17 | 中国人民解放军国防科技大学 | 一种海量二维码分布式生成方法、系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070071015A1 (en) * | 2005-09-29 | 2007-03-29 | Fujitsu Network Communications, Inc. | Using CRC-15 as hash function for MAC bridge filter design |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN105007328A (zh) * | 2015-07-30 | 2015-10-28 | 山东超越数控电子有限公司 | 一种基于一致性hash的网络cache设计方法 |
CN106572153A (zh) * | 2016-10-21 | 2017-04-19 | 乐视控股(北京)有限公司 | 集群的数据存储方法及装置 |
-
2017
- 2017-12-21 CN CN201711396873.9A patent/CN108124012A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070071015A1 (en) * | 2005-09-29 | 2007-03-29 | Fujitsu Network Communications, Inc. | Using CRC-15 as hash function for MAC bridge filter design |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN105007328A (zh) * | 2015-07-30 | 2015-10-28 | 山东超越数控电子有限公司 | 一种基于一致性hash的网络cache设计方法 |
CN106572153A (zh) * | 2016-10-21 | 2017-04-19 | 乐视控股(北京)有限公司 | 集群的数据存储方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908590A (zh) * | 2018-09-17 | 2020-03-24 | 中国电力科学研究院有限公司 | 一种变电站数据的分布式存储方法及系统 |
CN109218438A (zh) * | 2018-10-12 | 2019-01-15 | 山东科技大学 | 一种分布式缓存服务器集群的性能优化方法 |
CN109246250A (zh) * | 2018-11-08 | 2019-01-18 | 程桂平 | 根据服务器数量的改变而调整虚拟节点数量的方法 |
CN111274310A (zh) * | 2018-12-05 | 2020-06-12 | 中国移动通信集团山东有限公司 | 一种分布式数据缓存方法及系统 |
CN111917853A (zh) * | 2020-07-24 | 2020-11-10 | 山东云缦智能科技有限公司 | 用于内容分发网络的分布式缓存扩缩容的优化方法 |
CN112162987A (zh) * | 2020-10-12 | 2021-01-01 | 北京字跳网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN114428585A (zh) * | 2020-10-29 | 2022-05-03 | 北京奇艺世纪科技有限公司 | 数据存储方法、装置及电子设备 |
CN112558869A (zh) * | 2020-12-11 | 2021-03-26 | 北京航天世景信息技术有限公司 | 基于大数据遥感影像缓存方法 |
CN117834642A (zh) * | 2024-03-04 | 2024-04-05 | 中国人民解放军国防科技大学 | 一种海量二维码分布式生成方法、系统及存储介质 |
CN117834642B (zh) * | 2024-03-04 | 2024-05-17 | 中国人民解放军国防科技大学 | 一种海量二维码分布式生成方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108124012A (zh) | 一种基于哈希算法的分布式缓存计算方法 | |
US8166063B2 (en) | Query routing in distributed database system | |
Bronson et al. | {TAO}:{Facebook’s} distributed data store for the social graph | |
Cai et al. | Maan: A multi-attribute addressable network for grid information services | |
CN102006330B (zh) | 分布式缓存系统、数据的缓存方法及缓存数据的查询方法 | |
US9935919B2 (en) | Directory partitioned system and method | |
US20160087880A1 (en) | Routing network traffic based on social information | |
US20160226931A9 (en) | Virtual multi-cluster clouds | |
CN108011929A (zh) | 数据请求处理方法、装置、计算机设备和存储介质 | |
CN102971732A (zh) | 键/值存储器的集成分级查询处理的系统结构 | |
CN108282522A (zh) | 基于动态路由的数据存储访问方法及系统 | |
US8539041B2 (en) | Method, apparatus, and network system for acquiring content | |
CN104410531B (zh) | 冗余的系统架构方法 | |
CN104184812A (zh) | 一种基于私有云的多点数据传输方法 | |
CN109218438A (zh) | 一种分布式缓存服务器集群的性能优化方法 | |
CN102438020A (zh) | 内容分发网络中内容分发的方法、设备和网络系统 | |
CN114844846A (zh) | 一种基于可编程交换机的多级缓存分布式键值存储系统 | |
CN111917851A (zh) | 一种基于一致性哈希实现带权的负载均衡调度方法 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
CN102378407B (zh) | 一种物联网中的对象名字解析系统及其解析方法 | |
CN104951475B (zh) | 分布式文件系统和实现方法 | |
Xu et al. | Adaptive and scalable load balancing for metadata server cluster in cloud-scale file systems | |
CN100536422C (zh) | 对等网络及其网络资源查询方法 | |
Abraham et al. | Skip B-trees | |
CN104391931A (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: 20180605 |
|
RJ01 | Rejection of invention patent application after publication |