memcached(七)failure模式和standby节点

关于failure模式,可以看下memcached官方文档的解释https://code.google.com/p/memcached/wiki/NewConfiguringClient#Failure,_or_Failover

展开来说,在某个memcached节点挂掉或者由于其他故障连接断开的时候,大部分客户端的默认策略都是failover的,也就是会查找下一个可用的memcached节点继续使用,挂掉或者连接不上的节点的数据会转移到其他节点上,路由的策略可以是Round Robin,也可以是一致性哈希。这样的模式在节点意外故障挂掉的情况下运行的很好,但是memached节点也完全可能因为一个意外的事故而短暂挂掉,比如你不小心弄掉了网线又马上接上去,比如机房交换机突然停电又立即恢复了,假设在故障前,用户A正要更新数据到节点A,节点A意外断开,那么这些数 据就更新到下一个有效节点B,但是节点A又马上恢复,这时候用户又从节点A去读数据,读到却是更新前的老数据了(新数据更新到B节点去了),这种情况对用 户来说就非常困惑,你告诉我更新成功,但是看到却还是更新前的数据。

怎么解决呢?一个简单的方案就是所谓failure模式,当某个节点挂掉的时候,不会从节点列表移除,请求也不会转移到下一个有效节点,而是直接将请求置 为失败,就刚才的场景来说,在用户更新数据到节点A的时候,节点A意外断开,那么用户的这次更新请求不会转移到节点B,而是直接告诉用户更新失败,用户再 次查询数据则绕过节点A直接查询后端存储。这种模式很适合这种节点短暂不可用的状况,请求会穿透缓存到后端,但是避免了新旧数据的问题。

Xmemcached支持failure模式,只要你设置下failureMode为true即可,简单示例:

Java代码

XMemcachedClientBuilder builder =……
    //设置使用failure模式
builder.setFailureMode(true);

在此模式下,某个节点挂掉的情况下,往这个节点的请求都将直接抛出MemcachedException的异常。

不仅如此,xmemcached还将引入standby node的概念,你可以设置某个memached节点的备份节点,当这个节点挂掉的时候会将请求转发给这个备份节点,不会简单地抛出异常,也不会转发给其 他节点。要使用standby node,必须首先设置使用failure mode,一个例子:

Java代码

XMemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil
                .getAddressMap("192.168.1.99:11211,192.168.1.100:11211 192.168.1.101:11211,192.168.1.102:11211"));
builder.setFailureMode(true);

可以看到,新的服务器字符串格式变化为host:port,host:port host:port,host:port的格式,以空格隔开的是两个节点组成的一个分组,以逗号隔开的是主节点和备份节点,以上面的例子来说,我们设置客 户端使用的节点是192.168.1.99和192.168.1.101,其中99对应的备份节点是100,而101的备份节点是102。并且我们需要设 置使用failure mode为true。

Failure mode加上standby节点可以比较好的解决新旧数据的问题,并且也可以防止请求穿透缓存到DB,但是主备两个节点之间的数据同步,xmemcached不准备帮你做,我的建议是可以使用repcached这个patch做复制。

有的朋友可能希望,在使用备份节点之前先flush掉备份节点的数据,防止使用到老的数据,请求还是可以穿透缓存去DB查找,并存储到备份节点,我仔细考 虑了这个方案,衡量之下还是不准备做自动flush,主要是并发上很难处理,并且flush数据这个事情可以手工来搞,根据我的经验,做的太透明太自动不 一定是好事。你可以在主节点恢复之后,手工flush下备份节点的数据。

出自iteye,作者:85977328

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/tools/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 备份
, 更新
, 节点
, 数据库节点
, memache集群的问题
, 模式
, 挂掉
, repcached
, failure
下一个节点
standby模式、active standby 模式、stm32 standby模式、app standby模式、oracle standby 模式,以便于您获取更多的相关知识。

时间: 2024-08-10 18:50:53

memcached(七)failure模式和standby节点的相关文章

Xmemcached 1.3预览:failure模式和standby节点

    Xmemcached在元旦左右准备发1.3这个版本,这个版本新增加的一个关键特性就是所谓的failure模式.关于这个,可以看下memcached官方文档的解释<Failure,or Failover>.     展开来说,在某个memcached节点挂掉或者由于其他故障连接断开的时候,大部分客户端的默认策略都是failover的,也就是会查找下一个可用的memcached节点继续使用,挂掉或者连接不上的节点的数据会转移到其他节点上,路由的策略可以是Round Robin,也可以是一致

建造者模式_动力节点Java学院整理

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 类型:创建类模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.在本类图中,产品类是一个具体的类,而非抽象类.实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成. 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现.这样更容易扩展.一般至少会有两个抽象方法,一个用来建造产品,一个是用来

Xmemcached 1.3.0正式发布

  Xmemcached是一个开源的memcached的Java客户端,最近引入了一些关键特性,因此版本号直接从1.2.6.2升级到1.3.0.主要的更改如下: 1.引入了failure模式,所谓failure模式是指在当一个memcached由于各种原因不可用的情况下,发往这个节点的请求将直接抛出异常,而非使用下一个可用的节点.具体可以看memached的这个文档.默认不启用,启用failure模式很简单: MemcachedClientBuilder builder=--//启用failur

七种网卡绑定模式详解

概览: 目前网卡绑定mode共有七种(0~6)bond0.bond1.bond2.bond3.bond4.bond5.bond6   常用的有三种: mode=0:平衡负载模式,有自动备援,但需要"Switch"支援及设定. mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援. mode=6:平衡负载模式,有自动备援,不必"Switch"支援及设定.   说明:     需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里optionsbond

Greenplum 添加或删除standby master节点

Greenplum支持master节点的standby,如果你在初始化集群时没有创建standby节点,或者原来的standby节点坏了或者其他原因,要重搭standby. 本文将告诉你怎么做. 1. 如果要新建standby,但是原来已有standby,首先要删除它. gpinitstandby -r 如果原来的standby只是某种原因挂了,不需要删除,只需要重启,则使用以下命令来重启standby gpinitstandby -n 2. 如果搭建standby的机器不在原来的GP集群中,则

智慧城市建设七种商业模式与未来三大判断

智慧城市建设的七种商业模式 国家十三五规划建议中提出"加快新型智慧城市建设",国家发改委提出"要推进城市绿色发展,推进智慧城市发展,开展100个新型智慧城市建设."并提出了几条要求:为民服务全程全时.城市治理高效有序.数据开放共融共享.经济发展绿色开源.网络空间安全清朗. 政府部门提出智慧城市发展目标的意愿是好的,但是一个事业如果找不到好的商业模式是很难持续的.从2010年上海世博会开始,宁波率先提出智慧城市以来,在这6年时间,我们探索智慧城市的发展模式,主要是以下

PostgreSQL HOT STANDBY using Stream replication

案例解析二.PostgreSQL HOT STANDBY by stream replication 测试:一.准备硬件1. 主节点硬件配置DISK : 146GB*6MEM : 14GBCPU : 2.83GHz*82. standby节点硬件配置DISK : 146GB*4MEM : 8GBCPU : 2.0GHz*8 二.准备环境1. 系统Red Hat Enterprise Linux Server release 5.5 (Tikanga) x642. 时钟同步8 * * * * /u

高可用之4——Data Guard 配置Standby Redo Log

转载:http://blog.itpub.net/35489/viewspace-672422 Data Guard在最大保护和最高可用性模式下,Standby数据库必须配置standby redo log,通过下面的实 验展示创建的原则和过程. 1.原则 1).standby redo log的文件大小与primary 数据库online redo log 文件大小相同 2).standby redo log日志文件组的个数依照下面的原则进行计算    Standby redo log组数公式

【转载】四层和七层负载均衡的区别

简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址:三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址:四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器:七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器. ②所谓的四到七层负载均衡,就是在对后台