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

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

Memcached解决单台服务器故障问题的更多相关文章

  1. &lbrack;转载&rsqb;利用memcached在多台服务器之间共享PHP的session数据

    原文地址:利用memcached在多台服务器之间共享PHP的session数据作者:a1049709658 最近我的几篇文章都是是最近项目的一点心得^^ 这个项目一开始就设计的"很大&quo ...

  2. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3&lowbar;day5&lowbar;part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  3. cobbler单台服务器实现批量自动化安装不同版本系统-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  4. 高性能网络编程&lpar;一&rpar;:单台服务器并发TCP连接数到底可以有多少

    高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少     阅读(81374) | 评论(9)收藏16 淘帖1 赞3   JackJiang Lv.9    1 年前 | 前言 曾几何时我 ...

  5. 【 Linux 】单台服务器上并发TCP连接数

    单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...

  6. 【 Linux 】单台服务器上并发TCP连接数&lpar;转)

    单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...

  7. 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

    曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了.我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来 ...

  8. 单台服务器最大tcp连接

    如果对服务器进行压力测试,常常出现这种情况 tcp连接数过多 netstat   -an    windows查看tcp连接数 那么怎么增加单台服务器的最大连接数呢?       最简单的办法,增加内 ...

  9. ElasticSearch 5学习&lpar;3&rpar;——单台服务器部署多个节点

    一般情况下单台服务器只会部署一个ElasticSearch node,但是在学习过程中,很多情况下会需要实现ElasticSearch的分布式效果,所以需要启动多个节点,但是学习开发环境(不想开多个虚 ...

随机推荐

  1. ppt 数组课后作业

    任务要求:随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路:建一个数组,在for语句中将随机数存入数组中,然后每生成一个数就进行相加, ...

  2. 判断是否是有效的IPV4地址

    参考链接: https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113 http://www.cnblogs.com/txw19 ...

  3. Android Programming&colon; Pushing the Limits -- Chapter 7&colon;Android IPC -- AIDL

    服务端: 最终项目结构: 这个项目中,我们将用到自定义类CustomData作为服务端与客户端传递的数据. Step 1:创建CustomData类 package com.ldb.android.e ...

  4. php学习记录 易混淆

    1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以 ...

  5. java中vector与hashtable操作详解

    众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题 ...

  6. ios专题 - GCD(2)

    何为Dispatch Sources 简单来说,dispatch source是一个监视某些类型事件的对象.当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中. ...

  7. centos7 install mysql

    1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-co ...

  8. 移动商城第四篇【Controller配置、添加品牌之文件上传和数据校验】

    Controller层配置 编写SpringMVC的配置文件 springmvc.xml <?xml version="1.0" encoding="UTF-8&q ...

  9. WARN&colon; Establishing SSL connection

    在我们使用连接MySQL数据库时会出现这样的提示: Tue Aug 29 13:24:29 CST 2017 WARN: Establishing SSL connection without ser ...

  10. CentOS7中Docker-ce的卸载和安装

    一.查看是否已安装了Docker软件包: #查看是否已经安装的Docker软件包sudo yum list installed | grep docker 二.如果已安装不想要的docker/dock ...