一个好用的分布式锁框架

DistributeLock是一个支持快速切换的分布式锁项目,兼容ZK和Redis实现,提供注解和代码方式获取锁,确保资源互斥访问。支持Spring和SpringBoot,可一键开关,易于集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

一个非常好用的分布式锁项目,支持ZK和Redis分布式锁实现,可以使用注解和代码的方式获取分布式锁,保证资源的互斥访问。

支持功能:

  • Redis分布式锁实现
  • ZK分布式锁实现
  • 自定义实现
  • 一键开关分布式锁功能
  • 支持Spring
  • 支持SpringBoot

背景

在分布式项目中,有时需要使用分布式锁对资源进行唯一的访问,项目中常用的实现方案如Redis和ZK,如果直接使用,对项目侵入性大,
如果换种实现则需要付出较大的代价。

既然如此,就需要一个可以迅速切换的无侵入或改造成本低的分布式锁实现方案,而且可以一键关闭,DistributeLock就这样孕育而生了。

如何使用

由于此项目还未发布到maven仓库,需要将代码pull后导入自己的maven库。

第一步:引入pom

       <dependency>
                <groupId>com.cml.component</groupId>
                <artifactId>distribute-lock-starter</artifactId>
                <version>${lastVersion}</version>
            </dependency>

第二步:配置分布式锁的实现方案

  • redis实现

        distribute:
          lock:
            enable: true
            type: redis
            redis:
              enable: true
              timeout: 1000 #redis连接超时时间
              retryCount: 1 # 失败重试次数
              retryInterval: 1000 # 失败重试间隔时间
              masterName: #redis配置为主从时配置
              password:
              nodes:
                - "redis://192.168.99.100:6379" 
              type: single # 可选single,sentinel,master-slave
    
  • ZK实现

    distribute:
      lock:
        enable: true
        type: zk
        zk:
          connTimeout: 15000
          retryCount: 2
          retryInterval: 500
          connectUrl: "192.168.99.100:2181"
    
  • 自定义实现

    distribute:
      lock:
        enable: true
        type: custom
        
     自定义只需继承AbstractDefaultDistributeLockService即可,可参考:RedisDistributeLockService实现
    

第三步:在需要分布式锁的方法上添加注解:

    @DistributeLock(category = "lockService", key = "#arg0")

注解说明:

  • category: 锁的分类,通过不同的分类可以最大程度上避免了锁重复的问题
  • key: 分布式锁key,支持从方法参数中获取

第四步(可选):监听锁的获取与释放

   只需要实现接口:DistributeLockListener 即可,详见distribute-lock-sample中的单元测试

项目依赖关系

在这里插入图片描述
非常简洁的项目依赖,代码量非常小,使用非常方便。

项目地址:
https://github.com/cmlbeliever/distribute-lock 欢迎使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值