memcache的故障转移是指什么?

应用环境:Memcache集群。
需求:如果集群中的一台MC宕掉,程序自动选择其他的缓存节点或者直接请求后端重新在新的节点生成缓存。

测试步骤:
本机打开2个端口为MC提供服务:127.0.0.1:11212,127.0.0.1:11213,127.0.0.1:11214

  
$mc = new Memcache();
$mc->addServer('127.0.0.1', 11212);
$mc->addServer('127.0.0.1', 11213);
$mc->addServer('127.0.0.1', 11214);
$mc->set("test1", 'ok1'); //假设test1被分配到11212
$mc->set("test2", 'ok2'); //假设test2被分配到11213
$mc->set("test3", 'ok3'); //假设test3被分配到11214

11214端口的MC服务宕掉后测试:

  
$mc = new Memcache();
$mc->addServer('127.0.0.1', 11212);
$mc->addServer('127.0.0.1', 11213);
$mc->addServer('127.0.0.1', 11214);
echo $mc->get("test1");
echo $mc->get("test2");
echo $mc->get("test3"); //报错Notice:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 (10060)
评论 (3)链接2012-02-27 
  • 0 支持
    Notice偶尔会出现,应该连接被mc的连接池缓存住了,缓存住的时候不会报连接错误,而直接返回false。 – soooldier 2012-02-27
  • 0 支持
    同一个值也会偶尔出现Notice吗? – 小飞 2012-02-27
  • 0 支持
    对,这应该跟取哪个值没太大关系,只要算法命中到11214这台机器就行,主要是因为11214这台mc宕掉了,所以连接报错。 – soooldier 2012-02-27

你这个是pecl的吧,2.0以后支持failover,去读manual吧。

大概格式是这样的吧

addserver(127.0.0.1, 11211, true, 10, 1, -1, false);

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-02-29
德问是一个专业的编程问答社区,请 登录注册 后再提交答案