Java集群:单体架构升级到集群架构(四)使用REDIS分布式锁

我们还是从这张图开始:

Java集群:单体架构升级到集群架构(四)使用REDIS分布式锁_第1张图片

这张图是《Java集群:单体架构升级到集群架构(一)使用NGINX建立集群》里面使用的。如果你的代码中使用了synchronized和lock,它们在单体应用中跑得很好,但是在集群环境中就不好用了,因为它们只能锁住自己的tomcat,锁不了其他tomcat。这时候要把synchronized和lock改成分布式锁。常见的分布式锁有数据库的乐观锁悲观锁,zookeeper分布式锁,etcd分布式锁,redis分布式锁等等。我们前面已经使用redis来保存session了,所以今天我们就再使用redis分布式锁。

GitHub:  GitHub - Dengxd/JavaCluster  所有源码都在这里,GitHub经常连不上,要多刷新几次

首先在pom.xml中引入redisson:


    org.redisson
    redisson
    3.20.0

然后建立一个bean:

@Configuration
public class Configure {
    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
        // use "rediss://" for SSL connection
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");

        RedissonClient redisson = Redisson.create(config);
        return redisson;
    }
}

这样就可以使用redissonClient进行加锁操作

主要的加锁代码也很简单:

RLock lock = redissonClient.getLock("TicketLock");//建立锁
try {
    lock.lock();//锁住资源
    //在这里写您要做的工作

} catch (Exception e) {
    e.printStackTrace();
    return e.getMessage();
}finally {
    lock.unlock();//释放锁
}

是不是很简单?

要安装redis,可以参考《Java集群:单体架构升级到集群架构(二)实现session共享》

想了解redisson的朋友可以看这篇文章:

最强分布式锁工具:Redisson

网络上介绍redis和redisson的文章太多了,大家可以自己去找一找

你可能感兴趣的:(集群,java,redis,redisson,集群,分布式锁)