CN105577806A - 一种分布式缓存方法及系统 - Google Patents
一种分布式缓存方法及系统 Download PDFInfo
- Publication number
- CN105577806A CN105577806A CN201511010950.3A CN201511010950A CN105577806A CN 105577806 A CN105577806 A CN 105577806A CN 201511010950 A CN201511010950 A CN 201511010950A CN 105577806 A CN105577806 A CN 105577806A
- Authority
- CN
- China
- Prior art keywords
- grouping
- caching server
- data cached
- key value
- distributed
- 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
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种分布式缓存方法及系统,通过根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据;能够任意水平扩容,扩容方便,集群数据能均衡分布,带来了大大的方便。
Description
技术领域
本发明涉及缓存技术领域,尤其涉及的是一种分布式缓存方法及系统。
背景技术
缓存的概念来源于操作系统,CPU需要通过指令实现内存与寄存器之间的交互,为加快处理速度,会将需要执行指令需要的一些数据先在寄存器中缓存起来,而不是每次都去内存读写。而对于企业应用来说,通常需要在内存与硬盘之间进行数据交互,对于一些频繁使用的用户信息数据,通常会将其加载到内存,作为一个缓存,或者弄一个单独的服务器作为缓存节点,从而可以提升效率和减少对底层资源的耗时操作。但是对于大型互联网应用来说,高峰访问量上百万的并发读写数据请求,往往会超出单台服务器的承受能力,此时将会需要一个分布式的缓存服务器集群来支撑,由此,开发人员将面临负载均衡和扩容等难题。
对于分布式的负载均衡,有些为了简单,直接采用缓存数据的Key(关键字)值对机器数量取模运算来保证数据负载均衡,但为了保证扩容后旧数据的尽量少地发生数据迁移(也就是指数据从一台缓存服务器迁移到另一台缓存服务器),往往需要采用成倍扩容的方式来解决(成倍扩容是指服务器数量以2的次幂来扩容),这样很容易造成机器资源浪费;或者采用一致性哈希算法来实现,但其在解决集群数据分布不均的问题上过于复杂。
因此,现有技术还有待于改进和发展。
发明内容
本发明要解决的技术问题在于,提供一种分布式缓存方法及系统,旨在解决现有技术中集群数据分布不均,扩容不方便的问题。
本发明解决技术问题所采用的技术方案如下:
一种分布式缓存方法,其中,包括:
A、根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;
B、根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
所述的分布式缓存方法,其中,所述步骤A具体包括:
A1、基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。
所述的分布式缓存方法,其中,所述步骤B具体包括:
B11、外观服务器接收负载均衡器分配的待缓存数据的读写请求;
B12、根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
B13、根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
所述的分布式缓存方法,其中,在所述步骤B之后,还包括:
C1、当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或C2、当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
所述的分布式缓存方法,其中,所述步骤B具体包括:
B21、根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
B22、将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
B23、根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
一种分布式缓存系统,其中,包括:
分布设置模块,用于根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;
分布缓存模块,用于根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
所述的分布式缓存系统,其中,所述分布设置模块包括:
分布关联单元,用于基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。
所述的分布式缓存系统,其中,所述分布缓存模块包括:
第一分配单元,用于通过外观服务器接收负载均衡器分配的待缓存数据的读写请求;
第一分组单元,用于根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
第一取模单元,用于根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
所述的分布式缓存系统,其中,还包括:
分组增加模块,用于当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或缓存增加模块,用于当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
所述的分布式缓存系统,其中,所述分布缓存模块包括:
第二分组单元,用于根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
第二取模单元,用于将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
缓存服务器匹配单元,用于根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
本发明所提供的一种分布式缓存方法及系统,有效地解决了现有技术中集群数据分布不均,扩容不方便的问题,通过根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据;能够任意水平扩容,扩容方便,集群数据能均衡分布,带来了大大的方便。
附图说明
图1为本发明提供的分布式缓存方法较佳实施例的流程图。
图2为图1中步骤S200第一实施例的流程图。
图3为图1中步骤S200第二实施例的流程图。
图4为本发明提供的分布式缓存方法中系统架构示意图。
图5为本发明提供的分布式缓存系统较佳实施例的结构框图。
图6为图5中分布缓存模块第一实施例的结构框图。
图7为图5中分布缓存模块第二实施例的结构框图。
具体实施方式
本发明提供一种分布式缓存方法及系统,为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明提供的分布式缓存方法较佳实施例的流程图,如图所示,所述方法包括以下步骤:
步骤S100、根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;
步骤S200、根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
下面结合具体的实施例对上述步骤进行详细的描述。
在步骤S100中,根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器。具体来说,根据数据的key(关键字)值来划分区间,即进行分组,每个分组对应一台或多台的缓存服务器。
在实际应用时,基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。具体来说,就是对缓存数据的关键字值按照不同取值范围划分为多个分组,每个分组对应不同的取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。也就是将对关键字值进行分组的分组信息对应以配置表的形式体现。配置表中有不同分组对应的取值范围及缓存服务器信息。请参阅表1,表1为分组关系的配置表,表1只为举例说明,不作限制。如表1所示,按照KEY值的不同取值范围划分为4个分组,每个分组对应不同数量的缓存服务器。
表1
在步骤S200中,根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
具体来说,缓存数据是指计算机器运行过程中,存放在内存中的数据。通常频繁使用的用户信息数据,会选择将其加载到内存,以提升读写数据的效率和减少对底层资源的耗时操作(一般是磁盘读写和数据库读写),每个缓存数据对应有一个key值。
优选地,请参阅图2,所述步骤S200具体包括:
S221、根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
S222、将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
S223、根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
具体来说,在实际应用时,根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组,如表1所示,若待缓存数据的关键字值为9999,则对应的分组为分组1;若待缓存数据的关键字值为1999999,则对应的分组为分组3。然后,将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果。然后,根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
关于取模运算,以下进行详细说明。取模运算,这里取模运算的值指两个数相除的余数值,如对于a、b两个整型值,取模运算的方法是:(1)求整数商:c = a / b;(2)计算模:r = a - c*b。例如 a = 8; b = 5; 那么a对b取模运算,结果为3。
为了缓存数据的负载均衡,也就是指能够尽量保证缓存数据均衡分布于各个缓存服务器中。可直接用缓存数据的Key值与机器数量取模运算的保证数据的负载均衡,也就是是指用缓存数据的key值与当前缓存服务器的数量进行取模运算,然后根据取模运算的结果来判定缓存数据存放在哪台缓存服务器,从而尽量保证数据均匀分布在所有的缓存服务器上,具体说明如下:
假设需要缓存的数据的Key的取值范围是1到100,当前的缓存服务器的数量为2台,那么将数据进行缓存的分配计算公式是Key值mod 2 (mod指取模运算),任何数mod 2的计算结果范围只有0和1,即只有两种可能(也可以推出任何正整数 mod n,其结果范围为0到n-1, 最多只能有n种可能),可以约定取模结果为0时,数据将存放在第一台缓存服务器上,结果为1时,数据则存放在第二台缓存服务器上。下面根据key值对2进行取模的计算过程是:
1 mod 2 = 1
2 mod 2 = 0
3 mod 2 = 1
4 mod 2 = 0
5 mod 2 = 1
6 mod 2 = 0
... ...
即Key值为1、3、5的数据将会被存放到第二台缓存服务器上,而Key值为2、4、6的数据将会被存放到第一台缓存服务器上。
请参阅图3,图3为图1中步骤S200第二实施例的流程图,优选地,所述步骤S200具体包括:
S211、外观服务器接收负载均衡器分配的待缓存数据的读写请求;
S212、根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
S213、根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
具体来说,请一并参阅图3和图4,图4为本发明提供的分布式缓存方法中系统架构示意图,结合图4对本发明详细说明如下。读写请求首先通过硬件或软件负载均衡器(如LVS)被均衡路由到一组中间Façade(外观)服务器上,此处说的负载均衡器主要作用在于将请写尽量均匀地分配到各个Façade(外观)服务器上,Facade服务器根据请求的Key值以及配置表中的分组信息找到匹配到相应的分组,匹配到相应的分组后,再通过对这个分组当前所具有的缓存服务器数量进行取模,从而准确找到负载的缓存服务器。不同的分组所配置的缓存服务器的数量可以是不同的。
如图4所示,优选地,可在各个缓存服务器上对应设置备用缓存服务器,也就是说各个缓存服务器包括主缓存服务器及备用缓存服务器,共两个缓存服务器,这是为了避免主缓存服务器出现故障而无法缓存数据。在实际应用时,利用硬件或软件负载均衡路由到一组中间Facade服务器上,Facade服务器根据Key值以及配置表中的分组信息准确找到后面缓存集群的具体哪台缓存服务器,Facade服务器是一组相同的服务器,其作用是根据读写请求自动判断数据落到后端对应的缓存服务器上,它们彼此间是无差别的,它可以跟任何缓存服务器进行交互,可自由增加或减少,当它准备交互的缓存服务器主机出现故障时,其会转而请求备机,如果主备机都出现故障,则会重新选择其他的缓存服务器,直到成功。
进一步地,当缓存服务器的容量达到限制时,那么需要对本发明的分布式缓存系统进行扩容。优选地,在所述步骤S200之后还包括:
S301、当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或S302、当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
具体来说,当缓存服务器的容量达到限制时,需要进行扩容,有两种扩容方式,第一种方式是添加新的分组,该新的分组关联至少一新的缓存服务器;第二种方式是在原有分组中添加新的缓存服务器,从而进行扩容。本发明在需要添加新缓存服务器来扩容时,这两种方式都只需要修改配置表的分组信息,第一种方式将新扩容的缓存服务器分配到新的分组中,这样即使扩容之后,以前旧的缓存一样可以被准确匹配到;第二种方式将新扩容的缓存服务器分配到旧的分组中,修改配置表的分组信息,这样最多只影响到其中那个旧分组内包含的缓存服务器。
详细说明如下:在实际应用时,由于缓存服务器的存储空间是有限的,若存储空间已满,则需要进行扩容。现在假设要进行扩容,也就是增加一台缓存服务器(即第三台缓存服务器),会发现如果直接用缓存数据的Key值与机器数量取模运算的保证数据的负载均衡的方法会造成数据迁移情况比较多。增加一台缓存服务器后,缓存服务器数量变为3台,那么:
1 mod 3 = 1
2 mod 3 = 2
3 mod 3 = 0
4 mod 3 = 1
5 mod 3 = 2
6 mod 3 = 0
... ...
可以发现除了Key值为1和6外,其他Key值存放的缓存服务器都发生了变化,如果采用成倍扩容,即在原有2台缓存服务器的情况下,一次性增加2台新的缓存服务器,变为总共4台缓存服务器,那么:
1 mod 4 = 1
2 mod 4 = 2
3 mod 4 = 3
4 mod 4 = 0
5 mod 4 = 1
6 mod 4 = 2
... ...
可以发现跟原先2台缓存服务器比,只有Key值为2,3,6的数据的存放位置将发生变化,进而也可以推出,成倍扩容的方式,最大影响的旧数据范围是50%。成倍扩容是指服务器数量以2的次幂来扩容,2的次幂指2的n次幂运算,n >= 1。NewMachineNum = CurMachineNum * 2^n;(n >= 1)。例如:当前缓存服务器的数量为2台,那么服务器扩容后,服务器数量最好是4台、8台、16台…
成倍扩容比非成倍扩容相比,前者造成需要迁移的旧数据较少,但如果说每次扩容都是成倍的增加新的机器,这样扩容成本较高,容易造成浪费。
而本发明进一步地,分布式部署缓存服务器,通过对数据的Key值进行分组,同时每个分组下可以对应一台或多台缓存服务器,数据匹配到相应分组后,再将Key值对分组内所具有的缓存服务器数量进行取模运算,从而准确找到相应的缓存服务器。分组可以如表1所示,实际应用中则根据各缓存服务器的资源与性能情况来划分,表1只是作为了一个假设例子,用于说明本发明。
结合表1,假设有个数据的key值为1900000,那么首先匹配到的是分组3,分组3对应了4台缓存服务器,可以预先约定取模结果为0,1,2,3存放的缓存服务器分别为分组里的第一台、第二台、第三台、第四台缓存服务器,那么由1900000对4(4为分组3对应的缓存服务器数量)进行取模,得到0,即分组3中的第1台缓存服务器——也就是缓存服务器6。
优选地,如果说在分组3中增加或减少一台缓存服务器,最多影响的只是分组3中的缓存数据,对其他分组没影响,不会造成大范围的缓存数据迁移,这是第二种扩容方式。不过最好的扩容方式是添加新的分组,把新加的缓存服务器挂在新的分组里,这样全部旧的缓存数据都不会受到影响,这是第一种扩容方式。这样,实现了分布式缓存集群可以任意水平扩容,且集群数据可以均匀分布。
本发明的缓存服务器是一个可以水平扩展的缓存集群,它可以根据缓存规模增大而增大,它的扩容是任意的,可以每次扩容一台至多台,新的Key值可以通过在配置表中添加新的分组或修改旧的分组配置来均衡引导分布至新扩容的节点上。优选地,为了增加故障的容错能力,可以为每个缓存服务器节点增加备份缓存服务器节点,主备缓存服务器之间的数据是相同且同步的。
基于上述分布式缓存方法,本发明还提供了一种分布式缓存系统,如图3所示,所述系统包括:
分布设置模块10,用于根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;具体如步骤S100所述;
分布缓存模块20,用于根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据;具体如步骤S200所述。
进一步地,所述分布设置模块10包括:
分布关联单元,用于基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。
进一步地,请参阅图6,图6为本发明提供的分布式缓存系统中分布缓存模块第一实施例的结构框图,如图所示,所述分布缓存模块20包括:
第一分配单元21,用于通过外观服务器接收负载均衡器分配的待缓存数据的读写请求;
第一分组单元22,用于根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
第一取模单元23,用于根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
进一步地,所述的分布式缓存系统,还包括:
分组增加模块,用于当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或缓存增加模块,用于当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
进一步地,请参阅图7,图7为本发明提供的分布式缓存系统中分布缓存模块第二实施例的结构框图,如图所示,所述分布缓存模块20包括:
第二分组单元24,用于根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
第二取模单元25,用于将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
缓存服务器匹配单元26,用于根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
综上所述,本发明提供的一种分布式缓存方法及系统,通过根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据;能够任意水平扩容,扩容方便,集群数据能均衡分布,带来了大大的方便,具有非常大的商业价值。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1. 一种分布式缓存方法,其特征在于,包括:
A、根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;
B、根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
2.根据权利要求1所述的分布式缓存方法,其特征在于,所述步骤A具体包括:
A1、基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。
3.根据权利要求2所述的分布式缓存方法,其特征在于,所述步骤B具体包括:
B11、外观服务器接收负载均衡器分配的待缓存数据的读写请求;
B12、根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
B13、根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
4.根据权利要求2所述的分布式缓存方法,其特征在于,在所述步骤B之后,还包括:
C1、当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或C2、当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
5.根据权利要求1所述的分布式缓存方法,其特征在于,所述步骤B具体包括:
B21、根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
B22、将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
B23、根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
6.一种分布式缓存系统,其特征在于,包括:
分布设置模块,用于根据关键字值的取值范围对缓存数据进行分组,获得若干个缓存数据的分组,每个分组对应关联至少一缓存服务器;
分布缓存模块,用于根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应存储所述待缓存数据。
7.根据权利要求6所述的分布式缓存系统,其特征在于,所述分布设置模块包括:
分布关联单元,用于基于缓存数据的关键字值的取值范围将所述缓存数据划分为多个分组,每个分组对应一个取值范围,且每个分组对应关联至少一台缓存服务器,根据不同分组对应的取值范围及缓存服务器得到相应的配置表。
8.根据权利要求7所述的分布式缓存系统,其特征在于,所述分布缓存模块包括:
第一分配单元,用于通过外观服务器接收负载均衡器分配的待缓存数据的读写请求;
第一分组单元,用于根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分组;
第一取模单元,用于根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取模,找到对应的缓存服务器并完成待缓存数据的读写请求。
9.根据权利要求7所述的分布式缓存系统,其特征在于,还包括:
分组增加模块,用于当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服务器分配到新的分组中,并对应修改所述配置表的分组信息;
或缓存增加模块,用于当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中,并对应修改所述配置表的分组信息。
10.根据权利要求6所述的分布式缓存系统,其特征在于,所述分布缓存模块包括:
第二分组单元,用于根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组;
第二取模单元,用于将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果;
缓存服务器匹配单元,用于根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511010950.3A CN105577806B (zh) | 2015-12-30 | 2015-12-30 | 一种分布式缓存方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511010950.3A CN105577806B (zh) | 2015-12-30 | 2015-12-30 | 一种分布式缓存方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105577806A true CN105577806A (zh) | 2016-05-11 |
CN105577806B CN105577806B (zh) | 2019-11-12 |
Family
ID=55887450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511010950.3A Active CN105577806B (zh) | 2015-12-30 | 2015-12-30 | 一种分布式缓存方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105577806B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106331147A (zh) * | 2016-09-09 | 2017-01-11 | 深圳市彬讯科技有限公司 | 一种redis分布式调用方法及其系统 |
CN107544844A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 一种提升Spark运行效能的方法及装置 |
CN108399262A (zh) * | 2018-03-14 | 2018-08-14 | 北京思特奇信息技术股份有限公司 | 一种数据库扩容方法及系统 |
CN108462756A (zh) * | 2018-03-29 | 2018-08-28 | 新华三技术有限公司 | 一种数据写入方法和装置 |
CN112559459A (zh) * | 2020-12-15 | 2021-03-26 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN113590507A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种分布式存储系统及其缓存层、数据访问方法、设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101867607A (zh) * | 2010-05-21 | 2010-10-20 | 北京无限立通通讯技术有限责任公司 | 一种分布式数据存取方法、装置及系统 |
CN102790784A (zh) * | 2011-05-18 | 2012-11-21 | 阿里巴巴集团控股有限公司 | 分布式缓存方法及系统、缓存解析方法及解析系统 |
CN102006330B (zh) * | 2010-12-01 | 2013-06-12 | 北京瑞信在线系统技术有限公司 | 分布式缓存系统、数据的缓存方法及缓存数据的查询方法 |
CN103379138A (zh) * | 2012-04-17 | 2013-10-30 | 深圳市腾讯计算机系统有限公司 | 实现负载均衡的方法及系统和灰度发布的方法及装置 |
CN103810244A (zh) * | 2013-12-09 | 2014-05-21 | 北京理工大学 | 一种基于数据分布的分布式数据存储系统的扩容方法 |
-
2015
- 2015-12-30 CN CN201511010950.3A patent/CN105577806B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101867607A (zh) * | 2010-05-21 | 2010-10-20 | 北京无限立通通讯技术有限责任公司 | 一种分布式数据存取方法、装置及系统 |
CN102006330B (zh) * | 2010-12-01 | 2013-06-12 | 北京瑞信在线系统技术有限公司 | 分布式缓存系统、数据的缓存方法及缓存数据的查询方法 |
CN102790784A (zh) * | 2011-05-18 | 2012-11-21 | 阿里巴巴集团控股有限公司 | 分布式缓存方法及系统、缓存解析方法及解析系统 |
CN103379138A (zh) * | 2012-04-17 | 2013-10-30 | 深圳市腾讯计算机系统有限公司 | 实现负载均衡的方法及系统和灰度发布的方法及装置 |
CN103810244A (zh) * | 2013-12-09 | 2014-05-21 | 北京理工大学 | 一种基于数据分布的分布式数据存储系统的扩容方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544844A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 一种提升Spark运行效能的方法及装置 |
CN106331147A (zh) * | 2016-09-09 | 2017-01-11 | 深圳市彬讯科技有限公司 | 一种redis分布式调用方法及其系统 |
CN106331147B (zh) * | 2016-09-09 | 2019-09-06 | 深圳市彬讯科技有限公司 | 一种redis分布式调用方法 |
CN108399262A (zh) * | 2018-03-14 | 2018-08-14 | 北京思特奇信息技术股份有限公司 | 一种数据库扩容方法及系统 |
CN108462756A (zh) * | 2018-03-29 | 2018-08-28 | 新华三技术有限公司 | 一种数据写入方法和装置 |
CN108462756B (zh) * | 2018-03-29 | 2020-11-06 | 新华三技术有限公司 | 一种数据写入方法和装置 |
CN113590507A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种分布式存储系统及其缓存层、数据访问方法、设备 |
CN113590507B (zh) * | 2020-04-30 | 2024-07-09 | 深信服科技股份有限公司 | 一种分布式存储系统及其缓存层、数据访问方法、设备 |
CN112559459A (zh) * | 2020-12-15 | 2021-03-26 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN112559459B (zh) * | 2020-12-15 | 2024-02-13 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105577806B (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105577806A (zh) | 一种分布式缓存方法及系统 | |
Maass et al. | Mosaic: Processing a trillion-edge graph on a single machine | |
Kim et al. | GTS: A fast and scalable graph processing method based on streaming topology to GPUs | |
CN101296114B (zh) | 基于流的并行模式匹配方法和系统 | |
CN106990915B (zh) | 一种基于存储介质类型和加权配额的存储资源管理方法 | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
US8606791B2 (en) | Concurrently accessed hash table | |
Bisson et al. | Parallel distributed breadth first search on the Kepler architecture | |
CN101853190A (zh) | 一种适用于嵌入式处理器的数据完整性验证方法 | |
CN104809076A (zh) | Cache的管理方法及装置 | |
US20160125566A1 (en) | SYSTEM AND METHOD FOR PROCESSING LARGE-SCALE GRAPHS USING GPUs | |
Hao et al. | Distributed hop-constrained st simple path enumeration at billion scale | |
Tang et al. | A data skew oriented reduce placement algorithm based on sampling | |
CN107133228A (zh) | 一种数据重分布的方法及装置 | |
Helman et al. | Prefix computations on symmetric multiprocessors | |
Dai et al. | Improving load balance for data-intensive computing on cloud platforms | |
Song et al. | Rethinking graph data placement for graph neural network training on multiple GPUs | |
Tavakoli-Someh et al. | Utilization-aware virtual network function placement using NSGA-II evolutionary computing | |
Taimouri et al. | Rbsep: a reassignment and buffer based streaming edge partitioning approach | |
CN107656980A (zh) | 应用于分布式数据库系统中的方法及分布式数据库系统 | |
HeydariGorji et al. | Leveraging Computational Storage for Power-Efficient Distributed Data Analytics | |
Bai et al. | A parallel flash translation layer based on page group-block hybrid-mapping method | |
Yan et al. | QTMS: A quadratic time complexity topology-aware process mapping method for large-scale parallel applications on shared HPC system | |
Zhang et al. | Speeding up vm startup by cooperative vm image caching | |
Ibrahim et al. | Improvement of data throughput in data-intensive cloud computing applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |