亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP一致性hash分布式算法封裝類定義與用法示例

2024-05-05 00:04:50
字體:
來源:轉載
供稿:網友

本文實例講述了PHP一致性hash分布式算法封裝類定義與用法。分享給大家供大家參考,具體如下:

一、無虛擬節點實現

<?php/** * 一致性hash分布式算法 * @param $key * @return int * 實現步驟 * 1.先將0~ 是32位最大帶符號整數(0x7FFFFFFF) 想象成一個閉環 * 2.將服務器列表通過hash算法分布在 圓環之中 * 3.將key值也分布在圓環之中 * 4.通過_isSorted判斷服務器是否需要進行倒序排序 排序后遍歷服務器 找到最近的服務器 返回 * hash算法是不保證平衡的 為了盡量保證平衡性 我們應該加入虛擬節點數 將一個服務器節點虛擬化成為多個 較大程度上保證了平衡性 */class FlexiHash{  private $_serverList = array();  private $_isSorted = false;  private $_virtual_node_num = 20;//虛擬節點數 服務器越少 增加的虛擬節點數應該越多  //通過hash算法返回一個整數值  protected function myHash($key){    $md5 = substr(md5($key),0,8);    $seed = 31; //種子值    $hash=0;    for($i=0;$i<8;$i++){      $hash = $hash*$seed+ord($md5{$i}); //ord 返回ascii值      $i++;    }    return $hash&0x7FFFFFFF; //0x7FFFFFFF表示最大值  }  //添加服務器  function addServer($server){    $hash =$this->myHash($server. '#1');    if(!isset($this->_serverList[$hash])) {      for ($i = 1; $i <= $this->_virtual_node_num; $i++) {        $hash = $this->myHash($server . '#' . $i);        $this->_serverList[$hash] = $server;      }    }    $this->_isSorted = false;    return true;  }  //刪除服務器  function removeServer($server){    for ($i = 1; $i <= $this->_virtual_node_num; $i++) {      $hash = $this->myHash($server . '#' . $i);      unset($this->_serverList[$hash]);    }    $this->_isSorted = false;    return true;  }  //獲取服務器  function lookup($key){    $hash =$this->myHash($key);    if(!$this->_isSorted){      krsort($this->_serverList,SORT_NUMERIC);      $this->_isSorted = true;    }    foreach($this->_serverList as $pos=>$server){      if($hash >= $pos) return $server;    }    return end($this->_serverList);  }  public function getServerList(){    krsort($this->_serverList,SORT_NUMERIC);    return $this->_serverList;  }}//demo test$hserver = new FlexiHash();//添加服務器$hserver->addServer('192.168.1.1');$hserver->addServer('192.168.1.2');$hserver->addServer('192.168.1.3');$hserver->addServer('192.168.1.4');$hserver->addServer('192.168.1.5');$key1='Key1111';$key2='Key2222';$key2='Key3333';$key2='Key4444';$key2='Key5555';$key2='Key6666';echo "save key1 in server: ".$hserver->lookup($key1).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key2).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key3).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key4).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key5).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key6).PHP_EOL;echo "================================================".PHP_EOL;//移除服務器 key值將自動轉義到下一臺服務器$hserver->removeServer('192.168.1.4');echo "save key1 in server: ".$hserver->lookup($key1).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key2).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key3).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key4).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key5).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key6).PHP_EOL;echo "================================================".PHP_EOL;//恢復故障服務器 key值將恢復原來服務器$hserver->addServer('192.168.1.4');echo "save key1 in server: ".$hserver->lookup($key1).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key2).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key3).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key4).PHP_EOL;echo "save key1 in server: ".$hserver->lookup($key5).PHP_EOL;echo "save key2 in server: ".$hserver->lookup($key6).PHP_EOL;

二、運行結果:

save key1 in server: 192.168.1.4
save key2 in server: 192.168.1.4
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3
================================================
save key1 in server: 192.168.1.2
save key2 in server: 192.168.1.5
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3
================================================
save key1 in server: 192.168.1.4
save key2 in server: 192.168.1.4
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3
save key1 in server: 192.168.1.3
save key2 in server: 192.168.1.3

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品自在线视频| 九九久久久久99精品| 国产视频亚洲视频| 少妇激情综合网| 国产精品黄视频| 亚洲欧美激情另类校园| 亚洲一区二区国产| 欧美日韩中文字幕综合视频| 68精品国产免费久久久久久婷婷| 亚洲美女喷白浆| 日日噜噜噜夜夜爽亚洲精品| 国产精品成人av在线| 45www国产精品网站| 国内外成人免费激情在线视频| 国产精品88a∨| 亚洲美女视频网站| 一区二区三区高清国产| 日韩欧美综合在线视频| 日韩精品极品视频| 欧美日本精品在线| 亚洲男人av在线| 国产精品久久网| 人人做人人澡人人爽欧美| 最近2019好看的中文字幕免费| 国产综合在线视频| 国产精品永久在线| 欧美另类极品videosbestfree| 97免费视频在线| 亚洲一区二区久久久久久| 成人性生交大片免费看视频直播| 久久久久免费精品国产| 色在人av网站天堂精品| 中文字幕亚洲专区| 成人国产精品一区| 久久五月天色综合| 97人人做人人爱| 久久久伊人日本| 亚洲字幕一区二区| 欧美一区二三区| 久久久久久久久久久成人| 亚洲最大的网站| 欧美性xxxx极品hd满灌| 97在线观看免费高清| 成人国产精品免费视频| 欧美午夜美女看片| 欧美日韩精品在线观看| 国内精品400部情侣激情| 亚洲精品成人av| 亚洲国产免费av| 亚洲欧美激情在线视频| 成人性生交大片免费看小说| 日韩亚洲欧美成人| 欧美国产视频一区二区| 中文字幕亚洲欧美日韩2019| 国产精品久久999| 日韩视频在线一区| 国产欧美va欧美va香蕉在线| 国产在线精品成人一区二区三区| 国产一区二区丝袜高跟鞋图片| www.日韩系列| 久久精品亚洲94久久精品| 97久久久免费福利网址| 国产成人一区二| 久久深夜福利免费观看| 亚洲成av人乱码色午夜| 日韩精品在线免费播放| 欧美成人三级视频网站| 国产欧美精品一区二区三区-老狼| 欧美亚洲视频在线看网址| 久久成人综合视频| 91高清视频免费观看| 成人国产精品av| 国产亚洲精品久久久久久牛牛| 久久91亚洲人成电影网站| 色综合天天综合网国产成人网| 欧美激情一区二区三区高清视频| 国产精品一区二区性色av| 成人激情在线观看| 精品国产鲁一鲁一区二区张丽| 久久九九全国免费精品观看| 国产精品久久久久久久美男| 国产丝袜一区二区三区免费视频| 欧美做受高潮1| 色偷偷888欧美精品久久久| 成人黄色免费在线观看| 97久久久久久| 最新的欧美黄色| 欧美精品一区二区免费| 精品欧美激情精品一区| 国产精品av免费在线观看| 亚洲精品自拍偷拍| 欧美激情视频三区| 97久久超碰福利国产精品…| 成人福利网站在线观看| 日韩av免费观影| 亚洲成人精品视频| 成人久久一区二区三区| 欧美成人免费小视频| 91av在线播放| 国产精品久久久久久久久久ktv| 欧美亚洲视频在线看网址| 久久99视频免费| 日韩中文字幕网| 亚洲国产毛片完整版| 久久久国产一区二区| 欧美区二区三区| 国产丝袜视频一区| 欧美日韩在线视频观看| 中文字幕亚洲精品| 中文字幕av一区中文字幕天堂| 欧美日韩国产丝袜美女| 亚洲中国色老太| 中文字幕亚洲一区二区三区五十路| 91精品国产网站| 日本精品久久中文字幕佐佐木| 亚洲精品小视频在线观看| 成人精品视频99在线观看免费| 91精品国产91久久久久福利| 欧洲成人在线观看| 91精品视频观看| 中文字幕不卡av| 国产视频久久久久| 欧美日韩国产中字| 国产精品美女视频网站| 欧美视频在线观看免费| 国产亚洲精品久久久久久牛牛| 日韩电影免费观看在线观看| 国产色综合天天综合网| 成人欧美在线观看| 日韩一区av在线| 欧美成人精品在线观看| 欧美一级高清免费| 国产精品视频播放| 国产精品偷伦视频免费观看国产| 国产日韩精品入口| 欧美极品欧美精品欧美视频| 亚洲一区二区三区视频| 97在线视频国产| 欧美视频在线观看 亚洲欧| 国产不卡视频在线| 97视频色精品| 欧美日韩一区二区在线播放| 丝袜美腿精品国产二区| 欧美性猛交丰臀xxxxx网站| 黄色成人av在线| 国产精品jizz在线观看麻豆| 久久久久久久久久国产精品| 亚洲精品www久久久| 中文亚洲视频在线| 国产日韩在线看片| 亚洲精品suv精品一区二区| 国产国产精品人在线视| 国产一区二区三区精品久久久| 黑人与娇小精品av专区| 欧日韩不卡在线视频| 欧美激情欧美狂野欧美精品| 国产精品午夜一区二区欲梦| 色与欲影视天天看综合网| 91精品国产91久久久| 欧美国产第一页| 国产精品色视频| 伊人成人开心激情综合网| 欧美黑人一级爽快片淫片高清| 亚洲欧美中文日韩v在线观看|