一致性哈希算法PHP测试片段

Posted 盛碗米饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一致性哈希算法PHP测试片段相关的知识,希望对你有一定的参考价值。

<?php
header(‘Content-type: text/html; charset=utf8‘);
# 抽象接口
interface hash{
public function _hash($str);
}
interface distribution{
public function lookup($key);
}

# hash 算法实例
class Consistent implements hash,distribution {
protected $point_num = 64;
protected $posi = array();
protected $server;

#计算一个hash值
public function _hash($str){
return sprintf(‘%u‘,crc32($str));
}

# 计算key分布到的服务器
public function lookup($key){
foreach($this->posi as $k=>$v){
if ($this->_hash($key) <= $k ){
$this->server = $v;
break;
}
}
return $this->server;
}

# 添加服务节点
public function addServer($server){
for ($i=1;$i<=$this->point_num;$i++){
$this->posi[$this->_hash($server.‘_‘.$i)] = $server;
}
$this->sortPosi();
}

#排序定位点
public function sortPosi(){
ksort($this->posi);
}

#打印定位点
public function printPosi(){
echo ‘<pre>‘;
print_r($this->posi);
}
}

$hash = new Consistent();
$hash->addServer(‘a‘);
$hash->addServer(‘b‘);
$hash->addServer(‘c‘);

#test hash
$key = ‘abc‘;
$server = $hash->lookup($key);
echo $key.‘对应的服务器是:‘.$Server.‘ &nbsp;&nbsp;对应的hash值是:‘.$hash->_hash($key);
echo ‘<hr />‘;
$hash->printPosi();

























































以上是关于一致性哈希算法PHP测试片段的主要内容,如果未能解决你的问题,请参考以下文章

哈希表、哈希算法、一致性哈希表

(3)一致性哈希vs哈希取模算法

查找--深入理解一致性哈希算法

一致性哈希算法怎么保证数据的一致性

深入一致性哈希(Consistent Hashing)算法原理,并附100行代码实现

面试官问:一致性哈希算法是什么?怎么判定哈希算法的好坏?