zoukankan      html  css  js  c++  java
  • Memcached 之分布式算法原理

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

    一、取模算法

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

      

    二、一致性哈希算法

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

      

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

      

      

  • 相关阅读:
    对java中接口的简单理解
    jqgrid
    sed跨行匹配替换
    linux 安装 mysql
    mysql 导入或导出(mysqldump)数据
    spring boot slf4j + logback
    原码、反码、补码
    Java线程池(一)
    springboot 多环境配置及打包资源
    springboot自定义yaml配置文件
  • 原文地址:https://www.cnblogs.com/yang-2018/p/10116240.html
Copyright © 2011-2022 走看看