一种分布式缓存方法及系统的制作方法_2

文档序号:9814365阅读:来源:国知局
,按照KEY值的不同取值范围划分为4个分组,每个分组对应不同数 量的缓存服务器。
[0029] 表1 在步骤S200中,根据待缓存数据的关键字值所属取值范围查找匹配的分组,将所述关 键字值对该分组关联的所有缓存服务器数量进行取模运算,找到匹配的缓存服务器并对应 存储所述待缓存数据。
[0030] 具体来说,缓存数据是指计算机器运行过程中,存放在内存中的数据。通常频繁使 用的用户信息数据,会选择将其加载到内存,W提升读写数据的效率和减少对底层资源的 耗时操作(一般是磁盘读写和数据库读写),每个缓存数据对应有一个key值。
[0031] 优选地,请参阅图2,所述步骤S200具体包括: 5221、 根据待缓存数据的关键字值所属的取值范围,找到对应匹配的分组; 5222、 将所述待缓存数据的关键字值对该分组关联的所有缓存服务器数量进行取模运 算,得到对应的取模运算结果; 5223、 根据预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述 取模运算结果匹配的缓存服务器并对应存储所述待缓存数据。
[0032] 具体来说,在实际应用时,根据待缓存数据的关键字值所属的取值范围,找到对应 匹配的分组,如表1所示,若待缓存数据的关键字值为9999,则对应的分组为分组1;若待缓 存数据的关键字值为1999999,则对应的分组为分组3。然后,将所述待缓存数据的关键字值 对该分组关联的所有缓存服务器数量进行取模运算,得到对应的取模运算结果。然后,根据 预先设置的不同取模运算结果与各个缓存服务器的关联关系,找到与所述取模运算结果匹 配的缓存服务器并对应存储所述待缓存数据。
[0033] 关于取模运算,W下进行详细说明。取模运算,运里取模运算的值指两个数相除的 余数值,如对于a、b两个整型值,取模运算的方法是:(1)求整数商:C = a / b;(2)计算模:r =a - c*b。例如a = 8; b = 5;那么a对b取模运算,结果为3。
[0034] 为了缓存数据的负载均衡,也就是指能够尽量保证缓存数据均衡分布于各个缓存 服务器中。可直接用缓存数据的Key值与机器数量取模运算的保证数据的负载均衡,也就是 是指用缓存数据的key值与当前缓存服务器的数量进行取模运算,然后根据取模运算的结 果来判定缓存数据存放在哪台缓存服务器,从而尽量保证数据均匀分布在所有的缓存服务 器上,具体说明如下: 假设需要缓存的数据的Key的取值范围是巧IjlOO,当前的缓存服务器的数量为2台,那 么将数据进行缓存的分配计算公式是Key值mod 2 (mod指取模运算),任何数mod 2的计算 结果范围只有0和1,即只有两种可能(也可W推出任何正整数mod n,其结果范围为0到n-1,最多只能有n种可能),可W约定取模结果为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 良化ey值为1、3、5的数据将会被存放到第二台缓存服务器上,而K巧值为2、4、6的数据将 会被存放到第一台缓存服务器上。
[0035] 请参阅图3,图3为图1中步骤S200第二实施例的流程图,优选地,所述步骤S200具 体包括: 5211、 外观服务器接收负载均衡器分配的待缓存数据的读写请求; 5212、 根据所述读写请求的关键字值及所述配置表中的分组信息找到相应匹配的分 组; 5213、 根据所述读写请求的关键字值对该分组当前所具有的缓存服务器数量进行取 模,找到对应的缓存服务器并完成待缓存数据的读写请求。
[0036] 具体来说,请一并参阅图3和图4,图4为本发明提供的分布式缓存方法中系统架构 示意图,结合图4对本发明详细说明如下。读写请求首先通过硬件或软件负载均衡器(如 LVS)被均衡路由到一组中间化eade(外观)服务器上,此处说的负载均衡器主要作用在于将 请写尽量均匀地分配到各个^eade(外观)服务器上,Facade服务器根据请求的K巧值W及 配置表中的分组信息找到匹配到相应的分组,匹配到相应的分组后,再通过对运个分组当 前所具有的缓存服务器数量进行取模,从而准确找到负载的缓存服务器。不同的分组所配 置的缓存服务器的数量可W是不同的。
[0037] 如图4所示,优选地,可在各个缓存服务器上对应设置备用缓存服务器,也就是说 各个缓存服务器包括主缓存服务器及备用缓存服务器,共两个缓存服务器,运是为了避免 主缓存服务器出现故障而无法缓存数据。在实际应用时,利用硬件或软件负载均衡路由到 一组中间化cade服务器上,Facade服务器根据K巧值W及配置表中的分组信息准确找到后 面缓存集群的具体哪台缓存服务器,Facade服务器是一组相同的服务器,其作用是根据读 写请求自动判断数据落到后端对应的缓存服务器上,它们彼此间是无差别的,它可W跟任 何缓存服务器进行交互,可自由增加或减少,当它准备交互的缓存服务器主机出现故障时, 其会转而请求备机,如果主备机都出现故障,则会重新选择其他的缓存服务器,直到成功。
[0038] 进一步地,当缓存服务器的容量达到限制时,那么需要对本发明的分布式缓存系 统进行扩容。优选地,在所述步骤S200之后还包括: S301、当缓存服务器的容量达到限制时,添加新扩容的缓存服务器,将新扩容的缓存服 务器分配到新的分组中,并对应修改所述配置表的分组信息; 或S302、当缓存服务器的容量达到限制时,将新扩容的缓存服务器分配到原有分组中, 并对应修改所述配置表的分组信息。
[0039] 具体来说,当缓存服务器的容量达到限制时,需要进行扩容,有两种扩容方式,第 一种方式是添加新的分组,该新的分组关联至少一新的缓存服务器;第二种方式是在原有 分组中添加新的缓存服务器,从而进行扩容。本发明在需要添加新缓存服务器来扩容时,运 两种方式都只需要修改配置表的分组信息,第一种方式将新扩容的缓存服务器分配到新的 分组中,运样即使扩容之后,W前旧的缓存一样可W被准确匹配到;第二种方式将新扩容的 缓存服务器分配到旧的分组中,修改配置表的分组信息,运样最多只影响到其中那个旧分 组内包含的缓存服务器。
[0040] 详细说明如下:在实际应用时,由于缓存服务器的存储空间是有限的,若存储空间 已满,则需要进行扩容。现在假设要进行扩容,也就是增加一台缓存服务器(即第=台缓存 服务器),会发现如果直接用缓存数据的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值为I和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 可W发现跟原先2台缓存服务器比,只有Key值为2,3,6的数据的存放位置将发生变化, 进而也可W推出,成倍扩容的方式,最大影响的旧数据范围是50%。成倍扩容是指服务器数 量W2的次幕来扩容,2的次幕指2的n次幕运算,n〉= 1。化wMachineNum = CurMachineNum * 2~n;(n〉= 1)。例如:当前缓存服务器的数量为2台,那么服务器扩容后,服务器数量最好 是4台、8台、16台… 成倍扩容比非成倍扩容相比,前者造成需要迁移的旧数据较少,但如果说每次扩容都 是成倍的增加新的机器,运样扩容成本较高,容易造成浪费。
[0041 ]而本发明进一步地,分布式部署缓存服务器,通过对数据的Key值进行分组,同时 每个分组下可W对应一台或多台缓存服务器,数据匹配到相应分组后,再将Key值对分组内 所具有的缓存服务器数量进行取模运算,从而准确找到相应的缓存服务器。分组可W如表1 所示,实际应用中则根据各缓存服务器的资源与性能情况来划分,表1只是作为了一个假设 例子,用于说明本发明。
[0042] 结合表1,假设有个数据的key值为1900000,那么首先匹配到的是分组3,分组3对 应了 4台缓存服务器,可W预先约定取模结果为0,1,2,3存放的缓存服务器分别为分组里的 第一台、第二台、第=台、第四台缓存服务器,那么由1900000对4(4为分组3对应的缓存服务 器数量)进行取模,得到0,即分组3中的第1台缓存服务器一一也就是缓存服务器6。
[0043] 优选地,如果说在分组3中增加或减少一台缓存服务器,最多影响的只是分组3中 的缓存数据,对其他分
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1