电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談Java分布式架構下如何實現分布式鎖

瀏覽:38日期:2022-08-28 11:54:29

01分布式鎖運用場景

互聯網秒殺,搶優惠卷,接口冪等性校驗。咱們以互聯網秒殺為例。

 @RestController@Slf4jpublicclassIndexController{@AutowiredprivateRedissonredission;@AutowiredprivateStringRedisTemplatestringRedisTemplate;@RequestMapping('/deduct_stock')publicStringdeductStock()throwsInterruptedException{intstock=Integer.parseInt(stringRedisTemplate.opsForValue().get('stock'));if(stock>0){intrealStock=stock-1;stringRedisTemplate.opsForValue().set('stock',realStock+'');log.info('扣減成功,剩下庫存+'+realStock);}else{return'庫存不足';}return'end';}}

上面代碼假定多個線程一起進來,讀到胡成果相同,寫入的成果也相同。造成多個減庫存操作,只減少了一次。

 好多人想到的處理方式是加synchronized,但是假如是集群項目呢?搭建的是負載均衡項目。打開了兩個jvm進程,jvm進程鎖失效。

用nginx做負載均衡,啟用兩個服務。進行下壓測。成果和咱們想的相同,用suynchronized關鍵字加鎖,兩臺服務器打印的剩下庫存有相同的。所以這種方法并沒有完成線程安全。

02根據redisson完成分布式鎖

咱們redis中有一個SETNXKEYVALUE,這個指令的時刻復雜度為O(1),只在鍵key不存在的情況下,將鍵key的值設置為value,若鍵key現已存在,則setnx指令不做任何操作,指令在設置成功時返回一,失利時分返回0.

那么咱們能夠簡單用這個指令,完成一個十分簡單的分布式鎖。Springboot結構中咱們運用這個:

stringRedisTemplate.opsForValue().setIfAbsent(),它底層是對setnx的封裝。

這樣完成有什么問題?

假如第一個線程拋了異常中斷了,其它線程就永遠不能處理了,所以咱們加上trycatch,finally。在finally里面delete咱們存的key值。

假如程序宕機怎么辦?不是可捕獲異常怎么辦?

這時分程序履行到沒有釋放鎖,即key值一向存在,在發動web服務的時分其它線程也一向不等待。這時分會一向存在死鎖,咱們是不是參加鎖的超時時刻是否能夠,即stringRedisTemplate.expire()

程序迭代的過程是逐步的優化,假定我還沒來的及給鎖設置時長,服務就宕掉了,這時分該怎么辦。

用兩行指令履行咱們能夠換成一行的指令,及設置key值的時分,一起設置時長,stringRedisTemplate.opsForValue().setIfAbsent()。合并成一個原子操作。

這樣寫的化問題還是有的,假如你設置超時時刻為10秒,而我履行事務代碼為小于10秒,還沒履行完,就把鎖釋放掉了。高并發場景下你不能決議履行順序.

能夠不能夠自己加的鎖,自己刪去,別的線程不能進行操作?咱們給每個線程設置一個uuid,唯一id。這樣輕輕松松解決了。商場上面現已有許多許多成熟的結構,咱們能夠不需要去手寫分布式結構來完成。

到此這篇關于淺談Java分布式架構下如何實現分布式鎖的文章就介紹到這了,更多相關Java分布式架構 分布式鎖內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 建筑资质代办-建筑资质转让找上海国信启航 | 阜阳在线-阜阳综合门户 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 客服外包专业服务商_客服外包中心_网萌科技 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 999范文网_优质范文下载写作帮手| 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 魔方网-培训咨询服务平台| 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 |