标签:
一致性哈希原理
http://wenku.baidu.com/link?url=fY3-zLTqzQ_7TWAFh5xzNywwrCZ4IvP9UkUZWkTbg6sB61LovRmVd4vq6d1ce959a6-ZmbN1rtHrfoR1AePPuEDB-dQbWuxGha5yotHtq0K
应用场景分析
1>memcache的add方法:通过一致性hash算法确认当前客户端对应的cache server的hash值以及要存储数据key的hash进行对应,确认cache server,获取connection进行数据存储
2>memcache的get方法:通过一致性hash算法确认当前客户端对应的cache server的hash值以及要提取数据的hash值,进而确认存储的cache server,获取connection进行数据提取
1>一致性hash算法只是帮我们减少cache集群中的机器数量增减的时候,cache的数据能进行最少重建,只要cache集群的server数量有变化,必然产生数据命中的问题
2>对于数据的分布均衡问题,通过虚拟节点的思想来达到均衡分配,当然,我们cache server节点越少就越需要虚拟节点这个方式来均衡负载
3>我们的cache客户端根本不会维护一个map来记录每个key存储在哪里,都是通过key的hash和cache server(也许ip可以作为参数)的hash计算当前的key应该存储在哪个节点上
4>当我们的cache节点崩溃了,我们必定丢失部分cache数据,并且要根据活着的cache server和key进行新的一致性匹配计算。有可能对部分没有丢失的数据也要做重建
5>至于正常到达数据存储节点,如何找到key对应的数据,那就是cache server本身的内部算法实现了,此处不做描述
标签:
原文地址:http://my.oschina.net/zhengyp/blog/494704