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进行集群配置,不过我感觉每台服务器都要安装一个软件,各种配置比较麻烦,我的方法比较简单,自己感觉还是很实用的。
Memcached解决单台服务器故障问题的更多相关文章
- [转载]利用memcached在多台服务器之间共享PHP的session数据
原文地址:利用memcached在多台服务器之间共享PHP的session数据作者:a1049709658 最近我的几篇文章都是是最近项目的一点心得^^ 这个项目一开始就设计的"很大&quo ...
- 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken
前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...
- cobbler单台服务器实现批量自动化安装不同版本系统-技术流ken
前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...
- 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少
高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少 阅读(81374) | 评论(9)收藏16 淘帖1 赞3 JackJiang Lv.9 1 年前 | 前言 曾几何时我 ...
- 【 Linux 】单台服务器上并发TCP连接数
单台服务器上并发TCP连接数 问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制: 对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...
- 【 Linux 】单台服务器上并发TCP连接数(转)
单台服务器上并发TCP连接数 问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制: 对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...
- 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少
曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了.我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来 ...
- 单台服务器最大tcp连接
如果对服务器进行压力测试,常常出现这种情况 tcp连接数过多 netstat -an windows查看tcp连接数 那么怎么增加单台服务器的最大连接数呢? 最简单的办法,增加内 ...
- ElasticSearch 5学习(3)——单台服务器部署多个节点
一般情况下单台服务器只会部署一个ElasticSearch node,但是在学习过程中,很多情况下会需要实现ElasticSearch的分布式效果,所以需要启动多个节点,但是学习开发环境(不想开多个虚 ...
随机推荐
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class POJ_1220_ ...
- 黑客破译android开发代码真就那么简单?
很多程序员辛辛苦苦开发出的android开发代码,很容易就被黑客翻译了. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了 ...
- socket 怎么设置心跳判断连接
server的代码public abstract class Server { static readonly ILog logger = LogManager.GetLogger(typeof(Se ...
- C语言待研究问题
1.内存分配 变量的静态分配和静态变量的区别: 变量的静态分配和动态分配 2.堆和栈的区别 3.CPU的并发性 4.变量和参数的区别
- 在Linux最大打开文件数限制下 MySQL 对参数的调整
http://www.actionsky.com/docs/archives/78 2016年4月7日 周文雅 目录 1 起因 2 说明 3 MySQL调整参数的方式 3.1 计算 request ...
- leetcode二分查找问题整理
自从做完leetcode上的三道关于二分查找的题后,我觉得它是比链表找环还恶心的题,首先能写出bugfree代码的人就不多,而且可以有各种变形,适合面试的时候不断挑战面试者,一个程序猿写代码解决问题的 ...
- 基于Linux的集群系统(八)--转
引用位置:http://www.ibm.com/developerworks/cn/linux/cluster/linux_cluster/part8/index.html OSI参考模型及TCP/I ...
- 编译Debian内核源码
参考: <鸟哥的Linux私房菜>第26章 http://hi.baidu.com/wg_wang/item/f9375c2f00ca75c0ee10f1db http://www.lin ...
- tachyon 本地模式安装
本地模式不用考虑hadoop的版本,所以直接下载 binary 包或者自己编译 1.配置主机名.JDK.关闭防火墙.关闭Selinux.配置hosts ... ... 2.设置本机SSH免密码登陆 . ...
- Boost.Foreach
BOOST_FOREACH简化了C++的循环遍历序列元素. 支持的序列类型:Boost.Range识别的序列 STL容器 数组 Null-terminated String std::pair of ...