Memcached解决单台服务器故障问题_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Memcached解决单台服务器故障问题

Memcached解决单台服务器故障问题

 2015/2/5 17:40:09  老笨孩  程序员俱乐部  我要评论(0)
  • 摘要:<beitmemcached><addkey="name1"value="server1:port"/><addkey="name2"value="server1:port,server2:port,server3:port"/></beitmemcached>我使用的客户端是BeITMemcached,配置文件可以有两种方式,如上面代码,有单台配置和多台配置问题:在用单台服务器配置时,如果这台memecache服务器挂掉的话
  • 标签:解决 问题 服务器 服务
<beitmemcached>
    <add key="name1" value="server1:port" />
    <add key="name2" value="server1:port,server2:port,server3:port"/>
</beitmemcached>

我使用的客户端是BeITMemcached,配置文件可以有两种方式,如上面代码,有单台配置和多台配置

 

问题:

    在用单台服务器配置时,如果这台memecache服务器挂掉的话,那么客户端这边该缓存节点就使用不了了,影响程序的运行

    在用多台配置时,如果其中一台挂掉,你存入缓存的时候,客户端会根据你缓存的key值,用一致性hash算法来选择存入哪台缓存服务器,如果你运气不好,正好存到了那台有问题的服务器上,对不起,写入失败。

 

解决方案:

    使用多台配置方案,修改客户端源代码,如果其中一台服务器挂掉,在缓存操作失败的时候,将该有问题的缓存服务器剔除客户端集合,比如有A,B,C三台memcache服务,如果B挂了,在操作缓存的时候,会有异常,这时候将B从该序列中剔除,只使用A,C来进行操作;

    设定一个检测间隔时间,每次操作缓存时,在间隔时间之后,都会检测有问题的服务器,如果服务器恢复正常,则将其重新加入缓存服务器集合中。

 

使用方法

public MemcachedClient GetClient()
        {
            var mc = MemcachedClient.GetInstance("name2", true);
            return mc;
        }

 

只要在获取客户端实例的时候,多加一个true参数就可以了

 

下载地址:http://pan.baidu.com/s/1eQtOO6Y

其他解决办法:

可以使用memagent来对memcache进行集群配置,不过我感觉每台服务器都要安装一个软件,各种配置比较麻烦,我的方法比较简单,自己感觉还是很实用的。

上一篇: Swift 设置navigationbar属性相关 下一篇: 没有下一篇了!
发表评论
用户名: 匿名