一致性hash算法:

1.一致性Hash算法也叫分布式算法
散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。

散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行訪问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来訪问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

2.解决冲突是一个复杂问题。冲突主要取决于:
(1)散列函数,一个好的散列函数的值应尽可能平均分布。
(2)处理冲突方法。
(3)负载因子的大小。太大不一定就好,并且浪费空间严重,负载因子和散列函数是联动的。
 解决冲突的办法:
     (1)线性探查法:冲突后,线性向前试探,找到近期的一个空位置。缺点是会出现堆积现象。存取时,可能不是同义词的词也位于探查序列,影响效率。

     (2)双散列函数法:在位置d冲突后,再次使用还有一个散列函数产生一个与散列表桶容量m互质的数c,依次试探(d+n*c)%m,使探查序列跳跃式分布。

3.经常使用的构造散列函数的方法
散列函数能使对一个数据序列的訪问过程更加迅速有效,通过散列函数,数据元素将被更快地定位:
1. 直接寻址法:取keyword或keyword的某个线性函数值为散列地址。即H(key)=key或H(key) = a•key + b,当中a和b为常数(这样的散列函数叫做自身函数)
2. 数字分析法:数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。
3. 平方取中法:取keyword平方后的中间几位作为散列地址。  4. 折叠法:将keyword切割成位数同样的几部分,最后一部分位数能够不同,然后取这几部分的叠加和(去除进位)作为散列地址。     5. 随机数法:选择一随机函数,取keyword的随机值作为散列地址,通经常使用于keyword长度不同的场合。    6. 除留余数法:取keyword被某个不大于散列表表长m的数p除后所得的余数为散列地址。                                                                                

散列表: 散列表的装填因子定义为:α= 填入表中的元素个数 / 散列表的长度α是散列表装满程度的标志因子

4.Hash算法在信息安全方面的应用主要体如今下面的3个方面:
(1) 文件校验:校验算法有奇偶校验和CRC校验(2) 数字签名:Hash 算法也是现代password体系中的一个重要组成部分。 (3) 鉴权协议:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

5.Hash函数分为几类:
1. 加法Hash;所谓的加法Hash就是把输入元素一个一个的加起来构成最后的结果
2. 位运算Hash;类型Hash函数通过利用各种位运算(常见的是移位和异或)来充分的混合输入元素
3. 乘法Hash;利用了乘法的不相关性
4. 除法Hash;
5. 查表Hash;查表Hash最有名的样例莫过于CRC系列算法 查表是它的一种最快的实现方式

6. 混合Hash;混合Hash算法利用了以上各种方式。各种常见的Hash算法,比方MD5、Tiger都属于这个范围。它们一般非常少在面向查找的Hash函数里面使用。

总结:一致性hash算法(DHT)通过减少影响范围的方式解决了增减服务器导致的数据散列问题,从而解决了分布式环境下负载均衡问题,如果存在热点数据,那么通过增添节点的方式,对热点区间进行划分,将压力分配至其他服务器。重新达到负载均衡的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值