zoukankan      html  css  js  c++  java
  • memcached整理の分布式集群算法

      memcached如何实现分布式?

      memcached是一个“分布式内存对象缓存系统”,然而memcached并不像mongodb那样,允许配置多个节点,且节点之间“自动分配数据”,就是说memcached节点之间是不能互相通信的,因此,memcached的分布式,要靠用户去设计算法,把数据分布在多个memcached节点中。

      分布式之取模算法

      N个节点,从节点0到节点N-1。key对N取模,余i,则key落在第i台服务器上。

      

      取模算法对缓存命中率的影响

         假设有N台服务器,运行中突然down掉一台,那么取模的底数就变为了N-1

      后果是什么呢?

      后果是命中率在服务器down期间内,急剧下降至1/N-1;服务器越多,则down机后果越严重。

      一致性哈希算法原理

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

      

      一致性哈希对其他节点的影响  

      当某个节点down 后,只影响该节点顺时针之后的1 个节点,而其他节点不受影响.因此,Consistent Hashing 最大限度地抑制了键的重新分布。

      

      一致性哈希+虚拟节点对缓存命中率的影响

      节点在圆环上分配分配均匀,因此承担的任务也平均,但事实上, 一般的Hash 函数对于节点在圆环上的映射,并不均匀。当某个节点down 后,直接冲击下1 个节点,对下1 个节点冲击过大,能否把down 节点上的压力平均的分担到所有节点上?答案是可以的。

      引入虚拟节点

      

      虚拟节点即----N 个真实节点,把每个真实节点映射成M 个虚拟节点, 再把M*N 个虚拟节点,散列在圆环上. 各真实节点对应的虚拟节点相互交错分布这样,某真实节点down 后,则把其影响平均分担到其他所有节点上。

  • 相关阅读:
    1、线性DP 213. 打家劫舍 II
    如何在CentOS 8上安装Vtiger CRM?
    如何在不使用密码的情况下切换(su)到另一个用户帐户
    如何解决Ubuntu上的Busybox Initramfs错误
    Linux中的16个Echo命令示例
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Grafana
    如何在Ubuntu 20.04上安装Apache ZooKeeper
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Prometheus
    如何在CentOS 8上安装GlassFish
    如何在CentOS 8上安装Netdata Monitoring
  • 原文地址:https://www.cnblogs.com/tomcatx/p/4277210.html
Copyright © 2011-2022 走看看