前言 我在上一篇文章聊了Redisson的可重入锁,这次继续来聊聊Redisson的公平锁。下面是官方原话: 它保证了当多个Redisson客户端线程同时请求加锁时,优先分配给先发出请求的线程。所有请求线程会在一个队列中排队,当某个线程出现宕机时,Redisson会等待5秒后继续下一个线程,也就是说如果前面有5个线程都处于等待状态,那么后面的线程会等待至少25秒。 源码版本:3.17.7 这是我 fork 的分支,添加了自己理解的中文注释:https://github.com/xiaoguyu/redisson 公…

2022年11月8日 0条评论 81点热度 0人点赞 王谷雨 阅读全文

前言 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。Redisson有一样功能是可重入的分布式锁。本文来讨论一下这个功能的特点以及源码分析。 前置知识 在讲Redisson,咱们先来聊聊分布式锁的特点以及Redis的发布/订阅机制,磨刀不误砍柴工。 分布式锁的思考 首先思考下,如果我们自己去实现一个分布式锁,这个锁需要具备哪些功能? 互斥(这是一个锁最基本的功能) 锁失效机制(也就是可以设置锁定时长,防止死锁) 高性能、高可用 阻塞、非阻塞 可重入…

2022年11月7日 0条评论 170点热度 0人点赞 王谷雨 阅读全文

前置条件 先了解Sharding-jdbc、Seata、Nacos这三样东西各自的作用以及单独使用时的配置。 整合代码已放在github,详细步骤章节请搭配此项目看,欢迎start 思路 如果已经做过Seata + Nacos的整合的,直接看最后的Seata结合Sharding-jdbc章节 详细步骤 Nacos + Seata服务端整合 我之前写过,不再赘述,引流:****Seata-初体验以及避坑**** 项目工程整合Seata 参考文档:seata-example nacos服务端新增配置seata.prop…

2022年7月8日 3条评论 325点热度 1人点赞 王谷雨 阅读全文

简介 sharding-jdbc案例,版本5.1.2 springboot + mybatis-plus + sharding-jdbc 项目地址:sharding-jdbc-example 模块说明 read-write 简单的读写分离 db-sharding 简单的不同表在不同库配置 tb_order表使用sharding-jdbc的雪花算法生成id tb_storage表使用mybatis-plus生成uuid db-read-write-sharding 不同表在不同库配置 + 静态读写分离 table-s…

2022年7月7日 0条评论 144点热度 0人点赞 王谷雨 阅读全文