苞米豆-lock4j 2.1.0 重磅更新,多种分布式锁同时支持
简介
lock4j-spring-boot-starter是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。
立志打造一个简单但富有内涵的分布式锁组件。
2.1.0
- feat: 新增Lock4jProperties支持全局配置锁过期、获取锁超时时间、默认锁执行器等
- update: 修改Lock4j注解里的lockClient参数名为executor
- update: 新增锁执行器支持自定义扩展,支持方法级别配置executor
- update: 修改锁执行器为单例
- remove: 移除Lock4j注解里的lockType参数
- remove: 移除Lock4j注解里的keyBuilder参数(扩展keyBuilder需要自行实现LockKeyBuilder接口并声明为spring bean)
- fix: 修复lockExecutor没有引入相关class的情况下抛class no found
- feat: 新增不指定executor前提下,默认优先级redisson>redisTemplate>zookeeper
- remove: 移除Lock4j注解里的LockFailureStrategy参数(自定义lock失败处理需要自行实现LockFailureStrategy接口并声明为spring bean)
- feat: 支持声明式@Lock4j、编程式@Autowired LockTemplate
特性
- 简单易用,功能强大,扩展性强。
- 支持redission,redisTemplate,zookeeper。可混用,支持扩展。
如何使用
- 引入相关依赖。
<dependency> <groupId>com.baomidou</groupId> <artifactId>lock4j-spring-boot-starter</artifactId> <version>${version}</version> </dependency> <!--若使用redisTemplate作为分布式锁底层,则需要引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--若使用redisson作为分布式锁底层,则需要引入--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.13.6</version> </dependency> <!--若使用zookeeper作为分布式锁底层,则需要引入--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency>
- 根据底层需要配置redis或zookeeper。
spring: redis: host: 127.0.0.1 ... coordinate: zookeeper: zkServers: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
- 在需要分布式的地方使用Lock4j注解。
@Service public class DemoService { //默认获取锁超时3秒,30秒锁过期 @Lock4j public void simple() { //do something } //完全配置,支持spel @Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000) public User customMethod(User user) { return user; } }
高级使用
- 配置全局默认的获取锁超时时间和锁过期时间。
lock4j: acquire-timeout: 3000 #默认值3s,可不设置 expire: 30000 #默认值30s,可不设置 primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默认redisson>redisTemplate>zookeeper,可不设置
- 自定义执行器。
@Service public class DemoService { //可在方法级指定使用某种执行器,若自己实现的需要提前注入到Spring。 @Lock4j(executor = RedissonLockExecutor.class) public Boolean test() { return "true"; } }
- 自定义锁key生成器。
默认的锁key生成器为 com.baomidou.lock.DefaultLockKeyBuilder
。
@Component public class MyLockKeyBuilder extends DefaultLockKeyBuilder { @Override protected String getKeyPrefix() { return "myKey"; //默认是lock4j开头 } }
- 自定义锁获取失败策略。
默认的锁获取失败策略为 com.baomidou.lock.DefaultLockFailureStrategy
。
@Component public class MyLockFailureStrategy implements LockFailureStrategy { @Override public void onLockFailure(String key, long acquireTimeout, int acquireCount) { // write my code } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
BeetlSQL 3.1.3 发布,Java 数据库访问工具
修复3.x 的Spring项目,如果不采用spring事务管理,导致获取不到新的链接的Bug Spring配置扫描包增强了允许扫描多个包 maven <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.1.3-RELEASE</version> </dependency> BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台 传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQL Server,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓,PolarDB等 大数据:HBase,ClickHouse,Cassandar,Hive 物联网时序数据库:Machbase,TD-Engine,IotDB SQL查询引擎:Drill,...
- 下一篇
TensorFlow 2.4 发布
TensorFlow 2.4 发布。主要更新包括对分布式训练和混合精度的支持,新的 NumPy 前端以及用于监视和诊断瓶颈的工具,此外还涉及性能和扩展方面的增强。 tf.distribute 中的新功能 参数服务器策略 在 2.4 中,tf.distribute模块引入了使用ParameterServerStrategy对模型进行异步训练的实验支持。以及自定义训练循环。参数服务器训练集群由工作服务器和参数服务器组成。变量在参数服务器上创建,然后在每个步骤中由工作人员读取和更新。变量的读取和更新在整个工作进程中独立发生,而没有任何同步。由于工作进程彼此不依赖,因此该策略具有工作程序容错的优势,并且在使用可抢占式 VM 时很有用。 Multi Worker Mirrored Strategy MultiWorkerMirroredStrategy现在不再处于实验阶段,已经成为稳定 API 的一部分。像它的同类产品MirroredStrategy一样,MultiWorkerMirroredStrategy通过同步数据并行实现分布式训练,可跨多台机器。 Keras 更新 混合精度 Keras ...
相关文章
文章评论
共有0条评论来说两句吧...