PHP實現一致性雜湊演算法

2022-03-20 12:34:04 字數 1295 閱讀 8559

**如下:

<?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快取服務等,好像也沒...