时间:2015-07-21 来源:

一致Hash算法 【移动开发】

一致性哈希算法是分布式系统中常用的算法.比如web外包,一个分布式的存储系统,web外包要将数据存储到具体的节点上,html前端制作如果采用普通的hash方法,div页面将数据映射到具体的节点上,承接网页前端外包如key%N,N是机器节点数,承接网站前端如果有一个机器加入或退出这个集群,html切图报价则所有的数据映射都无效了,承接网页制作如果是持久化存储则要做数据迁移web外包,如果是分布式缓存,web外包则其他缓存就失效了.     因此网页切图制作,引入了一致性哈希算法:

版权声明:本文为博主原创文章,网页切图制作未经博主允许不得转载.

此时对象Object A、B、D不受影响div+css+js切图,只有对象C需要重定位到新的Node X .一般的,网页重构报价在一致性哈希算法中承接网站前端,如果增加一台服务器,承接网站前端则受影响的数据仅仅是新服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据psd切图html,http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html

把数据用hash函数(如MD5),映射到一个很大的空间里,div切图排版如图所示.数据的存储时网页切图制作,对应到这个环中的每个位置div+css+js切图,如k1对应到了图中所示的位置,手机网页外包然后沿顺时针找到一个机器节点B,将k1存储到B这个节点中.

分散性(Spread) 在分布式环境中,页面div重构终端有可能看不到所有的缓冲psd切图html,而是只能看到其中的一部分.当终端希望通过哈希过程将内容映射到缓冲上时,psd切图html由于不同终端所见的缓冲范围有可能不同web外包,从而导致哈希的结果不一致,web外包最终的结果是相同的内容被不同的终端映射到不同的缓冲区中.这种情况显然是应该避免的网页切图制作,因为它导致相同内容被存储到不同缓冲中去,div页面降低了系统存储的效率.分散性的定义就是上述情况发生的严重程度.好的哈希算法应能够尽量避免不一致的情况发生div+css+js切图,也就是尽量降低分散性.

  下一步将各个服务器使用Hash进行一个哈希,手机网页外包具体可以选择服务器的ip或主机名作为关键字进行哈希承接网站前端,这样每台机器就能确定其在哈希环上的位置,承接网站前端这里假设将上文中四台服务器使用ip地址哈希后在环空间的位置如下:

同时数据定位算法不变psd切图html,只是多了一步虚拟节点到实际节点的映射,承接网页制作例如定位到“Node A#1”、“Node A#2”、“Node A#3”三个虚拟节点的数据均定位到Node A上.这样就解决了服务节点少时数据倾斜的问题.在实际应用中web外包,通常将虚拟节点数设置为32甚至更大,web外包因此即使很少的服务节点也能做到相对均匀的数据分布.

负载(Load) 负载问题实际上是从另一个角度看待分散性问题.既然不同的终端可能将相同的内容映射到不同的缓冲区中网页切图制作,那么对于一个特定的缓冲区而言,网页切图制作也可能被不同的用户映射为不同的内容.与分散性一样div+css+js切图,这种情况也是应当避免的,网页重构报价因此好的哈希算法应能够尽量降低缓冲的负荷.

另外承接网站前端,一致性哈希算法在服务节点太少时,承接网站前端容易因为节点分部不均匀而造成数据倾斜问题.例如系统中只有两台服务器psd切图html,其环分布如下,psd切图html

原理 基本概念   一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》中被提出.简单来说web外包,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,div切图排版如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),并确定此数据在环上的位置div+css+js切图,第一台遇到的服务器就是其应该定位到的服务器.

  整个空间按顺时针方向组织.0和232-1在零点中方向重合.

       为此承接网站前端,数据的存储是沿着环的顺时针方向找一个虚拟节点psd切图html,每个虚拟节点都会关联到一个真实节点,psd切图html如下图所使用:

  从上图的状态中添加一台memcached服务器.余数分布式算法由于保存键的服务器会发生巨大变化而影响缓存的命中率web外包,但Consistent Hashing中,web外包只有在园(continuum)上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响网页切图制作,如下图所示:

下面考虑另外一种情况,div页面如果在系统中增加一台服务器Node X,如下图所示:

此时必然造成大量数据集中到Node A上,手机网页外包而只有极少量会定位到Node B上.为了解决这种数据倾斜问题承接网站前端,一致性哈希算法引入了虚拟节点机制,承接网站前端即对每一个服务节点计算多个哈希psd切图html,每个计算结果位置都放置一个此服务节点,承接网页制作称为虚拟节点.具体做法可以在服务器ip或主机名的后面增加编号来实现.例如上面的情况web外包,可以为每台服务器计算三个虚拟节点,web外包于是可以分别计算 “Node A#1”、“Node A#2”、“Node A#3”、“Node B#1”、“Node B#2”、“Node B#3”的哈希值,于是形成六个虚拟节点:

 

 

图中的A1、A2、B1、B2、C1、C2、D1、D2都是虚拟节点,网页切图制作机器A负载存储A1、A2的数据div+css+js切图,机器B负载存储B1、B2的数据,网页重构报价机器C负载存储C1、C2的数据.由于这些虚拟节点数量很多承接网站前端,均匀分布,承接网站前端因此不会造成“雪崩”现象.

 

综上所述psd切图html,一致性哈希算法对于节点的增减都只需重定位环空间中的一小部分数据,psd切图html具有较好的容错性和可扩展性.

如果B节点宕机了web外包,则B上的数据就会落到C节点上,div切图排版如下图所示:

 

 

 

  但现在一致性hash算法在分布式系统中也得到了广泛应用网页切图制作,研究过memcached缓存数据库的人都知道,网页切图制作memcached服务器端本身不提供分布式cache的一致性div+css+js切图,而是由客户端来提供,手机网页外包具体在计算一致性hash时采用如下步骤:

这样承接网站前端,只会影响C节点,页面div重构对其他的节点A,D的数据不会造成影响.然而,psd切图html这又会造成一个“雪崩”的情况web外包,即C节点由于承担了B节点的数据,web外包所以C节点的负载会变高网页切图制作,C节点很容易也宕机,div页面这样依次下去div+css+js切图,这样造成整个集群都挂了.

一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,手机网页外包设计目标是为了解决因特网中的热点(Hot spot)问题承接网站前端,初衷和CARP十分类似.一致性哈希修正了CARP使用的简单哈希算法带来的问题,承接网站前端使得DHT可以在P2P环境中真正得到应用.

 

根据一致性哈希算法psd切图html,数据A会被定为到Node A上,承接网页制作B被定为到Node B上web外包,C被定为到Node C上,web外包D被定为到Node D上.

平滑性(Smoothness) 平滑性是指缓存服务器的数目平滑改变和缓存对象的平滑改变是一致的.

  一致性Hash性质   考虑到分布式系统每个节点都有可能失效网页切图制作,并且新的节点很可能动态的增加进来,网页切图制作如何保证当系统的节点数目发生变化时仍然能够对外提供良好的服务div+css+js切图,这是值得考虑的,网页重构报价尤其实在设计分布式缓存系统时承接网站前端,如果某台服务器失效,承接网站前端对于整个系统来说如果不采用合适的算法来保证一致性psd切图html,那么缓存于系统中的所有数据都可能会失效(即由于系统节点数目变少,psd切图html客户端在请求某一对象时需要重新计算其hash值(通常与系统中的节点数目有关),由于hash值已经改变,div切图排版所以很可能找不到保存该对象的服务器节点),因此一致性hash就显得至关重要,网页切图制作良好的分布式cahce系统中的一致性hash算法应该满足以下几个方面:

 

 

下面分析一致性哈希算法的容错性和可扩展性.现假设Node C不幸宕机div+css+js切图,可以看到此时对象A、B、D不会受到影响,手机网页外包只有C对象被重定位到Node D.一般的承接网站前端,在一致性哈希算法中,页面div重构如果一台服务器不可用psd切图html,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据,psd切图html其它不会受到影响.

首先求出memcached服务器(节点)的哈希值,并映射到相同的圆上.然后从数据映射到的位置开始顺时针查找网页切图制作,将数据保存到找到的第一个服务器上.如果超过232仍然找不到服务器,div页面就会保存到第一台memcached服务器上.

 

平衡性(Balance) 平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去div+css+js切图,这样可以使得所有的缓冲空间都得到利用.很多哈希算法都能够满足这一条件.

  例如我们有Object A、Object B、Object C、Object D四个数据对象,手机网页外包经过哈希计算后承接网站前端,在环空间上的位置如下:

 

单调性(Monotonicity) 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,承接网站前端又有新的缓冲区加入到系统中psd切图html,那么哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲区中去,承接网页制作而不会被映射到旧的缓冲集合中的其他缓冲区.简单的哈希算法往往不能满足单调性的要求web外包,在上式中网页切图制作,P表示全部缓冲的大小.不难看出,网页切图制作当缓冲大小发生变化时(从P1到P2),原来所有的哈希结果均会发生变化,网页重构报价从而不满足单调性的要求.哈希结果的变化意味着当缓冲空间发生变化时承接网站前端,所有的映射关系需要在系统内全部更新.而在P2P系统内,承接网站前端缓冲的变化等价于Peer加入或退出系统psd切图html,这一情况在P2P系统中会频繁发生,psd切图html因此会带来极大计算和传输负荷.单调性就是要求哈希算法能够应对这种情况.

 

 

 

 

点击次数:4469
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日LCA-最小公共父节点 【综合】2015年07月20日JavaScript_利用eval函数求字符串数学表达式的值 【移动开发】2015年08月03日poj3613经过k条边最短路floyd+矩阵快速幂【移动开发】2014年11月06日POJ2524UbiquitousReligions(宗教种类:并差集)【移动开发】2015年08月30日JavaSimon--性能瓶颈分析工具 【Web前端】2015年01月19日php过滤器实现代码2014年01月29日JavaScript获取事件对象的注意点2014年01月29日html中插入wmv格式视频文件的代码2014年01月29日UVa11121-Base-2【编程语言】2014年11月04日div填充剩余宽度 【架构设计】2015年01月04日Excel表格的隔行调整行高的4种方法2014年01月28日桁架结构的APDL命令流 【综合】2015年08月14日一个小型的网页抓取系统的架构设计 【编程语言】2014年11月08日Unity3d修炼之路:游戏开发中,3d数学知识的练习【1】(不断更新.......)【编程语言】2014年11月18日html注册登录模板 【互联网】2015年07月27日gsoapforQt(windows)【编程语言】2014年12月10日jQuery源码分析笔记(2)变量列表2014年01月29日HBase之BloomFilter 【综合】2015年07月10日BulkLoad-HBase数据导入最佳实践 【移动开发】2015年07月27日如何设置mysql允许外网访问2014年01月29日Ecshop中英双语版自动切换判断的个人方案 【编程语言】2014年11月10日Redis(Sentinel)监控集群安装部署【编程语言】2015年03月30日java深克隆clone对象或容器的另一种方法 【数据库】2015年01月24日Androidwebview使用详解 【Web前端】2015年01月04日js实现页面时间动态变化 【数据库】2015年07月13日C#Windows7任务栏开发之进度条(ProgressBar) 【编程语言】2015年04月28日数据结构-图的存储结构 【数据库】2015年05月05日DelphiCommand模式2014年01月29日Android之BLE编程 【移动开发】2015年07月27日DIV+CSS建设网页简单的6个步骤2014年01月28日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)