首页 > 其他分享 >使用zookeeper实现分布式锁时的注意点

使用zookeeper实现分布式锁时的注意点

时间:2022-12-20 16:45:41浏览次数:38  
标签:getClient Zookeeper zookeeper new Watcher 锁时 根目录 分布式

一. 指定一个空的Watcher实现,可以消除控制台的错误

1 Zookeeper zk = new Zookeeper("ip:port",timeout,new Watcher(){
2    @Override
3    process(WatcherEvent watcherEvent){
4       //  留空
5     }  
6 });

二. 注意zookeeper连接的复用

class 你的类{
  // 方法一: 维护静态成员
  private static Zookeeper client=null;  
  public Zookeeper getClient(){
    if(client==null){
      client = new Zookeeper("ip:port",timeout,空的Watcher);
    }
    return client;
  }


  // 方法二: 每次新构造一个连接
  public Zookeeper getClient(){
    return new Zookeeper("ip:port",timeout,空的Watcher);
  }
}

上述原理和mybatis操作数据库一样,使用for循环每次insert一条vs使用foreach进行批量插入,节省IO,性能大幅提高,而且对于没有修改zookeeper配置的同学,不会报错

三. 注意创建逻辑

// 很多同学会遇到NoNodeFor的错误,这是因为层级必须一层一层来

public void checkRoot(){
  Stat result = getClient().exists("/你的根目录",false);
  if(result==null){
    String parent = getClient().create("/你的根目录",字节数组byte[], 权限字段Ids.open_ACL,  模式EPHEMERAL_SEQUENTIAL);
  }
}


public String getLock(){
   //先检查根目录 checkRoot(); String lock = getClient().create("/你的根目录/你的子目录",字节数组byte[], 权限字段Ids.open_ACL, 模式EPHEMERAL_SEQUENTIAL); //这样不会因为没有"/你的根目录"而导致创建失败 ....后续拿锁 }

 

标签:getClient,Zookeeper,zookeeper,new,Watcher,锁时,根目录,分布式
From: https://www.cnblogs.com/dazonglv/p/16994552.html

相关文章

  • 配置zookeeper服务器
    配置zk服务器基本配置名称作用默认clientPort客户端所连接的服务器所监听的TCP端口2181dataDir于配置内存数据库保存的模糊快照的⽬录,如果某个服务器为......
  • 分布式 | dble 沿用 jumpstringhash,移除 Mycat 一致性 hash 原因解析
    作者:爱可生开源社区背景MyCat对于字符串类型为分片字段的数据,有三种分片模式,分别是:模值hash(求模法),jumpstringhash(跳跃法),一致性hash(环割法)dble对于hash算法选取方面,除......
  • 分布式 | DBLE 之 SQL 解析
    作者:路路热爱技术、乐于分享的技术人,目前主要从事数据库相关技术的研究。数据库中间件与数据库有什么区别?个人认为除了没做数据存储,其他的功能数据库中间件几乎一样不少,比......
  • 分布式 | 从 dble 日志分析到 MySQL 源码学习
    作者:袁琳铸爱可生DBLE团队开发成员,主要负责DBLE需求开发,故障排查和社区问题解答。背景在客户的生产环境中,dble.log时常出现nohandler日志。虽然没有影响客户业务的......
  • 分布式 | DBLE 新全局表检查实现浅析
    作者:孙正方爱可生DBLE核心研发成员,拥有丰富的分布式数据库中间件开发、咨询以及调优经验,擅长数据库中间件问题排查和处理,对线上中间件部分排错有深入的实践与认知。背景......
  • 分布式 | DBLE 是如何实现视图的?
    作者:苏仕祥浩鲸科技PaaS组件团队成员,长期从事分库分表中间件的相关解决方案工作,热爱技术,乐于分享。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转......
  • 分布式id的方案
    1简介在分布式系统架构中,通常会涉及到分布式全局唯一ID的生成在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在金融、电商、支付、等产品......
  • docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例
    在上一篇,学会了3主3从的Redis集群搭建。那么接下来,我们就来学习Redis集群主从容错切换迁移案例本次案例从模拟两个场景1:数据读写存储a:一个新key数据来了,是否会按照预设......
  • 北汇信息与臻融科技达成战略合作,共同推进分布式通信技术在汽车领域的应用
      南京臻融科技有限公司(简称瑧融科技)是从事中间件研发的创新型国家高新技术企业,拥有多项具有完全自主知识产权的核心技术和中间件产品,在网络化计算、中间件平台、云边......
  • 分布式计算框架Gearman原理详解
     什么是Gearman?Gearman提供了一个通用的应用程序框架,用于将工作转移到更适合于工作的其他机器或流程。它允许你并行工作,负载平衡处理,并在语言间调用函数。它可用于从高可用......