1. 概述

在JPAAS平台中,有些情况下需要使用分布式锁,将资源锁定,在执行业务操作,比如流水号这种情况,必须保证同一个时刻,只有一个请求可以进入。

2. 平台使用分布式锁的方法

@Resource
RedisLockRegistry redisLockRegistry;

public String genSeqNo(String alias)  {
        String key=LOCK_KEY_SYSSQLID +alias;
        Lock lock = redisLockRegistry.obtain(key);
        boolean rtn=false;
        try{
            rtn= lock.tryLock(5, TimeUnit.SECONDS);
            //业务操作

            return "-1";
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        } finally {
            if(rtn){
                lock.unlock();
            }
        }
    }

这里有个小技巧,我们对每一个流水号,产生锁,而不是对所有的流水号获取锁,这样增加了锁的并发度。

文档更新时间: 2021-11-02 16:18   作者:zyg