memcache的集群 高可用

2021-07-02 07:56:12 字數 1683 閱讀 7344

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...