跨语言分布式锁!硬核解决方案!功能全开,简单、轻便、快捷!
跨语言分布式锁!硬核解决方案!功能全开,简单、轻便、快捷!
在当今快速发展的互联网时代,分布式系统已成为企业架构的核心。然而,随着系统的扩展,数据一致性问题成为了一个不可忽视的挑战。
分布式锁作为解决这一问题的关键技术之一,其重要性不言而喻。
目前有多种分布式锁的设计方案,比如借助 redis、mq、数据库、zookeeper 等第三方服务系统来设计分布式锁。
但今天我们要分享的是一个全新的分布式锁:TDLB分布式锁
。
TDLB分布式锁是一种基于分布式系统的锁机制,它允许多个节点在访问共享资源时保持数据一致性。通过TDLB,各个节点可以协调彼此的操作,确保在同一时间只有一个节点能够修改共享资源。
tldb 提供的分布式锁功能主要在 MQ 模块中实现,调用的方法在 MQ 客户端实现,客户端的实现实际非常简单。
tldb 提供分布式锁使用方法:
- lock 阻塞式请求锁
- trylock 尝试加锁,若锁已被占用,则失败返回,反之,则获取该锁
- unlock 释放已经获取的锁
Lock (string,int) 方法的使用
tldb 提供的是以字符串为锁对象的独占锁, 如,lock ("abc",)
必须提供两个参数:
- 第一个参数为锁对象,即服务器对 “abc” 对象分配一个锁,所有对 "abc" 对象请求加锁的线程争用一个独占锁,该方法为一个阻塞方法,请求到锁则返回,如果锁被其他线程占用,则一直阻塞直至获取到锁。
- 第二个参数为持有该分布式锁的最长时间,单位为秒,例如
lock ("abc",)
,意思是,如果超过 秒还没有调用 unlock 释放该锁,服务器将强制释放该锁,继续将锁分配给其他请求的线程。
UnLock (string) 方法的使用
UnLock 为释放分布式锁时调用的方法。客户端在成功获取分布式锁后,服务器会返回一个该锁的 key,客户端执行完逻辑代码的最后,必须显式调用 UnLock (key) 来释放该分布式锁。如果没有调用 unlock 释放锁,tldb 将等待锁释放的超时时间直至超时后强制释放该锁。
TryLock (string,int) 方法的使用
trylock 与 lock 相似,但是 lock 方法阻塞的,调用 lock 方法请求分布式锁时,如果该锁已经被占用,那么 lock 方法将一直等待直至 tldb 服务器将锁分配给它,这与程序中获取独占锁的方式一致。而 trylock 时非阻塞的,调用 trylock 后会立即返回,如果获取到锁,tldb 会将标识该锁的 key 一并返回,如何该锁已经被占用,服务器将返回空数据。
客户端GitHub地址
首先是 maven 配置引入
代码语言:javascript代码运行次数:0运行复制<dependency>
<groupId>io.github.donnie4w</groupId>
<artifactId>tlmq-j</artifactId>
<version>0.0.2</version>
</dependency>
然后,直接调用 lock
方法
MqClient mc = new SimpleClient("ws://127.0.0.1:5001", "mymq=12");
();
//java连接服务器
String key = null;
try{
key = mc.lock("testlock", ); //获取分布式
... //执行业务逻辑程序
}finally {
if (key!=null){
mc.unLock(key); //释放分布式锁
}
}
或者调用 trylock
方法
MqClient mc = new SimpleClient("ws://127.0.0.1:5001", "mymq=12");
();
String key = null;
try{
key = ("testlock", ); //获取分布式
... //执行业务逻辑程序
} finally {
if (key!=null){
mc.unLock(key); //释放分布式锁
}
}
只要记得最后unlock
释放分布式锁就好!
tldb 分布式锁测试
以下是 tldb 分布式锁的功能测试数据。
多线程并发 调用 lock 获取同一个对象锁后,程序的运行数据:
多线程并发使用自旋的方式调用 trylock 与 lock 获取同一个对象锁:
好啦!今天的分享就到这里了。tldb 分布式锁除了这里的Java客户端实现外,还有golang,python,javaScript等版本,大家可以根据自己的需求进行选择,也可以自行进行实现!
方便、快捷的框架能快速开始我们的开发!这也就是我们选择优秀框架,而不是自己从头敲代码造轮子的原因!
本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2024-10-11,如有侵权请联系 cloudcommunity@tencent 删除解决方案客户端对象分布式锁服务器#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 金东方高中 | 8分钟前 发表 |
服务器会返回一个该锁的 key | |
本站网友 山西省煤炭运销总公司 | 13分钟前 发表 |
"mymq=12"); (); //java连接服务器 String key = null; try{ key = mc.lock("testlock" | |
本站网友 鱼美人减肥 | 26分钟前 发表 |
反之 | |
本站网友 集币成狂 | 15分钟前 发表 |
分享自 | |
本站网友 户型平面图 | 29分钟前 发表 |
则获取该锁unlock 释放已经获取的锁Lock (string | |
本站网友 万虹点读机教材下载 | 7分钟前 发表 |
TDLB分布式锁 java 客户端示例 客户端GitHub地址 首先是 maven 配置引入代码语言:javascript代码运行次数:0运行复制<dependency> <groupId>io.github.donnie4w</groupId> <artifactId>tlmq-j</artifactId> <version>0.0.2</version> </dependency> 然后 | |
本站网友 农夫网址导航 | 4分钟前 发表 |
调用 lock 方法请求分布式锁时 | |
本站网友 新安租房 | 10分钟前 发表 |
如果获取到锁 | |
本站网友 什么是威客 | 1分钟前 发表 |
javaScript等版本 | |
本站网友 樱花阁 | 26分钟前 发表 |
调用 lock 方法请求分布式锁时 | |
本站网友 上海二手房市场 | 18分钟前 发表 |
快捷! 前言 在当今快速发展的互联网时代 | |
本站网友 广州海峡 | 2分钟前 发表 |
什么是TDLB分布式锁? TDLB分布式锁是一种基于分布式系统的锁机制 |