memcached并不像mongodb一样可以配置多个节点,并且节点之间可以”自动分配数据“,即相互通信,所以我们在做memcache分布式集群的时候要有一个算法来保证当一台memcache服务器宕机时,不引响web的正常使用。

一、取模算法

  比如我们有3台memcache服务器,他们的名称分别为MC0,MC1,MC2。当存入数据的时候会将key取模(key%3)的值为0,则存入MC0,为1存入MC1,为2存入MC2。如果有一台宕机了,key的取模为key%2。当去取数据的时候命中率会降低。如图所示:

  Memcached 之分布式算法原理

二、一致性哈希算法

  把各服务器节点映射放在钟表的各个时刻上, 把 key 也映射到钟表的某个时刻上. 该 key 沿钟表顺时针走,碰到的第 1 个节点即为该 key 的存储节点。如图:

  Memcached 之分布式算法原理

  注意:当b3的memcache服务器宕机了,那么会将b3的压力放在c6的服务器上。解决的办法是引入虚拟节点,如果b3宕机了,那么会将压力平均分摊到其他服务器上。如图:

  Memcached 之分布式算法原理

 

  

 

相关文章:

  • 2021-05-05
  • 2021-08-21
  • 2022-12-23
  • 2021-11-15
  • 2021-05-05
  • 2021-04-12
  • 2021-07-31
  • 2021-11-17
猜你喜欢
  • 2021-10-08
  • 2021-10-26
  • 2022-12-23
  • 2021-12-11
  • 2021-11-28
  • 2022-02-19
相关资源
相似解决方案