cache分布式算法

1.最简单的方式,  hash取模

 

取模是在分布式算法里面最常用到, 用在cache上,也很常见,  不过取模方式最大的问题,就是在扩容或者一台机器下线的时候, 对命中率影响非常大, 再大型网站里是不被允许的, cache不能挡住98%以上的流量,冲击到db, db根本挡住大流量的冲击

 

2.  consistent hashing

  

  cache分布式算法_第1张图片

 

该算法最大好处,是在新增机器和下线机器的时候,只会对附近的节点产生影响。 但在高压力下,如果突然有台机器坏掉

那它附近的机器,就会承担2倍的压力, 这很容易出现雪崩效应,导致环里面的每个节点都垮掉

 

 

3.  consistent hashing 的基础上增加虚拟节点,会有个目录表

 

node ip
1 192.168.1.1
2 192.168.1.2
3 192.168.1.1
4 192.168.1.2

 

 如上,把一台机器虚拟成多个节点,然后错开放置, 这样能极大的避免雪崩效应的产生。

 

 

4.  固定hash

 

 固定hash算法很落后,但在特定的场景下,是非常给力的,就看你如何选择。 如果你要经常扩容并对数据的命中率不是太敏感,那你可以用1,2,3方式, 如果你对数据的命中率要求非常高,就算10台里面挂了一台,也不想影响其他机器,

那就可以使用固定hash, 固定hash的容灾怎么做? 可以使用2套机房互备, 一套的其中一台挂了,自动访问到另一套的对应一台, 除非对应的2台都挂了,才会出现问题。

 

  但固定hash的扩容比较麻烦,在扩容的时候只能杯具一下了,不过这种扩容估计也就2年/次的成本,就看你如何选择了

 

 

 

 

 

 

你可能感兴趣的:(算法,cache)