[發(fā)明專利]一種分布式鎖的實現(xiàn)方法、系統(tǒng)、設(shè)備及存儲介質(zhì)有效
| 申請?zhí)枺?/td> | 202110526501.3 | 申請日: | 2021-05-14 |
| 公開(公告)號: | CN113407553B | 公開(公告)日: | 2023-05-05 |
| 發(fā)明(設(shè)計)人: | 李琦;宋衛(wèi)東 | 申請(專利權(quán))人: | 重慶銳云科技有限公司 |
| 主分類號: | G06F16/23 | 分類號: | G06F16/23;G06F16/21;G06F9/50 |
| 代理公司: | 重慶智慧之源知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 50234 | 代理人: | 余洪;高彬 |
| 地址: | 401121 重慶*** | 國省代碼: | 重慶;50 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 分布式 實現(xiàn) 方法 系統(tǒng) 設(shè)備 存儲 介質(zhì) | ||
本發(fā)明提供一種分布式鎖的實現(xiàn)方法、系統(tǒng)、設(shè)備及存儲介質(zhì),其中,方法包括:設(shè)置目標(biāo)注解,通過同步枚舉定義分布式鎖的屬性信息;在Redis操作類上定義獲取分布式鎖和釋放分布式鎖;定義切面類,在所述切面類中依次添加聲明注解、切面注解和命令注解,配合Spring框架中的事務(wù)性注解,并設(shè)置所述切面類和事務(wù)性注解的執(zhí)行順序;在待加鎖的方法中添加所述目標(biāo)注解。本發(fā)明能夠通過目標(biāo)注解實現(xiàn)自動加鎖,簡化加鎖和釋放鎖的代碼,提高工作效率,便于后期維護。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件工程技術(shù)領(lǐng)域,尤其涉及一種分布式鎖的實現(xiàn)方法、系統(tǒng)、設(shè)備及存儲介質(zhì)。
背景技術(shù)
目前大型網(wǎng)站及應(yīng)用都是分布式部署的,而分布式場景中的數(shù)據(jù)一致性問題一直是比較重要的話題。在大多數(shù)場景中為了保證數(shù)據(jù)的最終一致性,需要很多技術(shù)方案的支持,例如分布式事務(wù)、分布式鎖等。其中,分布式鎖是為了保證一個方法在同一時間內(nèi)只能被一個線程執(zhí)行。
現(xiàn)有分布式鎖的實現(xiàn)方式有:基于數(shù)據(jù)庫的實現(xiàn)方式、基于zookeeper的實現(xiàn)方式和基于Redis的實現(xiàn)方式。其中,基于數(shù)據(jù)庫實現(xiàn)分布式鎖的方式,存在使用分布式鎖的效率較低,容易造成死鎖的問題;基于zookeeper實現(xiàn)分布式鎖的方式效率較高,但是需要zookeeper的第三方插件;而基于Redis實現(xiàn)分布式鎖的方式,性能較好,且不需要應(yīng)用第三方插件,因此,目前大多數(shù)企業(yè)也都是采用Redis實現(xiàn)分布式鎖。
但是在現(xiàn)有技術(shù)中,使用Redis實現(xiàn)分布式鎖的過程中,需要在代碼中多次重復(fù)地添加獲取分布式鎖和釋放分布式鎖的代碼,導(dǎo)致獲取鎖和釋放鎖的過程較為繁瑣,效率低,且不便于后期維護。
發(fā)明內(nèi)容
基于此,有必要針對上述技術(shù)問題,提供一種分布式鎖的實現(xiàn)方法、系統(tǒng)、設(shè)備及存儲介質(zhì)。
一種分布式鎖的實現(xiàn)方法,包括以下步驟:設(shè)置目標(biāo)注解,通過同步枚舉定義分布式鎖的屬性信息;在Redis操作類上定義獲取分布式鎖和釋放分布式鎖;定義切面類,在所述切面類中依次添加聲明注解、切面注解和命令注解,配合Spring框架中的事務(wù)性注解,并設(shè)置所述切面類和事務(wù)性注解的執(zhí)行順序;在待加鎖的方法中添加所述目標(biāo)注解。
在其中一個實施例中,所述設(shè)置目標(biāo)注解,通過同步枚舉定義分布式鎖的屬性信息,具體包括:所述屬性信息包括分布式鎖的字符串類型、輪詢次數(shù)、輪詢間隔時間和超時時間。
在其中一個實施例中,所述在Redis操作類上定義獲取分布式鎖和釋放分布式鎖,具體包括:定義獲取分布式鎖時,根據(jù)獲取用戶發(fā)出的請求識別請求標(biāo)識,根據(jù)所述請求標(biāo)識獲取分布式鎖,設(shè)置分布式鎖的獲取超時時長;若未超過所述獲取超時時長,則通過UUID方法隨機生成字符串作為所述分布式鎖的value值,并返回獲取分布式鎖的業(yè)務(wù)代碼;若超過所述獲取超時時長,則返回獲取失敗的提示。
在其中一個實施例中,所述在Redis操作類上定義獲取分布式鎖和釋放分布式鎖,具體包括:定義釋放分布式鎖時,根據(jù)釋放用戶發(fā)出的釋放請求識別請求標(biāo)識,根據(jù)所述請求標(biāo)識判斷所述釋放用戶是否與所述獲取用戶一致;若釋放用戶與所述獲取用戶一致,則根據(jù)釋放用戶發(fā)出的value值與所述分布式鎖攜帶的value值是否相同,判斷是否釋放所述分布式鎖;若釋放用戶與所述獲取用戶不一致,則返回拒絕釋放所述分布式鎖的提示。
在其中一個實施例中,所述若為獲取分布式鎖的請求,則根據(jù)請求中攜帶的value值與釋放分布式鎖的value值是否相同確定是否釋放所述分布式鎖,具體包括:若釋放用戶發(fā)出的value值與所述分布式鎖攜帶的value值相同,則釋放所述分布式鎖,并返回釋放分布式鎖的業(yè)務(wù)代碼;若釋放用戶發(fā)出的value值與所述分布式鎖攜帶的value值不相同,則重復(fù)請求釋放分布式鎖,至超過釋放超時時長后,停止請求操作,繼續(xù)下一進程或返回釋放失敗的提示。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于重慶銳云科技有限公司,未經(jīng)重慶銳云科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110526501.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 互動業(yè)務(wù)終端、實現(xiàn)系統(tǒng)及實現(xiàn)方法
- 街景地圖的實現(xiàn)方法和實現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實現(xiàn)裝置及其圖像實現(xiàn)方法
- 增強現(xiàn)實的實現(xiàn)方法以及實現(xiàn)裝置
- 軟件架構(gòu)的實現(xiàn)方法和實現(xiàn)平臺
- 數(shù)值預(yù)報的實現(xiàn)方法及實現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 輸入設(shè)備實現(xiàn)方法及其實現(xiàn)裝置





