error
搭建magent**伺服器:
#編譯安裝magent:
cd /usr/local/
mkdir ./magent
cd ./magent
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
./magent -u root -n 51200 -l 192.168.1.197 -p 12000 -s 192.168.1.193:11211 -s 192.168.1.193:11212 -b 192.168.1.197:11211
測試快取資料的分布情況:
$memcache = new memcache;
$memcache->addserver('localhost', 11211);
$memcache->addserver('localhost', 11212);
$memcache->addserver('localhost', 11213);
for ($i = 0; $i < 1000; $i++)
利用magent**伺服器來驗證
$mem = new \memcache();
$host = '192.168.1.128';
$port = '12000';
$mem->connect($host, $port);
$key1 = 'snsgou1';
$value1 = '12';
$mem->set($key1, $value1);
$key2 = 'snsgou2';
$value2 = '22';
$mem->set($key2, $value2);
$key3 = 'snsgou3';
$value3 = '32';
$mem->set($key3, $value3);
$key4 = 'snsgou4';
$value4 = '42';
$mem->set($key4, $value4);
echo $mem->get("snsgou1");
echo $mem->get("snsgou2");
echo $mem->get("snsgou3");
echo $mem->get("snsgou4");
說明:1、php連線magent,把快取key1交給magent,magent根據自身的配置引數,再加上一定的雜湊演算法,會計算出key1存在3台主memcached伺服器的某一台上,然後以同樣的演算法,將key1也在2臺備用的memcached伺服器中的某一台上,再存乙份資料。即,主伺服器是分布式儲存的,同時,從伺服器也是分布式儲存的;
2、在php獲取快取資料key1時,magent一旦得知資料所存的那台主memcached伺服器掛掉了,它就會轉向從備用的memcached伺服器中獲取資料。注意:伺服器的定位選擇演算法跟存的時候是一樣的。
3、有個缺陷,當 down 掉的那台主memcached伺服器重新恢復正常後,memcahed裡是沒有資料的,即資料全部丟失,但此時 備用的memcached伺服器 又不會將資料同步到 主伺服器。
Memcache 分布式高可用集群介紹
分布式快取出於如下考慮,首先是快取本身的水平線性擴充套件問題,其次是快取大併發下的本身的效能問題,再次避免快取的單點故障問題 多副本和副本一致性 分布式快取的核心技術包括首先是記憶體本身的管理問題,包括了記憶體的分配,管理和 機制。其次是分布式管理和分布式演算法,其次是快取鍵值管理和路由。一 常用分...
Memcache 分布式高可用集群介紹
分布式快取需考慮如下三點 1 快取本身的水平線性擴充套件的問題。2 快取大病罰下的本身效能問題。3 避免快取的單點鼓掌問題。分布式快取存在的問題 1 記憶體本身的管理問題。記憶體的分配,管理和 機制。2 分布式管理和分布式演算法。3 快取鍵值管理和路由。memcached在實現分布集群部署時,mem...
Memcache 分布式高可用集群介紹
分布式快取需考慮如下三點 1 快取本身的水平線性擴充套件的問題。2 快取大病罰下的本身效能問題。3 避免快取的單點鼓掌問題。分布式快取存在的問題 1 記憶體本身的管理問題。記憶體的分配,管理和 機制。2 分布式管理和分布式演算法。3 快取鍵值管理和路由。memcached在實現分布集群部署時,mem...