hash一致性
参照:https://www.cnblogs.com/moonandstar08/p/5405991.html
参照:http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html
以下内容,仅供自己理解复习,表达能力有限,还请您见谅!
hash一致性解决的问题:如经典的服务器负载均衡,在前端通过一个相同的hash函数计算出一个数值,取模总服务器数,然后把请求分发到相对应的服务器上,依次实现负载均衡。但是如果突然之间,流量增大,那么就会出现服务器数量要扩容的情况,这样的代价很大,需要重新计算出新的hash,迁移各服务器上的数据。hash一致性正是用来解决这个问题,花少量的代价。
首先我们抛弃原始的hash取模找服务器,而是把hash函数算出来的值用一个抽象的环来表示。假设hash值的范围是0~2^64-1。然后把服务器映射上去,那么每次数据key通过相同的hash算出来一个值,也映射到环上,顺时针查找离服务器最近的点,该服务器就存储着对应的数据,就可以查到了。具体的查找服务器,当然不是遍历,那太耗时了,因为这个每台服务器的hash值用一个有序数组存储起来(大于等于,最右边的),所以可以通过二分的方法来确定相应的最近服务器。
再分析加机器的代价,如果用hash一致性的话,那么每次只需要把前一台服务器对应的环上在其后面的数据给迁移进新加的服务器即可。减服务器,同理,只需把这台服务器的数据转移到环上的后面一台服务器上即可。
这也迎来了两个问题,其一如果服务器数量非常的少,假设只有三台,那么hash函数的概率平均性就很难体现出来了,可能出现三台服务器在环山的距离很近。那么负载就不均衡了,可能某一台服务器要处理90%的数据处理,而其余两台只需分担10%的数据处理。这就很难受了。其二,如果这三台服务器刚好负载均衡,那么再加一台服务器的时候就又不负载均衡了。解决的方法,就是引出一个新的概念,虚拟节点,每台服务器给分配(假设1000个虚拟节点)。每一个虚拟节点都在hash环上占一个值,但是这些虚拟节点对应哪台服务器,就去哪台服务器上找数据。这样就把hash环给均衡了,真的很美妙。
以上所描述的就是一致性hash。把握一下几点:1.抛弃hash取模,而是把hash值拿出来,形成一个环。2.把服务器映射到环上,顺时针找最近的服务器。3.虚拟节点,不把服务器映射上去了,而是把服务器对应的虚拟节点映射上去,用一个路由表记录相应的虚拟节点对应的服务器。这样虚拟节点就完全把hash值相均衡化了,依此,实现负载均衡。
hash一致性的更多相关文章
- nginx+php+memcache实现hash一致性memcache 集群
我们工作中可能会遇到key-value数据库,如果我们面对的不止一台memcache服务器,而是很多台.那么现在就回出现一个问题: 当我们访问nginx服务器的时候,我们会判断memcache中是否有 ...
- 【java】安全加密MessageDigest的功能及用法【hash一致性算法】
链接地址:https://blog.csdn.net/ma1kong/article/details/2662997 1.查看MessageDigest源码的注释说明 2.和hash一致性算法 什么关 ...
- 【hash】什么是hash,什么是哈希,什么是hash散列,什么是hash一致性算法【关于hash的详解】
什么是hash,什么是哈希,什么是hash散列,什么是hash一致性算法
- consistent hash(一致性哈希算法)
一.产生背景 今天咱不去长篇大论特别详细地讲解consistent hash,我争取用最轻松的方式告诉你consistent hash算法是什么,如果需要深入,Google一下~. 举个栗子吧: 比如 ...
- java实现hash一致性算法
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import jav ...
- hash一致性算法
一致性hash算法是,1097麻省理工提出的分布式hashDHT实现算法,极倔internet的热点问题 平衡性 hash结果尽可能的分布到所有的缓存中去,缓冲空间利用率最高 单调性 保持已有的缓存能 ...
- dht 分布式hash 一致性hash区别
先有一致性hash :一致性哈希,似乎最早提出是在分布式缓存里面的,让节点震荡的时候,影响最小.不过现在已经应用在分布式存储和p2p系统里面. dht 是p2p领域的概念,内有三大概念是由keyspa ...
- 【Hash一致性算法】什么是Hash一致性算法
目录 1. 一致性Hash算法简介 环形Hash空间 把数据通过一定的hash算法处理后映射到环上 将机器通过hash算法映射到环上 机器的删除与添加 平衡性 本文转载自博客 1. 一致性Hash算法 ...
- Hash一致性算法底层原理
大纲 Hash取余算法 判定哈希算法好坏的四个定义 一致性Hash算法的两大设计 Hash取余算法 hash(Object.key)%N,hash值随Object.key.N的变化而变化. 如果有节点 ...
随机推荐
- Android 7.0 存储系统—Vold与MountService分析(三)(转 Android 9.0 分析)
Android的存储系统(三) 回顾:前帖分析了Vold的main()函数和NetlinkManager的函数调用流程,截止到NetlinkHandler的创建和start()调用,本帖继续分析源码 ...
- FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个方案只能在java中运行,无法在Android项目中运行.所以此方案是:APP将表单数据发送给后台,后台通过freemarker ...
- 有趣的8个IT冷知识
阅读本文大概需要 2.8 分钟. 想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门 ...
- 19条MySQL优化准则
1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...
- 也谈Reactor模式
何谓Reactor模式?它是实现高性能IO的一种设计模式.网上资料有很多,有些写的也很好,但大多不知其所以然.这里博主按自己的思路简单介绍下,有不对的地方敬请指正. BIO Java1.4(2002年 ...
- 全新定义!免费开源ERP平台如何玩转工业互联网
简述 IoT Box通过Wifi.蓝牙.USB.网线等方式连接设备.IoT再通过互联网连接到Odoo服务器 Odoo的各种应用通过IoT操作各种设备.例如,PoS应用通过IoT操作小票打印机.银行刷卡 ...
- 安卓开发笔记(二十四):手把手教你一步步集成腾讯X5内核(Tencent TBS X5)
1.为什么要集成腾讯X5内核? X5内核相对于系统webview,具有下述明显优势: 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使流量节省20 ...
- eShopOnContainers 知多少[1]:总体概览
引言 在微服务大行其道的今天,Java阵营的Spring Boot.Spring Cloud.Dubbo微服务框架可谓是风水水起,也不得不感慨Java的生态圈的火爆.反观国内.NET阵营,微服务却不愠 ...
- 单元测试过多,导致The configured user limit (128) on the number of inotify instances has been reached.
最近在一个asp.net core web项目中使用TDD的方式开发,结果单元测试超过128个之后,在CI中报错了:"The configured user limit (128) on t ...
- 从零开始学习PYTHON3讲义(十一)计算器升级啦
(内容需要,本讲中再次使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十一讲 第二讲的时候,我们通过Python的交互模式来 ...