1、通过设置特效key前缀来实现分布,基本上可以实现memcached和key的一对多关系,好处在与不会混淆
如:
1 号服务器 192.168.1.1
2号服务器 192.168.1.2
如果 缓存键 以 en 开头的就存在 1号
缓存键 以ch 开头的就存在2号
2、根据余数计算分散:
就是“根据服务器台数的余数进行分散”。求的键的整数hash ,再除以服务器台数,根据余数来选择服务器
缺点:余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或者移除服务器时,缓存重组的代价相当的巨大。添加服务器后,余数就会产生巨变,这样就无法获取与保持时相同的服务器,从而影响缓存的命中率。
3、consistent hashing
首先求出memcached 服务器的(节点)的哈希值,并将其分配到 0-232 的圆上。然后用同样的方法求出存储数据键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上,如果超过232任然找不到服务器,就会保存到第一台memcached服务器上
从上图状态可以看出,添加一台memcached 服务器。余数分布式算法由于保存键的服务器会发生巨大的变化而影响命中率,蛋consistent hashing中,只有在continuum上增加服务器的地点 逆时针方向的第一台服务器上的键会受到影响