一、分布式部署設置:
memcached 雖然稱為 “ 分布式 ” 緩存服務器,但服務器端并沒有 “ 分布式 ” 功能。每個服務器都是完全獨立和隔離的服務。 memcached 的分布式,則是完全由客戶端程序庫實現的。 這種分布式是 memcached 的最大特點。所以部署時以相同的方式在不同服務器上安裝部署即可。
二、監控:
【資料圖】
一個簡單的命令行工具memcache-top
下載網址:
http://code.google.com/p/memcache-top/
下載之后放在/root/soft目錄下
運行命令:
perl memcache-top-v0.6 –instances=ip:端口號,ip:端口號
兩臺服務器:
perl/root/soft/memcache-top-v0.6–instances=192.168.175.100:11211,192.168.175.100:11211
運行效果如下:
daemontools: 監視memcached進程并自動啟動.
網址:
http://cr.yp.to/daemontools.html
通常情況下memcached運行得相當穩定,但也不排除因為一些不可預知的因素導致memcached進程死掉,而又不能及時的發現重啟。架構上保證了即使有幾臺memcached故障 也不會影響服務,不過對于memcached進程死掉的服務器,只要重新啟動memcached,就可以正常運行,所以采用了監視memcached進程并自動啟動的方法。于是使用了daemontools。
這里不介紹daemontools的安裝了。我使用了以下的run腳本來啟動memcached。
#!/bin/sh
exec 2>&1
exec /usr/local/bin/memcached -d -u root -m 1024 -p 11211 -c 2048 -P /tmp/memcached.pid
三、測試
服務端:
兩臺服務器,各啟動兩個進程,分配200M內存
啟動參數:
/usr/local/bin/memcached -d -m 200 -u root -p 11211
/usr/local/bin/memcached -d -m 200 -u root -p 11212
監控啟動:
perl/root/soft/memcache-top-v0.6–instances=192.168.175.100:11211,192.168.175.100:11212,192.168.175.101:11211,192.168.175.101:11212
基于spymemcached測試
1、 打開監控
2、 往memcached插入10000條數據
MemcachedClient c=new MemcachedClient(
AddrUtil.getAddresses(
“192.168.175.100:11211 192.168.175.100:11212
192.168.175.101:11211 192.168.175.101:11212″));
for(int i=0;i<10000;i++){
c.set(“key_”+i, 3600, “value_”+i);
}
插入數據之后監控畫面:
四個memcached服務都存在,讀取監控也同上圖。
取值代碼:
MemcachedClient c=new MemcachedClient(
AddrUtil.getAddresses(
“192.168.175.100:11211 192.168.175.100:11212
192.168.175.101:11211 192.168.175.101:11212″));
for(int i=0;i<10000;i++){
String key = “key_”+i;
Object obj = c.get(key);
System.out.println(key+”=”+obj);
}
3、 重啟服務101:11212,再讀取這10000個值,監控結果如下
說明某臺服務器的數據丟失之后不會影響其它服務器的數據和讀取。
4、 去掉某臺服務,再讀取這10000個值,監控結果如下
去掉服務101:11212,獲取監控如下:
增加一個新的服務,101:11213,獲取監控如下:
可見,節點的變化會影響命中率。
關鍵詞: