`
songbin0201
  • 浏览: 320165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分布式缓存 - Hash算法

阅读更多
一、根据余数计算分布  Hash() mod n

就是“根据服务器台数的余数进行分散”。求得键的整数哈希值,再除以服务器台数,根据其余数来选择服务器。





根据余数计算分散的缺点
余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而影响缓存的命中率。


二、一致性哈希算法

把每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属节点。当此节点存在故障时,再顺时针取下一个作为替代节点。



从上图的状态中添加一台memcached服务器。余数分布式算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但Consistent Hashing中,只有在continuum上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响。


  • 大小: 21.9 KB
  • 大小: 25.6 KB
  • 大小: 38.7 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    分布式缓存系统Memcached

    它的缓存是一种分布式的,也就是可 以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端, 同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!...

    基于go语言实现的分布式缓存系统源码+项目说明(以键值对的形式存储数据,一致性hash算法选择存储节点).zip

    基于go语言实现的分布式缓存系统源码+项目说明(以键值对的形式存储数据,一致性hash算法选择存储节点,Protobuf通信协议编解码。用户输入查询请求后,会优先在缓存系统查询,查不到则使用回调函数去源数据库查询,...

    fly-arch:分布式架构consistent-hashing(一致性hash) http

    #fly-archflylib创立的各种常见的架构技术内容列表cassandra-demo cassandra数据库...主要用于分布式缓存的实现比如弹性伸缩(动态扩容)redis存储节点的增加和减少的时候,可以把需要迁移和hash()值的变化量做到最小。

    基于go语言实现的分布式缓存系统完整源码+说明(以键值对的形式存储数据).zip

    基于go语言实现的分布式缓存系统源码+项目说明(以键值对的形式存储数据,一致性hash算法选择存储节点,Protobuf通信协议编解码。用户输入查询请求后,会优先在缓存系统查询,查不到则使用回调函数去源数据库查询,...

    QCache:基于Raft 实现的分布式缓存

    基于Raft论文实现的,整体思路就是由Raft算法维持集群状态的一致性(节点丢失,增加问题),一致性hash将数据分散到各个节点上 支持的功能 leader选举.不管是刚启动还是leader丢失,都能保证一轮选举选出新leader 集群...

    论文研究-WSN中一种基于多路径的分布式TCP缓存算法 .pdf

    主动网络中的需求装载代码协议是基于移动代码,装载需求和缓存技术的代码分配协议,可动态配置新的协议和服务。由于已有需求装载代码协议存在被重放的安全缺陷,影响主动节点的性能和效率,为此提出了一个安全有效的...

    SpringBoot_shardDB_shardTable:SpringBoot集成Sharding-JDBC实现分库分表,自定义分片算法,基于一致性hash算法,易于扩容

    一致性Hash算法,易于扩容;添加了 单元测试,使用Spring提供的RestTemplate调用RestFul风格的API接口;整合了 quartz 定时任务框架 ,并进行了封装,只需在构建完定时任务Job类后,在 application-quartz....

    高并发架构与分布式技术NoSQL--Redis原理剖析

    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。...评价哈希算法好坏的四个定义:redis集群方案:一致性hash算法设计目标是为了解决因特网中的热点

    网站架构技术

    分布式缓存的一致性hash算法 数据存储服务器集群的伸缩性设计 关系数据库集群的伸缩性设计 nosql数据库的伸缩性设计 随需应变:网站的可扩展性 构建可扩展的网站架构 利用分布式消息队列降低系统耦合性 ...

    olric:分布式缓存和内存中键值数据存储。 它既可以用作嵌入式Go库,也可以用作独立于语言的服务

    奥尔里克 分布式缓存和内存键/值数据存储。 它既可以用作嵌入式Go库,也可以用作独立于语言的服务。 使用Olric,您可以立即在计算机群集之间创建快速,可扩展的共享RAM池。 请参阅和部分以开始使用!乍看上去旨在在...

    一致性哈希

    * 分布式缓存部署方案 * 当有1台cache服务器不能满足我们的需求,我们需要布置多台来做分布式服务器,但是 * 有个问题,怎么确定一个数据应该保存到哪台服务器上呢? * 有两种方案,第一种普通hash分布,第二种...

    9、缓存(10题)1

    1. 列举一个常用的Redis客户端的并发模型 2. 如何实现一个Hashtable 3. 分布式缓存,一致性hash 4. LRU算法, slab分配,如何减

    09、缓存(10题)1

    1. 列举一个常用的Redis客户端的并发模型 2. 如何实现一个Hashtable 3. 分布式缓存,一致性hash 4. LRU算法, slab分配,如何减

    一致性哈希算法 consistent hashing

    在分布式系统中,常常需要使用缓存,而且通常是集群,访问缓存和添加缓存都需要一个 hash 算法来寻找到合适的 Cache 节点。但,通常不是用取余hash,而是使用我们今天的主角—— 一致性 hash 算法。

    大型分布式网站架构与实践

     分布式缓存memcache的使用及分布式策略,包括Hash算法的选择。  常见的分布式系统存储解决方案,包括MySQL的分布式扩展、HBase的API及使用场景、Redis的使用等。  如何使用分布式消息系统ActiveMQ来降低系统之间...

    Redis 3.x 分布式集群搭建.pdf

    redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redisj节点上执行命令。在redis看来,响应时间是最苛刻的...

    一致性哈希算法以及其PHP实现详细解析

    在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。...

    Java思维导图xmind文件+导出图片

    redis Cluster数据分布算法之Hash slot redis使用常见问题及性能优化思路 redis高可用及高并发实战 缓存击穿、缓存雪崩预防策略 Redis批量查询优化 Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB ...

    阿里百度美团面试题合集

    分布式相关:Redis 缓存、一致 Hash 算法、分布式存储、负载均衡等。 .. 微服务以及 Docker 容器等。 . ArrayList 和 LinkedList 底层 . HashMap 及线程安全的 ConcurrentHashMap,以及各自优劣势 . Java 如何实现...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    APRORIVE算法 分布式 负载均衡 水平伸缩 集群 分片 Key-hash 异步 一致性hash 消峰 分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip ...

Global site tag (gtag.js) - Google Analytics