游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

这样实现分布式锁,才叫优雅

  概述
  提到分布式锁大家都会想到如下两种:基于Redisson组件,使用redlock算法实现基于ApacheCurator,利用Zookeeper的临时顺序节点模型实现
  今天我们来说说第三种,使用SpringIntegration实现。
  SpringIntegration在基于Spring的应用程序中实现轻量级消息传递,并支持通过声明适配器与外部系统集成。SpringIntegration的主要目标是提供一个简单的模型来构建企业集成解决方案,同时保持关注点的分离,这对于生成可维护,可测试的代码至关重要。我们熟知的SpringCloudStream的底层就是SpringIntegration。
  官方地址:https:github。comspringprojectsspringintegration
  SpringIntegration提供的全局锁目前为如下存储提供了实现:GemfireJDBCRedisZookeeper
  它们使用相同的API抽象,这意味着,不论使用哪种存储,你的编码体验是一样的。试想一下你目前是基于zookeeper实现的分布式锁,哪天你想换成redis的实现,我们只需要修改相关依赖和配置就可以了,无需修改代码。下面是你使用SpringIntegration实现分布式锁时需要关注的方法:
  方法名描述lock()Acquiresthelock。加锁,如果已经被其他线程锁住或者当前线程不能获取锁则阻塞lockInterruptibly()Acquiresthelockunlessthecurrentthreadisinterrupted。加锁,除非当前线程被打断。tryLock()Acquiresthelockonlyifitisfreeatthetimeofinvocation。尝试加锁,如果已经有其他锁锁住,获取当前线程不能加锁,则返回false,加锁失败;加锁成功则返回truetryLock(longtime,TimeUnitunit)Acquiresthelockifitisfreewithinthegivenwaitingtimeandthecurrentthreadhasnotbeeninterrupted。尝试在指定时间内加锁,如果已经有其他锁锁住,获取当前线程不能加锁,则返回false,加锁失败;加锁成功则返回trueunlock()Releasesthelock。解锁实战
  话不多说,我们看看使用SpringIntegration如何基于redis和zookeeper快速实现分布式锁,至于Gemfire和Jdbc的实现大家自行实践。基于Redis实现引入相关组件dependencygroupIdorg。springframework。bootgroupIdspringbootstarterintegrationartifactIddependencydependencygroupIdorg。springframework。integrationgroupIdspringintegrationredisartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootstarterdataredisartifactIddependency在application。yml中添加redis的配置spring:redis:host:172。31。0。149port:7111建立配置类,注入RedisLockRegistryConfigurationpublicclassRedisLockConfiguration{BeanpublicRedisLockRegistryredisLockRegistry(RedisConnectionFactoryredisConnectionFactory){returnnewRedisLockRegistry(redisConnectionFactory,redislock);}}编写测试代码RestControllerRequestMapping(lock)Log4j2publicclassDistributedLockController{AutowiredprivateRedisLockRegistryredisLockRegistry;GetMapping(redis)publicvoidtest1(){LocklockredisLockRegistry。obtain(redis);try{尝试在指定时间内加锁,如果已经有其他锁锁住,获取当前线程不能加锁,则返回false,加锁失败;加锁成功则返回trueif(lock。tryLock(3,TimeUnit。SECONDS)){log。info(lockisready);TimeUnit。SECONDS。sleep(5);}}catch(InterruptedExceptione){log。error(obtainlockerror,e);}finally{lock。unlock();}}}测试
  启动多个实例,分别访问lockredis端点,一个正常秩序业务逻辑,另外一个实例访问出现如下错误说明第二个实例没有拿到锁,证明了分布式锁的存在。
  注意,如果使用新版Springboot进行集成时需要使用Redis4版本,否则会出现下面的异常告警,主要是unlock()释放锁时使用了UNLINK命令,这个需要Redis4版本才能支持。2020051411:30:24,781WARNRedisLockRegistry:339TheUNLINKcommandhasfailed(notsupportedontheRedisserver?);fallingbacktotheregularDELETEcommandorg。springframework。data。redis。RedisSystemException:Errorinexecution;nestedexceptionisio。lettuce。core。RedisCommandExecutionException:ERRunknowncommandUNLINK基于Zookeeper实现引入组件dependencygroupIdorg。springframework。bootgroupIdspringbootstarterintegrationartifactIddependencydependencygroupIdorg。springframework。integrationgroupIdspringintegrationzookeeperartifactIddependency在application。yml中添加zookeeper的配置zookeeper:host:172。31。0。43:2181建立配置类,注入ZookeeperLockRegistryConfigurationpublicclassZookeeperLockConfiguration{Value({zookeeper。host})privateStringzkUrl;BeanpublicCuratorFrameworkFactoryBeancuratorFrameworkFactoryBean(){returnnewCuratorFrameworkFactoryBean(zkUrl);}BeanpublicZookeeperLockRegistryzookeeperLockRegistry(CuratorFrameworkcuratorFramework){returnnewZookeeperLockRegistry(curatorFramework,zookeeperlock);}}编写测试代码RestControllerRequestMapping(lock)Log4j2publicclassDistributedLockController{AutowiredprivateZookeeperLockRegistryzookeeperLockRegistry;GetMapping(zookeeper)publicvoidtest2(){LocklockzookeeperLockRegistry。obtain(zookeeper);try{尝试在指定时间内加锁,如果已经有其他锁锁住,获取当前线程不能加锁,则返回false,加锁失败;加锁成功则返回trueif(lock。tryLock(3,TimeUnit。SECONDS)){log。info(lockisready);TimeUnit。SECONDS。sleep(5);}}catch(InterruptedExceptione){log。error(obtainlockerror,e);}finally{lock。unlock();}}}测试
  启动多个实例,分别访问lockzookeeper端点,一个正常秩序业务逻辑,另外一个实例访问出现如下错误说明第二个实例没有拿到锁,证明了分布式锁的存在。

Eclipse安装和安装Python插件Eclipse是一款功能强大的IDE,安装时,需要安装虚拟的运行环境,1、直接运行Eclipse的可执行文件:直接打开文件夹eclipsejavaneon3win32x8……牛年春节视频拜年这样做,男俊女美,笑容更真,年味更浓牛年春节,很多朋友都没有回到老家,选择了就地过年。往年亲戚朋友们相聚一堂,围坐泡茶,聊天吃饭的场面不再。朋友们分隔天南地北,然而,过年的快乐却不能丝毫因此而减淡!远程云拜年就成……熟人到底怎么挣你装电脑的钱的?老程带你了解电脑城产业链导读很多人装电脑的时候都会去找相对比较熟悉的人来带着去装电脑,这个我相信很多人都知道也都会想到,毕竟电脑这个东西在很多人眼中还是比较具有科技感的,相对于手机来说,电脑这个……探班中信证券基金投顾上线,全干货分享正式展业3天签约资产过亿财联社(北京,记者高云)讯,基金投顾业务正成为券商财富管理的主题词之一,中信证券于11月初正式下场展业,给全市场带来更大想象空间。10月中旬,中信证券通过试点公募基金投顾……特别定制版iPhone12,进口A级奢侈品同款鳄鱼皮打造鳄鱼皮对于很多男士来说,是一个非常有感觉的东西。皮鞋、皮包还有皮带,很多男士所用的物品里,以鳄鱼皮为原材料的皮具都是相当受追捧的。但是用鳄鱼皮来做手机,做一台iPhone……恒洁HLG65系列淋浴房人性化设计理念,给予更牢靠的安全感淋浴房是一种将洗浴、空间管理和干湿分离等功能高度集成的家居浴具,其性能及时尚精美的外观深受现代年轻消费者的喜爱,越来越多家庭开始选择淋浴房来替代传统洗浴方式。但作为卫生间非标产……美国雷诺士LENNOX在中国的应用案例LENNOX成立于1881年,进入中国市场已有30多年,遍布全国各大主要城市。全国政协礼堂、美国驻华大使馆、国家广播电视总局、上海国宾馆等办公楼宇均有LENNOX的应用。……丰谷有情节打造情感释放器,治愈现代人的情感退化症社会节奏越来越快,人们的情感被高度压缩,但其实每个人心底都渴望一次情感释放。10月23日,丰谷有情节情感释放器快闪店空降成都春熙路,围绕丰谷有情节,把酒满上,让情释放的主……400多元H510主板破解内存超频3200MHZ!IMC是天上篇文章,INTEL酷睿I310105FMSIH510爆破弹的组合,超频内存失败了。果然英特尔的牙膏还是应验了。不过这也难不倒魔改君,所以还是继续搞下去。毕竟……推倒时间的高墙渡一教育时间是个大话题,我们说了种种,却总逃不过生活里的鸡毛蒜皮,该如何拥有充足的睡眠、该如何获得工作中的幸福感、该如何追求愉悦的心情。。。。。。其实,很多小事都与时间观有关。时……空洞骑士故事解析格林剧团的腥红火焰《空洞骑士》这个游戏发售后,主要更新的两个大型剧情DLC,一个是格林剧团,另一个是寻神者。这两个DLC,分别以格林与寻神者的角度来丰富了《空洞骑士》的世界观。寻神者……Kotlin编写AudioExtractor视频解析七上篇文章讲解了怎么利用FFmpeg来合并一个音视频,今天我们继续来讲解一下利用FFmpeg来处理视频的时间,比如裁剪一段视频,然后合并输出新的视频地址,看了这篇文章你就能学会怎……
网购一致好评?可能是水军刷出来的记者卧底10多个网络水军群,发现网购一致好评可能是刷出来的调查动机今年年初,国家互联网信息办公室发布关于《移动互联网应用程序信息服务管理规定(征求意见稿)》公开征求……促消费利好政策不断,网上年货节电商大比拼,这些本地生活平台连临近虎年春节,各大电商平台的网上年货节活动陆续拉开帷幕,这也将成为我国居民消费需求释放的重要窗口。证券时报e公司记者注意到,在今年的网上年货节中,不少电商增加了新的差异化……索尼推出X8000G系列4KHDR电视4999元起售继此前推出的X9500G、X8500G和X8588G之后,索尼今天(4月3日)又面向国内市场推出了4KHDR电视新品X8000G系列液晶电视。X8000G采用超窄铝制边框……不记得微信号码,又把微信卸载了怎样才找回微信号?我来回答,其实很多人都不会记自己微信号的。微信号如果没有改过也很长。微信如果忘记号码了不外乎以下几种方式登陆再使用。你看简单不。1。下载微信,安装。2。用自己……你觉得滴滴什么时候可以倒闭?滴滴平台,越早倒闭越好!!!这样可以挽救很多司机和乘客,投资人!!!我也是犯贱,全职干滴滴一个多月,经过努力,服务分100全五星,成交率100!!乘客掉了东西在车上,我都免费送……一加618战报预售量同比增长1500,三个亚军IT之家6月1日消息6月正式到来,大家期待的618大促就在不远处,而作为618的第一天,各家为了拿出光亮的成绩纷纷献出妙计,并且跟大家分析首日战报。一加也发布了自己的6月……字节跳动的未来到底有多大?关注我,获取更多深度解读继BAT之后,有人称头条、美团、滴滴为TMB。由此可见头条系产品如今在互联网行业中比重如何。先从字节跳动现在的布局说起。字节跳动覆盖短……新iPhone背板疑曝光方块三摄可能成真据国外媒体报道,周四在微博首次曝出的一个可疑的产品照片,或许被认为是苹果即将要推出的2019版iPhone新产品。发布在知名爆料网站Slashleaks上的这张照片,与2018……到2023年广州全市将要建成5G基站超8万座【CNMO新闻】在9月17日举办的20215G应用创新大会(主题演讲)上获悉,广州将着力构建完善5G产业生态,到2023年全市要建成5G基站超8万座。根据《广州市加快5G……IPhone13发布会新品汇总,A15120hz高刷,苹果站手机圈一年一度的春晚结束了,不知有多少人熬夜看完了呢,没看的小伙伴也没关系,我给大家弄了汇总,首先就是13和13mini系列,说实话相比12和12mini提升不大,处理器升级为……可以推荐几个性价比高且可以直接连电视手机的助听器吗?现在的无线技术越来越先进了。大部分无线技术的使用都需要用配件连接助听器和手机或是电视。不过现在有些厂家已经开始直接把手机和助听器对接了。但也仅限苹果手机。希望可以帮到你峰……电竞显示器主观推荐,各价位区间段有哪些值得买的?前文信息化时代,显示器承载了我们太多的工作、学习,以及娱乐生活,很多小伙伴都要与之相伴几小时到十几小时。因此,选好显示器还是相当重要的。也许有人可能会说,不就是显示器吗?……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网