magent——memcached緩存代理服務器


memcached分布式緩存

我們使用PHP連接多台memcached服務器,做分布式緩存,實現如下:

$memcache = new Memcache;
$memcache->addServer('192.168.252.134', 11211);
$memcache->addServer('192.168.252.134', 11212);
$memcache->addServer('192.168.252.134', 11213);
for ($i = 0; $i < 1000; $i++)
{
    $memcache->set($i, $i, 0, 1000);
}

這樣的實現是最直接、簡單的,PHP應用直接連接memcached服務器。但也存在一個問題,就是可用性的問題,如果,有一台memcached 服務器宕機了,那么該服務器上的數據就丟失了,可能有人會認為,memcached本來就是做緩存的,緩存丟失就丟了唄,沒什么大驚小怪的。其實不然滴, 緩存的命中率也是影響系統穩定性和高可用的一個指標嘛,難道每次丟了緩存,我們就那么心寬的“去數據庫找數據就好咯”,這樣緩存還有意義嗎。

magent——memcached緩存代理服務器

針對上面的問題,可以使用magent緩存代理服務器來管理memcached服務器,PHP應用由直接和多台memcached交互轉變成和magent交互。那么,magent都幫我們做了什么呢?

我們先上個圖看看

可以看出,magent作為memcached集群的代理,還可以做備份(192.168.252.134:11213為備份服務器),主緩存服務 器(192.168.252.134:11211、192.168.252.134:11212)宕機后,應用依舊可以用從備份服務器上讀取到緩存。

搭建magent緩存代理服務器

magent依賴libevent庫

magent依賴libevent庫

magent依賴libevent庫

重要的話說三遍!!

1)編譯安裝magent

cd /home
mkdir ./magent
cd ./magent
wget -c https://memagent.googlecode.com/files/magent-0.5.tar.gz    // 谷歌被牆了,如有需要可以評論留郵箱
tar xzvf ./magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp ./magent /usr/bin/magent

編譯過程會遇到很多問題,參照這網址自行解決

2)memcached的搭建略過

3)啟動memcached和magent

magent -u root -l 192.168.252.134 -p 11210 -s 192.168.252.134:11211 -s 192.168.252.134:11212 -b 192.168.252.134:11213

4)運行測試腳本

<?php
$host = '192.168.252.134';
$port = '11210';
$mem = memcache_connect($host, $port);

$key1 = 'mctest1';
$value1 = '1';
$mem->add($key1, $value1);

$key2 = 'mctest2';
$value2 = '2';
$mem->add($key2, $value2);

$key3 = 'mctest3';
$value3 = '3';
$mem->add($key3, $value3);

$key4 = 'mctest4';
$value4 = '4';
$mem->add($key4, $value4);

$key5 = 'mctest5';
$value5 = '5';
$mem->add($key5, $value5);

$key6 = 'mctest6';
$value6 = '6';
$mem->add($key6, $value6);

服務器192.168.252.134:11211

服務器192.168.252.134:11212

服務器192.168.252.134:11213

主服務器上的數據都會備份到備份服務器上,如果主服務器宕機了,應用依舊可以從備份服務器上取數據。

更多的部署圖

本文鏈接:http://www.hcoding.com/?p=316

原創文章,轉載請注明:JC&hcoding.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM