成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法

瀏覽:6日期:2022-09-07 11:30:37
目錄傳統(tǒng)算法缺陷算法思想算法實(shí)現(xiàn)總結(jié)傳統(tǒng)算法缺陷

對于服務(wù)器分布,我們要考慮的東西有如下三點(diǎn):數(shù)據(jù)平均分布,查找定位準(zhǔn)確,降低宕機(jī)影響。

傳統(tǒng)算法一般是將數(shù)據(jù)的鍵用算法映射出數(shù)字,對其用服務(wù)器數(shù)量取模,并根據(jù)結(jié)果選擇要存儲的服務(wù)器。其能達(dá)到數(shù)據(jù)平均分布和查找定位準(zhǔn)確的要求,并且優(yōu)點(diǎn)是算法簡單,存取時的計(jì)算量都比較小(在數(shù)據(jù)非常大時才會明顯)。

但其有一個致命缺點(diǎn),即一個服務(wù)器宕機(jī)后的影響很大,我們可以推算一下一臺服務(wù)器宕機(jī)后的影響:

原有數(shù)據(jù)大部分丟失:服務(wù)器數(shù)量減少一臺,取模數(shù)減1導(dǎo)致取模值錯亂,如果以前有N臺服務(wù)器,那么宕機(jī)后數(shù)據(jù)只有1/(n*(n-1))的數(shù)據(jù)能夠被準(zhǔn)確查找到。 負(fù)載無法均衡導(dǎo)致集體宕機(jī):如果沒有及時處理宕機(jī)的服務(wù)器,那么他的存儲任務(wù)將會被順序積累給它的下一個服務(wù)器,那么下一個服務(wù)器也會很快被壓致宕機(jī),如此一來,服務(wù)器組很快會集體宕機(jī)。算法思想

一致性哈希算法是使用一定的哈希算法,將大量的數(shù)據(jù)平均映射到不同的存儲目標(biāo)上,在保證其查找準(zhǔn)確性的同時,還要考慮其中一個存儲目標(biāo)失效時,其他存儲目標(biāo)對其責(zé)任存儲內(nèi)容的負(fù)載均衡。

一致性哈希算法的實(shí)現(xiàn)思想不難理解,如圖:

如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法

1.用一定的哈希算法(哈希函數(shù)等)將一組服務(wù)器的多個(數(shù)目自己設(shè)定)節(jié)點(diǎn)隨機(jī)映射分散到0-232之間,由于其隨機(jī)分布,保證了其數(shù)據(jù)平均分布的特點(diǎn);

2.用同一算法計(jì)算要存儲數(shù)據(jù)的鍵,根據(jù)服務(wù)器節(jié)點(diǎn)確定其存儲的服務(wù)器結(jié)點(diǎn),由于每次用同一算法計(jì)算,所以得出的結(jié)果是相同的,使其查找定位準(zhǔn)確;

3.查找數(shù)據(jù)時,再次用同一算法計(jì)算鍵,并查找服務(wù)器的數(shù)據(jù)結(jié)點(diǎn);

4.如果有一個服務(wù)器宕機(jī),消除其服務(wù)器結(jié)點(diǎn),并將數(shù)據(jù)放在下一個結(jié)點(diǎn)上,由于隨機(jī)節(jié)點(diǎn)位置的隨機(jī)性,所以數(shù)據(jù)被其他服務(wù)器平均負(fù)載,也就降低了宕機(jī)影響。

需要注意的是,這個環(huán)形空間只是一個虛擬空間,只是表示了服務(wù)器存儲的范圍和數(shù)據(jù)的落點(diǎn),在進(jìn)行存儲時,我們還要通過查找到的落點(diǎn),將數(shù)據(jù)放入對應(yīng)的服務(wù)器進(jìn)行查改。

算法實(shí)現(xiàn)

編程語言我們使用PHP來實(shí)現(xiàn)一致性哈希算法:

我們主要用到以下函數(shù):

int crc32 ( string $str )生成 str 的 32 位循環(huán)冗余校驗(yàn)碼多項(xiàng)式。這通常用于檢查傳輸?shù)臄?shù)據(jù)是否完整。

string sprintf ( string $format [, mixed $args [, mixed $... ]] ) 通過傳入的格式產(chǎn)生字符串的特定格式形態(tài)。

實(shí)現(xiàn)如下:

class Consistance{ protected $num=24; //設(shè)定每一個服務(wù)器的節(jié)點(diǎn)數(shù),數(shù)量越多,宕機(jī)時服務(wù)器負(fù)載就會分布得越平均,但也增大數(shù)據(jù)查找消耗。 protected $nodes=array(); //當(dāng)前服務(wù)器組的結(jié)點(diǎn)列表。 //計(jì)算一個數(shù)據(jù)的哈希值,用以確定位置 public function make_hash($data) {return sprintf(’%u’,crc32($data)); } //遍歷當(dāng)前服務(wù)器組的節(jié)點(diǎn)列表,確定需要存儲/查找的服務(wù)器 public function set_loc($data) {$loc=self::make_hash($data);foreach ($this->nodes as $key => $val){ if($loc<=$key) {return $val; }} } //添加一個服務(wù)器,將其結(jié)點(diǎn)添加到服務(wù)器組的節(jié)點(diǎn)列表內(nèi)。 public function add_host($host) {for($i=0;$i<$this->num;$i++){ $key=sprintf(’%u’,crc32($host.’_’.$i)); $this->nodes[$key]=$host; }ksort($this->nodes);//對結(jié)點(diǎn)排序,這樣便于查找。 } //刪除一個服務(wù)器,并將其對應(yīng)節(jié)點(diǎn)從服務(wù)器組的節(jié)點(diǎn)列表內(nèi)移除。 public function remove_host($host) {for($i=0;$i<$this->num;$i++){ $key=sprintf(’%u’,crc32($host.’_’.$i)); unset($this->nodes[$key]);} }}

我們用以下代碼進(jìn)行測試:

如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法

結(jié)果如下:

如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法

總結(jié)

算法的實(shí)現(xiàn)到此,我們還可以對算法進(jìn)行優(yōu)化,如在服務(wù)器數(shù)量和每個服務(wù)器節(jié)點(diǎn)數(shù)都很多的情況下,對查找結(jié)點(diǎn)的過程進(jìn)行優(yōu)化,因?yàn)榕判蚝玫模梢杂枚址ㄟM(jìn)行查找,加快查詢效率,這些,仁智各見吧。

另外,雖然nginx服務(wù)器有一致性算法的插件,memcache和redis也都有相應(yīng)的插件,MySQL的中間件有相應(yīng)的集成,但是了解一致性哈希算法也很有意義。而且,我們也可以對其靈活使用,如對文件等進(jìn)行分布式管理等等。

以上就是如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法的詳細(xì)內(nèi)容,更多關(guān)于用PHP實(shí)現(xiàn)分布算法之一致性哈希算法的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
eeuss鲁片一区二区三区| 日韩高清在线一区| 一区二区三区四区五区视频在线观看| 波多野结衣欧美| 欧美日韩国产a| 免费观看在线色综合| 久久综合电影| 亚洲精品成a人| 国产一区美女| 国产亚洲美州欧州综合国| 波多野结衣在线aⅴ中文字幕不卡| 欧美久久久久久久久| 捆绑调教美女网站视频一区| 在线看日韩精品电影| 蜜臀av一区二区在线观看 | 欧美承认网站| 久久精品网站免费观看| 99久久国产综合精品色伊| 欧美电影免费观看高清完整版| 国产99一区视频免费| 欧美久久一二三四区| 寂寞少妇一区二区三区| 欧美日韩高清影院| 精品一区二区免费在线观看| 欧美天天综合网| 久久精品999| 欧美日韩视频一区二区| 久久99九九99精品| 欧美一区二区视频在线观看2020| 成人性色生活片| 欧美精品一区二区三区很污很色的 | 国产精品视频线看| 欧美黄在线观看| 亚洲欧洲av另类| 亚洲免费激情| 亚洲午夜久久久久久久久电影院| 翔田千里一区二区| 美女视频黄频大全不卡视频在线播放| 欧美三电影在线| 国产凹凸在线观看一区二区| 久久午夜国产精品| 欧美性大战久久久久| 亚洲精品视频一区二区| 国产精品一区视频网站| 日产精品久久久久久久性色| 欧美丝袜丝交足nylons| 国产一区二区精品久久99| 精品久久一区二区三区| 欧美韩日精品| 亚洲乱码国产乱码精品精可以看 | 欧美视频在线观看一区| 国产乱码字幕精品高清av| 精品国产乱码久久久久久久| 午夜国产精品视频| 国产精品久久久久久久裸模| 一区二区三区av| 麻豆精品视频在线观看视频| 欧美一区二区三区在线| 欧美精品一区二区视频| 亚洲一区二区在线免费看| 91福利国产成人精品照片| 国模一区二区三区白浆| 欧美v日韩v国产v| 在线看片一区| 天天综合天天综合色| 欧美系列日韩一区| 国产大陆亚洲精品国产| 欧美三级在线看| 成人午夜伦理影院| 亚洲精品少妇30p| 红桃视频亚洲| 亚洲一区二区五区| 美日韩一级片在线观看| 国产一区 二区| 久久精品视频免费| 亚洲午夜激情av| 国产盗摄视频一区二区三区| 国产日韩欧美一区二区| 欧美一区二区三区不卡| 亚洲毛片av在线| 国产在线日韩欧美| 久久www成人_看片免费不卡| 亚洲永久精品大片| 国产乱淫av一区二区三区| 成人性生交大片免费看在线播放| 在线观看欧美亚洲| 欧美天堂一区二区三区| 国产精品国产a级| 青青草成人在线观看| 91麻豆国产福利精品| 在线观看中文字幕不卡| 中文字幕视频一区| 国产99久久久久久免费看农村| 高清成人免费视频| 国产欧美日韩亚洲| 久久久国产精品午夜一区ai换脸| 香蕉久久一区二区不卡无毒影院 | 亚洲成色精品| 欧美偷拍一区二区| 国产欧美一区二区精品仙草咪| 亚洲国产中文字幕| 国产盗摄视频一区二区三区| 亚洲午夜精品国产| 欧美男人的天堂一二区| 久久精品人人爽人人爽| 蜜桃视频一区二区三区在线观看| 91网上在线视频| 久久久精品午夜少妇| 久久青草国产手机看片福利盒子| 日本不卡一区二区三区高清视频| 国产精品v亚洲精品v日韩精品| 欧美亚洲一区三区| 国产精品高潮呻吟| 99re在线精品| 欧美日韩美少妇| 欧美一区二区三区啪啪| 夜夜亚洲天天久久| 欧美精品二区三区四区免费看视频| 欧美日韩国产一级片| 中文字幕亚洲在| 不卡的av网站| 欧美亚洲禁片免费| 亚洲精品老司机| 国产主播一区二区三区四区| 欧美电视剧免费全集观看| 男男gaygay亚洲| 羞羞视频在线观看欧美| 亚洲欧洲综合另类| 在线播放日韩| 亚洲欧美一区二区久久| 欧美性大战久久久久| 国产精品色在线观看| 99精品久久久久久| 久久综合狠狠综合久久激情| www.日韩av| 久久亚洲综合av| 99精品久久只有精品| 久久精品成人一区二区三区蜜臀| 国产免费观看久久| 91蜜桃传媒精品久久久一区二区| 日韩精品中午字幕| 福利一区二区在线观看| 日韩精品一区二区三区蜜臀| 国产激情精品久久久第一区二区| 日韩欧美国产一区二区在线播放 | 亚洲欧洲日韩综合二区| 你懂的国产精品永久在线| 欧美精品一区二区不卡| 欧美精品18| 日本一区二区成人| 9久re热视频在线精品| 亚洲va国产天堂va久久en| 久久福利一区| 捆绑紧缚一区二区三区视频 | 波多野结衣中文一区| 国产性色一区二区| 在线 亚洲欧美在线综合一区| 日本一区二区三区dvd视频在线| 欧美午夜精品久久久久免费视| 亚洲欧美偷拍另类a∨色屁股| 久久综合狠狠| 国产精品亚洲一区二区三区妖精| 精品国一区二区三区| 成人黄色片在线观看| 日韩免费高清视频| 99精品99久久久久久宅男| 日韩电影在线一区二区| 精品美女一区二区| 亚洲图片欧洲图片日韩av| 日本午夜精品视频在线观看 | 欧美激情一区三区| 亚洲人体大胆视频| 免费不卡在线观看| 精品久久久久久久人人人人传媒 | 欧美午夜免费电影| 欧美理论在线| 性感美女极品91精品| 精品日韩在线观看| 久久激情一区| 91亚洲国产成人精品一区二区三| 色呦呦网站一区| 国产一区久久| 免费高清在线视频一区·| 亚洲精品在线免费观看视频| 蜜桃av一区| 国产不卡视频在线观看| 国产精品视区| 欧美日本三区| 国产精品1区2区| 手机精品视频在线观看| 亚洲午夜私人影院| 亚洲综合激情网| 一区二区在线免费| 亚洲丝袜另类动漫二区| 亚洲欧美乱综合| 午夜日韩在线观看| 九九**精品视频免费播放| 精品在线观看视频| 成人午夜电影久久影院| 一区在线电影|