分布式缓存:原则来说跟应用服务器分布式应该是一样,但缓存是有状态的。怎么样提高命中?
1.最原始的算法:那就是key hash取模,取到服务器ip。在大量服务器伸缩行有问题,加入一台服务器就有可能让所有的缓存都失效。
如:key hash 后是100,取10膜是0,取11膜 1,
101 取10膜是1,取11膜 2,
2.一致性hash算法:
1.如:图 先建立一个2的32次方环,把服务器均衡放到环上node点,key hash 顺时针到node点上,这样就对应找到服务器。
2.这个方法在伸缩性也有问题,加入一台服务器,没办法 均衡到所有的服务器上,如:你加到 node2和node3之间,那么只有node3会影响,其他node点上服务器就不会被影响,做不负载均衡了?
3.把一台服务器虚拟化成一批node点,这样加入一台服务器就可以一想到线上所有的服务器上缓存,做到对所有的服务器的影响最少,并且可以做负载均衡。