`
annan211
  • 浏览: 464854 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spymemcached客户端 出现节点宕机不能正常写入读出的错误

阅读更多


  spymemcached 是内存数据库memcached的的开源客户端软件,比较流行。 spymemcached 支持集群操作,但是 由于其内部机制的设计缺陷性,导致其 集群过程中 会出现一些预想之外的情况。

  spymemcached 中locator.getSequence(key)最多会提供7个备选虚拟节点。根据作者的提示知道,当集群中的某一个节点宕机之后,spymemcached不会选择其他可用机器,而是选择直接失败,当当前节点宕机之后 spymemcached会有限的选择 另一个节点,但是根据作者的提示,当前节点失败后,会有 128 分之一的 几率会选择 宕机的节点。

我们需要修改源码。
  请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1

作者的源码

 public Iterator<MemcachedNode> getSequence(String k) {
    // Seven searches gives us a 1 in 2^7 chance of hitting the
    // same dead node all of the time.
    return new KetamaIterator(k, 7, getKetamaNodes(), hashAlg);
  }*



修改之后的代码

 public Iterator<MemcachedNode> getSequence(String k) {  
	  // return new KetamaIterator(k, 7, getKetamaNodes(), hashAlg);  
	  int maxTry = config.getNodeRepetitions() + 1;    
	  if (maxTry < 20) {
			maxTry = 20;  
	  }  
	  return new KetamaIterator(k, maxTry, getKetamaNodes(), hashAlg);
	  }



其 get set delete 可能会存在由于 网络等原因造成的 操作失败。

可以适当修改其执行 方式来实现操作

 @Override
  public OperationFuture<Boolean> set(String key, int exp, Object o) {
	   OperationFuture<Boolean> result = null;
	   Object obj =  null;
	   int count = 50;
	   while(obj == null && count >0 ){
		   result = asyncStore(StoreType.set, key, exp, o, transcoder);
		   obj = get(key);
		   count --;
	   }
    return result;
  }



 @Override
  public OperationFuture<Boolean> delete(String key) {
	  OperationFuture<Boolean> result = null;
	   Object obj =  key;
	   int count = 50;
	   while(obj != null && count > 0){
		   result = delete(key, 0L);
		   obj = get(key);
		   count --;
	   }
   return result;
  }



相对于源码来说 加入了简单的重试机制。

可根据自身实际情况选择使用与否。

本文部分资料参考 http://www.udpwork.com/item/14792.html

 

分享到:
评论

相关推荐

    由重启引起的Oracle RAC节点宕机分析及追根溯源.docx

    ### 由重启引起的Oracle RAC节点宕机分析及追根溯源 #### 1. 背景介绍 本文档详细探讨了一个省级电信业务系统中,因频繁重启导致Oracle Real Application Clusters (RAC) 节点出现故障的情况。该系统在四套配置...

    WebLogic宕机大全总结

    ### WebLogic宕机问题及其解决策略 #### 一、引言 在现代企业级应用部署中,Oracle WebLogic Server作为一款高性能的企业级Java应用服务器,因其稳定性和强大的功能集受到广泛青睐。然而,在实际生产环境中,...

    43-计算节点宕机了怎么办1

    需要注意的是,虽然 Rebuild 和 Migrate 也是 OpenStack 中用于管理实例的操作,但在计算节点宕机的情况下,它们都无法执行,因为它们都需要 nova-compute 服务正常运行。 总之,Evacuate 是 OpenStack 面对计算...

    基于zookeeper集群监测服务器宕机情况,并发邮件通知

    由于项目需要,编写基于zookeeper集群监测服务器宕机...原理:服务器端向zookeeper注册,在znode节点创建文件,zookeeper心跳检测,一旦服务器宕机,znode节点的文件会删除,客户端会响应做出相应的操作,如发邮件通知。

    永不宕机的服务器

    "宕机"是指服务器因为各种原因停止服务,无法响应客户端请求,这对业务连续性和用户体验可能造成严重影响。因此,构建一个"永不宕机的服务器"体系是许多企业和组织追求的目标。 首先,我们要理解实现"永不宕机"的...

    nginx负载均衡配置,宕机自动切换方式

    更重要的是,nginx还提供了宕机自动切换的能力,这确保了在某后端服务器发生故障时,能够快速切换到健康节点继续提供服务,从而保障了服务的连续性和稳定性。 在nginx中进行负载均衡配置,一般会利用到默认安装的...

    zookeeper节点类型和java客户端创建zk节点

    - 临时节点不能有子节点,这限制了它们的使用场景,但确保了数据的一致性。 - 常用于实现如锁服务、短暂任务注册等场景。 2. **持久节点(Persistent Nodes)** - 持久节点不会因为会话结束而自动删除,除非显式...

    Oracle RAC故障节点删除步骤

    在 RAC-1 节点宕机,RAC-2 节点正常的情况下,需要在 RAC-2 节点上删除 RAC-1 节点信息。删除步骤如下: 1. 查看 RAC-2 节点数据库状态,确保一切正常。 2. 在 RAC-2 节点上,检查 pinned 状态,如果显示 unpinned...

    redis集群节点宕机 fail状态 redis的投票机制实测

    本文测试 redis集群节点宕机 fail状态以上篇博文为基础Redis集群策略及集群实例。  在Redis集群策略及集群实例中通过单机集群创建多实例(3主3从)的方式搭建了redis集群,以此为基础做实测  首先查看一下集群状态...

    zookeeper的客户端使用,图形化界面查看节点信息

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...

    java实现的opc ua 客户端/服务端的简单例子

    - **读写操作**:客户端可以读取服务端节点的数据,或者写入新的值,这涉及到OPC UA的读写服务。 - **订阅和事件处理**:客户端可以订阅服务端的特定节点,实时接收数据变化的通知。 2. **服务端实现**: - **...

    Sybase数据库宕机处理步骤

    如果在系统进程中找不到Sybase的相关进程,那么可以判断数据库已经宕机。 接下来,我们要关注高可用性(HA)集群的状态。通过`lsvg –o`命令可以查看活动的卷组(VG),特别是datavg状态,以确定HA集群是否正常运行。...

    spymemcached-2.10.3

    同时,它支持自动故障恢复,当某个服务器节点宕机时,可以自动切换到其他正常运行的节点。 - **并发控制**:通过使用非阻塞I/O模型,Spymemcached实现了高并发性能,降低了线程上下文切换的开销。 - **操作类型**...

    opc ua客户端,opcua客户端界面,C#

    客户端需要知道如何查找、读取和写入这些节点。 3. **安全配置**:OPC UA支持多种安全模式,包括TLS/SSL加密、用户名/密码认证、X.509证书等。客户端需要配置正确的安全设置才能安全地连接到服务器。 4. **建立...

    FastDFS错误

    **错误描述**:该错误通常出现在FastDFS客户端向Tracker请求数据时,如果Tracker未能找到可用的Storage节点,则会返回此错误码。 **解决办法**: 1. **检查Storage服务是否已启动**:使用`ps -ef | grep fdfs_...

    canOpen协议读字典、写字典、改变节点状态、请求节点状态-主机.zip

    3. 初始化CANOpen节点:配置NMT(Network Management Terminal)节点状态机、SDO(Service Data Object)服务器和PDO(Process Data Object)映射。 4. 对象字典管理:创建和配置对象字典,用于存储节点的参数和数据...

    ansys apdl 批量提取节点位移并写入TXT文件的方法

    在使用ansys进行分析后,需要批量提取某些节点的位移数据,可以将这些节点写到txt文件中,然后通过编写循环来提取某时间段内的位移数据。同样原理可以扩展到提取杆件应力等问题,但是循环提取的过程是比较慢的,如果...

    memcached客户端(三种客户端)

    在Java开发中,有三种主流的Memcached客户端库供开发者选择:官方的基于传统阻塞IO的客户端、Dustin Sallings实现的基于Java NIO的Spymemcached以及XMemcached。 1. **官方客户端** 官方提供的客户端是由Greg ...

    项目是基于xmpp的android客户端,实现与物联网节点的交互.zip

    本项目是基于XMPP的物联网客户端软件的实现,其实现的主要功能是一款能和物联网节点交互的即时通讯软件。目前支持九类传感器节点交互,主要有:温湿度、风扇、直流电机、LED灯、步进电机、门磁、光电接近、烟雾和...

    OPC客户端仍然无法找到服务器的解决方法

    此外,该解决方案也适用于其他类似的场景,即当OPC客户端与服务器之间的通信出现问题时,首先检查是否所有的必要DLL文件都已被正确注册。 综上所述,正确地识别问题所在,并采取适当的措施来解决问题是非常重要的。...

Global site tag (gtag.js) - Google Analytics