zoukankan      html  css  js  c++  java
  • 一致性哈希

    MemCached 采用一致性哈希解决增加/减少memcached server的数量,对原先存储的所有key的后续查询都将定位到别的server上,导致所有的cache都不能被命中而失效。虽然一直知道大概是这样,今天被问得一愣一愣的,关键是下面标红的一句话。

    一致性哈希(Consistent Hashing) 处理服务器的选择不再仅仅依赖key
    的hash本身而是将服务实例(节点)的配置也进行hash
    运算。
    1. 首先求出每个服务节点的hash,并将其配置到一个0~2^32的圆环(continuum)区间上。
    2. 其次使用同样的方法求出你所需要存储的key的hash,也将其配置到这个圆环(continuum)上。
    3. 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务节点上。
    如果超过2^32 仍然找不到服务节点,就会保存到第一个memcached服务节点上。
    整个数据的图例:

    其他:只有在圆环上增加服务节点的位置为逆时针方向的第一个服务节点上的键会受到影响。
    小结 一致性哈希算法最大程度的避免了key在服务节点列表上的重新分布,其他附带的改进就是有的一致性哈希算法还增加了虚拟服务节点的方法,
    也就是一个服务节点在环上有多个映射点,这样就能抑制分布不均匀, 最大限度地减小服务节点增减时的缓存重新分布。

  • 相关阅读:
    Sharepoint2013搜索学习笔记之创建搜索服务(二)
    Sharepoint2013搜索学习笔记之设置外网内容源(四)
    C# zxing插件 根据输入的字符串生成二维码
    值类型和引用类型
    Web.config增删查改
    Redis
    2017年最好的6个WEB前端开发手册下载
    php implode()函数详解
    elk日志系统搭建
    aop实现接口请求参数打印
  • 原文地址:https://www.cnblogs.com/hero4china/p/Consistent-Hashing.html
Copyright © 2011-2022 走看看