**如下:
<?php效果如圖:function myhash($str
) );
//$hash = ($hash * 33 + ord($s)) & 0x7fffffff;
$hash = ($hash
<< $seed) + $hash + ord($s);
} return
$hash & 0x7fffffff;
}class
consistenthash
return
$this
; }
public
function find_my_hash($key='')
//如果是空的 返回false
if($length==1)//
如果是只有1個 就立即返回當前這個
if (!$this->_layze_sorted)
reset($this->_server_list);
$first_key=key($this->_server_list);//
獲取首個key
if($find_hash
)
reset($this->_server_list);//
重置陣列
$result=current($this->_server_list);//
獲取當前第乙個作為假定的結果
foreach ($this->_server_list as
$key => $v
) else
}return
$result;//
最後也沒找到說明 大於了最大值}}
$consishash = new
consistenthash();
for ($i=0; $i
< 1000; $i++)
");}
$start_time=microtime(true
);for ($i=0; $i
< 10000; $i++)
-->".$consishash->find_my_hash("key"));
}$end_time=microtime(true
);$result=($end_time-$start_time)*1000;
var_dump($result
);?>
PHP實現一致性雜湊演算法
如下 function myhash str hash hash 33 ord s 0x7fffffff hash hash seed hash ord s return hash 0x7fffffff class consistenthash return this public function...
一致性雜湊演算法
好吧,我們決定打破這種基於資料項商業邏輯的劃分思維,來考慮一種基於 key 的劃分方式,這有些類似於後面介紹的資料庫水平分割槽 sharding 我們需要設計一種不依賴資料項內容的雜湊演算法,將所有資料項的 key 均衡分配在這三颱快取伺服器上。乙個簡單而有效的方法是 取餘 運算,這就像打撲克時的發...
一致性雜湊演算法
在分布式系統中,如果某業務可以由多個相同的節點處理,很容易想到用hash的方式將業務請求分散到這些節點處理,如果有n個節點,計算方法為 hash id n。如果只是簡單的計算,不涉及使用者狀態,這是乙個簡單有效的方案。如果節點的計算涉及使用者狀態,比如維護購物車 memcache快取服務等,好像也沒...