zoukankan      html  css  js  c++  java
  • Memcached解决单台服务器故障问题

    <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进行集群配置,不过我感觉每台服务器都要安装一个软件,各种配置比较麻烦,我的方法比较简单,自己感觉还是很实用的。

  • 相关阅读:
    php获取OS信息
    坑爹的IE quirk模式
    [转]mysql privileges
    [转]VSFTPD的设置选项
    php性能分析工具xhprof
    php扩展安装
    又是万恶的IE....6
    ASP.NET操作文件(文件夹)简单生成html操作示例
    asp.net文件操作类
    c++/clr与c#的性能比较
  • 原文地址:https://www.cnblogs.com/lewe/p/4275250.html
Copyright © 2011-2022 走看看