国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

PHP取模hash和一致性hash操作Memcached分布式集群

2020-03-22 18:21:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1.開(kāi)啟4個(gè)Memcached服務(wù)模擬集群

/usr/local/memcached/bin/memcached -d -p 11211 -u memcached -vv >> /var/log/memcached.11211.log 2>&1/usr/local/memcached/bin/memcached -d -p 11212 -u memcached -vv >> /var/log/memcached.11212.log 2>&1/usr/local/memcached/bin/memcached -d -p 11213 -u memcached -vv >> /var/log/memcached.11213.log 2>&1/usr/local/memcached/bin/memcached -d -p 11214 -u memcached -vv >> /var/log/memcached.11214.log 2>&1

2.取模hash算法

php代碼

<?php/** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/28 * Time: 11:38 */$memcached = new Memcached();//設(shè)置算法為取模hash$memcached->setOptions(    array(        Memcached::OPT_DISTRIBUTION         => Memcached::DISTRIBUTION_MODULA,        //Memcached::OPT_LIBKETAMA_COMPATIBLE => true,        Memcached::OPT_REMOVE_FAILED_SERVERS=> true,    ));//添加服務(wù)器$memcached->addServer('192.168.75.132', '11211');$memcached->addServer('192.168.75.132', '11212');$memcached->addServer('192.168.75.132', '11213');$memcached->addServer('192.168.75.132', '11214');//寫(xiě)入12個(gè)keyfor ($i =1;$i <= 12;$i++){    $memcached->set('key_'.$i, 'html' target='_blank'>value_'.$i);}

執(zhí)行上述代碼,查看log

#memcached.11211.log<28 new auto-negotiating client connection28: Client using the ascii protocol<28 set key_2 0 0 7>28 STORED<28 set key_3 0 0 7>28 STORED<28 set key_4 0 0 7>28 STORED<28 set key_10 0 0 8>28 STORED<28 quit<28 connection closed.#memcached.11212.log<28 new auto-negotiating client connection28: Client using the ascii protocol<28 set key_1 0 0 7>28 STORED<28 set key_6 0 0 7>28 STORED<28 set key_9 0 0 7>28 STORED<28 set key_12 0 0 8>28 STORED<28 quit<28 connection closed.#memcached.11213.log<28 new auto-negotiating client connection28: Client using the ascii protocol<28 set key_7 0 0 7>28 STORED<28 set key_8 0 0 7>28 STORED<28 quit<28 connection closed.#memcached.11214.log<28 new auto-negotiating client connection28: Client using the ascii protocol<28 set key_5 0 0 7>28 STORED<28 set key_11 0 0 8>28 STORED<28 quit<28 connection closed.

查看key的分布

11aff7336b4c2fcb0e85fd474676824.png

注釋掉php代碼中的11214//$memcached->addServer('192.168.75.132', '11214');
再次執(zhí)行php代碼
查看key的分布

758eaf9aab838e7250eba6eae3a3746.png

對(duì)比兩次key的分布:

key_2和key_10命中沒(méi)有變動(dòng),始終在11211中,其他10個(gè)key因?yàn)榉?wù)器的減少命中發(fā)生變化

3.一致性hash算法

php代碼

<?php/** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/28 * Time: 11:38 */$memcached = new Memcached();//設(shè)置算法為一致性hash$memcached->setOptions(    array(        Memcached::OPT_DISTRIBUTION         => Memcached::DISTRIBUTION_CONSISTENT,        Memcached::OPT_LIBKETAMA_COMPATIBLE => true,        Memcached::OPT_REMOVE_FAILED_SERVERS=> true,    ));//添加服務(wù)器$memcached->addServer('192.168.75.132', '11211');$memcached->addServer('192.168.75.132', '11212');$memcached->addServer('192.168.75.132', '11213');$memcached->addServer('192.168.75.132', '11214');//寫(xiě)入12個(gè)keyfor ($i =1;$i <= 12;$i++){    $ret = $memcached->set('key_'.$i, 'value_'.$i);}

執(zhí)行上述代碼,查看log

查看key的分布

21a16a8cbe5182a42965c1db4a63172.png

注釋掉php代碼中的11214//$memcached->addServer('192.168.75.132', '11214');
再次執(zhí)行php代碼
查看key的分布

5a49a95b04a70657ac1a2ffa26625f7.png

對(duì)比兩次key的分布:

11211原有的key命中沒(méi)有發(fā)生變化,新增了key_4

11212原有的key命中沒(méi)有發(fā)生變化

11213原有的key命中沒(méi)有發(fā)生變化,新增了key_12

有2個(gè)key因?yàn)榉?wù)器的減少命中發(fā)生變化

4.對(duì)比

取模hash算法減少一臺(tái)服務(wù)器有10個(gè)key命中發(fā)生了變化。

一致性hash算法減少一臺(tái)服務(wù)器2個(gè)key命中發(fā)生了變化。

這里只測(cè)試了12個(gè)key,模擬的數(shù)據(jù)量太小導(dǎo)致key分布不均勻,但服務(wù)器減少導(dǎo)致key命中發(fā)生變化和模擬數(shù)據(jù)量大小無(wú)關(guān),而是和hash算法有關(guān),這些測(cè)試體現(xiàn)了一致性hash算法的優(yōu)勢(shì),取模hash因?yàn)榉?wù)器的減少導(dǎo)致大量key的取模結(jié)果發(fā)生變化,命中的服務(wù)器也發(fā)生了變化;而一致性hash算法key是固定在一個(gè)有2^32-1個(gè)節(jié)點(diǎn)的hash環(huán)上,服務(wù)器減少key在hash環(huán)上的位置不會(huì)發(fā)生變化,僅僅影響減少的那臺(tái)服務(wù)器上key的命中,增加服務(wù)器也僅僅影響hash環(huán)上下一個(gè)位置服務(wù)器的部分key而已

以上就是PHP取模hash和一致性hash操作Memcached分布式集群的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平塘县| 陆良县| 荃湾区| 彭山县| 泰安市| 武汉市| 怀仁县| 浮梁县| 聂荣县| 剑河县| 阜城县| 瑞安市| 金山区| 沂源县| 乳山市| 武邑县| 班戈县| 伊川县| 阿荣旗| 德令哈市| 晴隆县| 民县| 台湾省| 横峰县| 马边| 冷水江市| 龙江县| 潮安县| 东乡| 木兰县| 宿迁市| 竹山县| 正阳县| 开江县| 托克逊县| 棋牌| 临沧市| 延津县| 兴安盟| 沅陵县| 柏乡县|