性能繁难且弱小-全新的散布式锁 (性能孱弱)
作者:donnie4w
链接:
前言:散布式锁是散布式系统中一个极为关键的工具。目前有多种散布式锁的设计打算,比如借助,mq,数据库,zookeeper等第三方服务系统来设计散布式锁。tldb提供的散布式锁,关键是要简化这个设计的环节,提供一个繁复牢靠,相似经常使用程序中对象锁的形式来失掉散布式锁。
tldb提供散布式锁经常使用方法:
Lock(string,int)方法的经常使用tldb提供的是以字符串为锁对象的独占锁,如,lock("abc",3)肯定提供两个参数:
UnLock(string)方法的经常使用 TryLock(string,int)方法的经常使用以下以go为例经常使用散布式锁
由于tldb散布式的成功是在MQ模块,所以go程序肯定经常使用tlmq-go,tldb的mq客户端启动调用锁方法。
import".com/donnie4w/tlmq-go/cli"
调用lock的程序:lock方法是阻塞的
sc:=cli.NewMqClient("ws://127.0.0.1:5001","mymq=123")
sc.Connect
//以上为客户端衔接MQ主机
key,err:=sc.Lock("testlock",3)
//lock中两个参数,第一个参数为字符串,即tldb主机为testlock调配一个全局的散布式锁
//第二个参数3为客户端持有该锁的最长期间,示意超越3秒没有监禁锁时,tldb主机将在服务端强迫监禁该锁,并调配给其余恳求锁的线程
iferr!=nil{
//失掉锁失败,需检查tldb能反常访问
defersc.UnLock(key)//失掉锁成功后,肯定在程序最后调用Unlock
//口头业务逻辑程序
调用tryLock的程序,trylock是非阻塞的
sc:=cli.NewMqClient("ws://127.0.0.1:5001","mymq=123")
sc.Connect
ifkey,ok:=sc.TryLock("testlock2",3);ok{
//ok为true,示意曾经成功失掉到散布式锁
defersc.UnLock(key)//在程序最后监禁锁对象
go用自旋的形式经常使用trylock失掉散布式锁,成功程序的阻塞期待
sc:=cli.NewMqClient("ws://127.0.0.1:5001","mymq=123")
sc.Connect
varkeystring
ifv,ok:=sc.TryLock("testlock",3);ok{
<-time.After(100*time.Millisecond)
defersc.UnLock(key)
...//业务逻辑代码
这段程序应该比拟易于了解,就是每隔100毫秒,循环失掉字符串testlock的散布式锁直至成功。
以下以java为例java客户端为tlmq-j:
maven性能
<groupId>io.github.donnie4w</groupId>
调用lock方法
MqClientmc=newSimpleClient("ws://127.0.0.1:5001","mymq=123");
mc.connect;
//java衔接主机
Stringkey=null;
key=mc.lock("testlock",3);//失掉散布式
...//口头业务逻辑程序
if(key!=null){
mc.unLock(key);//监禁散布式锁
调用trylock方法
MqClientmc=newSimpleClient("ws://127.0.0.1:5001","mymq=123");
mc.connect;
Stringkey=null;
key=mc.tryLock("testlock",3);//失掉散布式
...//口头业务逻辑程序
if(key!=null){
mc.unLock(key);//监禁散布式锁
以下是tldb散布式锁的性能测试数据:多线程并发调用lock失掉同一个对象锁后,程序的运转数据:
多线程并发经常使用自旋的形式调用trylock与lock失掉同一个对象锁:
2020年比较受欢迎的智能指纹锁有哪些?
智能锁十大品牌有哪些?智能指纹锁有哪些品牌?最近有很多朋友问我:请问现在国内十大智能指纹锁品牌哪个好?中国十大智能锁品牌有哪些?智能门锁品牌十大排名有哪些?问得厨卫君也是一脸懵逼。 为了满足大家的要求,厨卫君特意找了一下资料,做如下排列:2020最新智能锁十大品牌排行榜TOP1:三星智能门锁公司简介:韩国三星智能门锁是由三星集团旗下高科技产业首尔通信息技术公司自主开发的,公司是一家从事开发、生产智能门锁及相关智能产品、安防产品的高科技公司,是韩国三星下属子公司。 三星门锁是韩国SAMSUNG集团研发的高安保智能门锁具,目前已成为先进的数码门锁、指纹密码锁生产厂商及智能家居综合系统开发商,也是全球少数的一家红外触摸指纹锁生产商。 推荐产品:型号:三星SHP-DP728参考价格:3380元 电子类型:磁卡锁 感应锁 密码锁 指纹锁面板及执手材质: 锌合金饰面颜色:银色、金色、古铜色优势:1、拥有多种解锁方式,可使用智能手机上的APP软件,指纹,密码,智能卡以及备用钥匙打开门锁。 2、可查询出入记录、具有可疑报警功能。 3、采用最方便的开门方式,推动、拉入开关模式。 TOP2:德施曼智能指纹锁公司简介:德国锁具行业的历史最早可追溯到1547年, 到1852年德国锁匠协会建立,发布了一系列的规范条例之后,包括斯图加特在内的德国各地制锁业开始进入蓬勃发展阶段。 德施曼DESSMANN(德国)诞生于斯图加特,伴随德国精工制造的理念及后工业化的高速进程,目前已逐步成为一家跨国发展的高科技公司。 推荐产品:型号:小嘀R5人脸识别全自动智能锁参考价格:2499元 电子类型:人脸、人脸+密码、密码、手机、钥匙面板及执手材质: 铝合金饰面颜色:局端黑、咖啡金优势:1、拥有多种解锁方式,可使用智能手机上的APP软件,指纹,密码,人脸,人脸+密码,以及备用钥匙打开门锁。 2、可查询出入记录、具有防撬报警、低电量报警、禁试报警功能。 3、采用红外自动感应激活、触摸激活模式,单块电池待机时间约5个月。 TOP3:凯迪仕智能指纹锁公司简介:Kaadas凯迪仕专注于高端智能锁领域,是一家集产品研发、制造、销售、安装、售后于一体的全产业链公司,总部位于中国深圳高新科技园——清华信息港,由影视明星刘涛担任凯迪仕品牌形象大使。 凯迪仕一直秉承“创新、智造、品质、诚信、工匠精神”做产品,年生产能力、销售规模均位居全球前列,拥有德国、亚太、北京、深圳研发实验室,在浙江和广东打造三大世界级智造基地,行业内率先通过工业4.0来实现精细化生产智造。 推荐产品:型号:K10-W全自动WIFI智能密码锁参考价格:2699元 电子类型:感应锁 密码锁 指纹锁面板及执手材质: 铝合金一体成型圆弧把手设计饰面颜色:高端黑、咖啡金优势:1、拥有多种解锁方式,可使用智能手机上的APP软件,指纹,密码,以及备用钥匙打开门锁。 2、可查询出入记录、具有防撬报警、低电量报警、禁试报警功能。 3、采用防窥视虚位密码设计,无需网关直连WIFI设计。 TOP4:必达智能锁公司简介:广东必达保安系统有限公司是中国专业的智能安防解决方案提供商。 公司成立于1992年,坐落于广东顺德高新区科技产业园,专业从事以电子智能门锁产品为主的电子安防类产品研发、生产、销售与服务工作。 必达坚持以产品品质为先,主要产品包括智能门锁、智能柜锁、智能箱、智能门禁设备和提供安防物联一体化解决方案。 截止到2015年底,必达已为全球超过48个国家和地区的酒店、商业、办公、医疗、住宅、学校类客户提供了创新的技术与产品解决方案,为全球用户缔造安全便捷的智能生活。 推荐产品:型号:必达I8家用防盗门锁三合一指纹密码锁参考价格:2999元 电子类型:感应锁 密码锁 指纹锁面板及执手材质: 锌合金 镜面抛光饰面颜色:高端铜、咖啡金优势:1、拥有一体式锁舌、防猫眼开启安全设计、6秒自动上锁功能。 2、可查询出入记录、具有防撬报警、低电量报警、禁试报警功能。 3、采用倒置指纹仓设计,让您更舒适的开门。 4、采用深度加密智能控制芯片,拒绝任何破解方式。 TOP5:亚太天能指纹锁公司简介:广东亚太天能科技股份有限公司(简称:亚太天能)是中国智能指纹锁领域领先的产品提供商和解决方案服务商,同时也是智能家居领域集科研、设计、生产、销售于一体的专业化技术开发型企业。 公司成立于1991年,注册资本1.02亿,目前旗下拥有亚太天能指纹锁、智能晾衣机两大系列产品。 经过多年发展,亚太天能于2015年正式登陆资本市场新三板,股票代码,是中国智能指纹锁新三板上市公司,并始终稳居创新层。 推荐产品:型号:天能系列智能门锁T109经典滑盖参考价格:4999元 电子类型:感应锁 密码锁 指纹锁面板及执手材质: 锌合金饰面颜色:红古铜;星空紫优势:1、拥有全自动升降滑盖功能、6秒自动上锁功能。 2、可查询出入记录、具有防撬报警、低电量报警、禁试报警功能。 3、采用一门两面,双芯片双系统,无惧电磁干扰。 4、采用双组合验证,出远门什么的,无所谓惧。 TOP6:耶鲁智能锁公司简介:耶鲁是世界上历史悠久和国际知名的锁具品牌,百年品牌一直以品质铸就经典。 耶鲁的发展历史不仅仅只标志着耶鲁锁在其演变进程中的重大革新,更是整个锁业发展的缩影。 是当今全球销售量领先的电子门锁公司。 旗下品牌TOUCHGATE、GATEMAN等在电子门锁行业首次采用浮动密码技术,在当今高科技世界上是遥遥领先的,并获得了多项国际专利。 推荐产品:型号:耶鲁 YMI70电子锁参考价格:5699元 电子类型:感应锁 密码锁 指纹锁 智能锁面板及执手材质: 锌合金饰面颜色:红古铜;星空紫优势:1、便携推拉式开关门设计。 2、可查询出入记录、具有防撬报警、防火、防水、防冻、防电报警、禁试报警功能。 3、采用全触摸指纹开锁、蓝牙解锁、智能手机解锁设计。 4、采用远程遥控设计,出远门家里没人又有亲人来访什么的,不存在的。 TOP7:西门子智能锁公司简介:西门子——世界五百强企业,品牌百强企业,是专注于电气化、自动化、数字化战略的全球巨型企业之一,致力中国市场超过了140年。 近年来,随着智能门锁产业的高速发展,这家世界巨头企业也于2019年初正式进入到智能门锁行业,并于7月初发布了首款旗舰产品西门子C321智能门锁,受到了行业和市场的普遍性关注。 推荐产品:型号:西门子C627 智能门锁参考价格:2680元 电子类型:感应锁 密码锁 指纹锁 智能锁 C级锁芯面板及执手材质: 锌合金饰面颜色:香槟金;古铜金;深空灰优势:1、柔顺推拉式开关门设计,自动电子锁体。 2、可查询出入记录、具有防撬报警、防火、防水、防冻、防电报警、禁试报警功能。 3、采用人前自动唤醒设计,具有指纹解锁、密码解锁、加密卡和机械钥匙解锁设计。 4、采用半导体指纹头设计,识别指纹<1秒。 TOP8:黑龙智能锁公司简介:广东黑龙智能科技有限公司是一家集智能锁研发、制造、销售、安装、售后于一体的全产业链公司。 公司凭借在智能锁领域的专业水平和成熟的技术,专注打造指纹技术、互联网智能控制技术的智能门锁,荣获国家高新技术企业。 以科技求发展,不断为用户提供满意的高科技智能锁,是我们始终不变的追求。 公司拥有自主的研发和技术支持团队,生产化规模的产品制造中心,产品以别墅、智能小区为服务对象。 推荐产品:型号:黑龙微信智能锁H5参考价格:3699元 电子类型:感应锁 密码锁 指纹锁 智能锁面板及执手材质: 锌合金饰面颜色:玫瑰金;星空灰优势:1、采用电动滑盖设计,可远程控制。 2、可查询出入记录、具有防撬报警、防盗报警、禁试报警功能。 3、采用半导体极速指纹开锁、微信解锁、加密卡解锁、机械钥匙解锁设计。 TOP9:金指码智能指纹锁公司简介:KSMAK金指码成立于1994年,是中国第一把指纹锁制造者,品牌隶属于杭州易欣安实业有限公司,总部位于浙江杭州,23年专注指纹锁研发、制造,是中国高端指纹锁领导品牌,2008年金指码指纹锁成为中国国家奥林匹克中心指定使用产品。 金指码在杭州拥有独立的研发、制造基地,产品涵盖指纹锁及相关智能硬件。 推荐产品:型号:金指码一握开指纹锁K91 家用电子密码锁参考价格:4280元 电子类型:感应锁 密码锁 指纹锁 智能锁面板及执手材质: 锌合金饰面颜色:香槟金;青古铜优势:1、采用进口指纹头设计,独创一握即开。 2、可查询出入记录、具有防撬报警、防盗报警、禁试报警功能。 3、采用进口极速指纹头,支持指纹解锁、密码解锁、加密卡解锁、机械钥匙解锁设计。 TOP10:松下门控智能门锁公司简介:迅速发展的中国经济发展推动了Panasonic门控业务的发展,Panasonic门控事业部隶属于松下电气机器(北京)有限公司,目前产品涵盖平移门、平开门、旋转门、五金、智能门控装置、地铁屏蔽门等。 从1994年正式成立到现在松下门控遇到过无数次挑战,也做过数次重大战略选。 Panasonic自动门通过1993年成立的北京四通松下电工有限公司正式进入中国销售。 推荐产品:型号:松下 V-M721F 电子锁参考价格:2899元 电子类型:感应锁 密码锁 指纹锁 智能锁面板及执手材质: 锌合金饰面颜色:香蕉金;曜石黑优势:1、采用上下双滑盖设计,C级锁芯防盗。 2、可查询出入记录、具有防撬报警、防盗报警、禁试报警功能。 3、采用四种解锁方式:指纹开锁、微信解锁、加密卡解锁、机械钥匙解锁设计。 4、采用滑盖式隐藏钥匙孔设计和全方位通用设计,让您开门无忧。 智能锁安全吗?第一:智能锁是绝对安全的,就算是没电了也能支持传统钥匙机械开锁的。 在设置智能锁密码的时候一定要注意安全,包括自己家人也要告知,一般用指纹锁是比较安全的了。 第二:指纹密码锁与传统的机械锁相比较,由于其高强度的金属材质和自身可伸缩性保护壳结构,能够抵抗故意破坏、恶作剧和蓄意的撬、钻等暴力破坏;同时,传统机械锁的防范技术开启的能力很差,不管哪种结构的机械锁都能够被其他手段轻易开启,而且其钥匙可以被复制就是一个很大的安全隐患,反而指纹密码锁就更加智能和高科技了,主要是靠指纹和设置密码来解锁的,每个人的指纹作为自身的生物特征都是独一无二的,所以其安全性能够得到很好的保障。 想要增加多人开门许可的话,直接录入对方的指纹就行了,比如家里的保姆或亲戚朋友,反之也可以自行删除。 不用再像传统机械锁那样,还要花钱再一把一把的配钥匙,不及繁琐而且要是钥匙一不小心落入坏人手里,其中潜在的危害可是非常大的!第三:指纹密码锁是智能锁具,它是计算机信息技术、电子技术、机械技术和现代五金工艺的完美结晶。 指纹的特性如今已经成为识别身份的最重要证据而广泛应用于公安刑侦及司法领域。 总之,在日常生活中使用指纹锁比使用传统机械锁要更安全、更便捷、更放心。
大家所推崇的 Redis 分布式锁,真的可以万无一失吗?
使用Redis实现分布式锁最简单的方案是使用命令SETNX。SETNX(SET if Not eXist)的使用方式为:SETNX key value,只在键key不存在的情况下,将键key的值设置为value,若键key存在,则SETNX不做任何动作。SETNX在设置成功时返回,设置失败时返回0。当要获取锁时,直接使用SETNX获取锁,当要释放锁时,使用DEL命令删除掉对应的键key即可。上面这种方案有一个致命问题,就是某个线程在获取锁之后由于某些异常因素(比如宕机)而不能正常的执行解锁操作,那么这个锁就永远释放不掉了。为此,我们可以为这个锁加上一个超时时间。第一时间我们会联想到Redis的EXPIRE命令(EXPIRE key seconds)。但是这里我们不能使用EXPIRE来实现分布式锁,因为它与SETNX一起是两个操作,在这两个操作之间可能会发生异常,从而还是达不到预期的结果
对此,正确的姿势应该是使用“SET key value [EX seconds] [PX milliseconds] [NX|XX]”这个命令。从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value 。XX : 只在键已经存在时, 才对键进行设置操作。
履行 SET key value PX milliseconds 的后果同等于履行 PSETEX key milliseconds value 。NX : 只在键不存在时, 才对键停止设置操纵。 履行 SET key value NX 的后果同等于履行 SETNX key value 。XX : 只在键曾经存在时, 才对键停止设置操纵。举例,咱们须要创立一个散布式锁,而且设置过时时光为10s,那末能够履行以下下令:
这里我们一眼就可以看出问题来:GET和DEL是两个分开的操作,在GET执行之后且在DEL执行之前的间隙是可能会发生异常的。如果我们只要保证解锁的代码是原子性的就能解决问题了。这里我们引入了一种新的方式,就是Lua脚本,解锁的时候还是使用DEL命令来解锁。修改之后的方案看上去很完美,但实际上还是会有问题。试想一下,某线程A获取了锁并且设置了过期时间为10s,然后在执行业务逻辑的时候耗费了15s,此时线程A获取的锁早已被Redis的过期机制自动释放了。在线程A获取锁并经过10s之后,改锁可能已经被其它线程获取到了。当线程A执行完业务逻辑准备解锁(DEL key)的时候,有可能删除掉的是其它线程已经获取到的锁,总的来说Redis 分布式锁不是那么万无一失的。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。