1 Star 0 Fork 0

微风至夏 / zk-lock-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

介绍

基于zk手写一个分布式锁,使用起来简单方便。

包介绍

lsj-zk-lock:核心实现。

lsj-zk-lock-spring-boot-starter:整合springboot

lsj-zk-lock-test:使用demo

安装教程

  1. 拉取代码,将lsj-zk-locklsj-zk-lock-spring-boot-starter通过 mvn install 命令安装到本地仓库。
  2. 引入依赖:
<dependency>
    <groupId>cn.lsj</groupId>
    <artifactId>lsj-zk-lock-spring-boot-starter</artifactId>
    <version>2.4.2</version>
</dependency>

使用方式

  • 配置locks和dataSource:
spring:
  zk:
    dataSource:
      url: "localhost"
      port: 2181
    locks:
      - zkPath: "/test/lock"
        lockName: "countLock"
        # 获取锁失败时,进入等待的时间,等待结束将重新尝试获取锁
        timeout: 5000
      - zkPath: "/test2/lock"
        lockName: "lock"
        timeout: 5000
  • 使用方式1:通过@GlobalLock注解,指定要使用那个lock
@GetMapping("test2")
@GlobalLock("countLock")
public String test2() {
    // 业务代码
    return "";
}
  • 使用方式2:通过@Qualifier注解,指定要使用那个lock
@RestController
public class TestController {
    
    int count = 0;

    @Resource
    @Qualifier("lock")
    private ReentrantLock lock;

    @Resource
    @Qualifier("countLock")
    private ReentrantLock countLock;
    
    
    @GetMapping("test")
    public String test() {
        countLock.lock();
        try{
            for (int i = 0; i < 10000; i++) {
                count++;
            }
        } finally {
            countLock.unlock();
        }
        return String.valueOf(count);
    }
}

空文件

简介

基于zk手写一个简单锁。 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/liangshij/zk-lock-demo.git
git@gitee.com:liangshij/zk-lock-demo.git
liangshij
zk-lock-demo
zk-lock-demo
master

搜索帮助