memcached分布式hash策略測試

來源:互聯網
上載者:User

著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章原始出版、作者資訊和本聲明。否則將追究法律責任。http://blog.csdn.net/mayongzhan - 馬永占,myz,mayongzhan

 

配合memcache監控程式,測試memcache分布式,文章參考了網上某位牛人的文章。

測試crc32 fnv standard consistent 組合情況下的item分布情況及添加新伺服器對現有item命中率的影響。

 

先開memcached伺服器

#!/bin/bash
##############################
# MyZ 2009-07-12
# File:memcached_12.sh
##############################
port=11212
for (( i=11212; i<11224; i++ ))
do
 /usr/local/bin/memcached -u root -p $i -m 10 &
done

./memcached.sh

 

結論
使用memcache這種用戶端下的方法保證分配均勻的基礎下,存貨率做高的是crc32+ consistent。

 

測試結果

//crc32 standard
192.168.1.101:11212 => items:9812
192.168.1.101:11213 => items:10153
192.168.1.101:11214 => items:9895
192.168.1.101:11215 => items:9985
192.168.1.101:11216 => items:10206
192.168.1.101:11217 => items:9958
192.168.1.101:11218 => items:10159
192.168.1.101:11219 => items:9941
192.168.1.101:11220 => items:9924
192.168.1.101:11221 => items:9967
192.168.1.101:11222 => items:0%
192.168.1.101:11223 => items:0%

 

//fnv standard
192.168.1.101:11212 => items:9911
192.168.1.101:11213 => items:9978
192.168.1.101:11214 => items:9928
192.168.1.101:11215 => items:10053
192.168.1.101:11216 => items:9952
192.168.1.101:11217 => items:10055
192.168.1.101:11218 => items:10013
192.168.1.101:11219 => items:10089
192.168.1.101:11220 => items:9947
192.168.1.101:11221 => items:10074
192.168.1.101:11222 => items:0
192.168.1.101:11223 => items:0

 

//crc32 consistent
192.168.1.101:11212 => items:12466
192.168.1.101:11213 => items:10175
192.168.1.101:11214 => items:8436
192.168.1.101:11215 => items:9118
192.168.1.101:11216 => items:11757
192.168.1.101:11217 => items:9208
192.168.1.101:11218 => items:10343
192.168.1.101:11219 => items:8417
192.168.1.101:11220 => items:8716
192.168.1.101:11221 => items:11364
192.168.1.101:11222 => items:0
192.168.1.101:11223 => items:0

 

//fnv consistent
192.168.1.101:11212 => items:9014
192.168.1.101:11213 => items:13178
192.168.1.101:11214 => items:10053
192.168.1.101:11215 => items:4302
192.168.1.101:11216 => items:10875
192.168.1.101:11217 => items:4906
192.168.1.101:11218 => items:15593
192.168.1.101:11219 => items:9993
192.168.1.101:11220 => items:8093
192.168.1.101:11221 => items:13993
192.168.1.101:11222 => items:0
192.168.1.101:11223 => items:0

 

 

用於檢測memcache的程式配置部分

for ($i = 11212; $i < 11222; $i++) {
 $MEMCACHE_SERVERS[] = '192.168.1.101:'.$i; // add more as an array
}
$MEMCACHE_SERVERS[] = '192.168.1.101:11222'; // add more as an array
$MEMCACHE_SERVERS[] = '192.168.1.101:11223'; // add more as an array

 

測試代碼

 

<?php<br />/**<br /> * @name test.php<br /> * @date Thu Jul 12 21:18:59 CST 2009<br /> * @copyright 馬永占(MyZ)<br /> * @author 馬永占(MyZ)<br /> * @link http://blog.csdn.net/mayongzhan/<br /> */<br />set_time_limit(0);</p><p>//crc32 standard<br />//ini_set('memcache.hash_function','crc32');<br />//ini_set('memcache.hash_strategy','standard');<br />//crc32 consistent<br />ini_set('memcache.hash_function','crc32');<br />ini_set('memcache.hash_strategy','consistent');<br />//fnv standard<br />//ini_set('memcache.hash_function','fnv');<br />//ini_set('memcache.hash_strategy','standard');<br />//fnv consistent<br />//ini_set('memcache.hash_function','fnv');<br />//ini_set('memcache.hash_strategy','consistent');</p><p>$memcache_server_ip = '192.168.1.101';<br />for ($i = 11212; $i < 11222; $i++) {<br /> $memcache_servers_ports[] = $i;<br />}<br />$memcache_servers_ports_add[] = 11222;<br />$memcache_servers_ports_add[] = 11223;</p><p>$mem = new Memcache;<br />//add servers<br />foreach ($memcache_servers_ports as $value) {<br /> $mem->addServer($memcache_server_ip, $value);<br />}<br />//set items<br />for($i = 0; $i < 100000; $i++) {<br /> $mem->set($i, $i, 0, 3600);<br />}<br />//add 2 new servers<br />foreach ($memcache_servers_ports_add as $value) {<br /> $mem->addServer($memcache_server_ip, $value);<br />}<br />//get items<br />for($i = 0; $i < 100000; $i++) {<br /> $mem->get($i);<br />}<br />$status = $mem->getExtendedStats();<br />foreach ($status as $key=>$value) {<br /> echo $key<br /> . ' => items:'<br /> . $value['curr_items']<br /> . '<br />';<br />}<br />$mem->close();<br />?></p><p>

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.