[發明專利]分布式鎖的控制方法和裝置在審
| 申請號: | 201610825829.4 | 申請日: | 2016-09-14 |
| 公開(公告)號: | CN107818018A | 公開(公告)日: | 2018-03-20 |
| 發明(設計)人: | 張偉 | 申請(專利權)人: | 北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;H04L29/08 |
| 代理公司: | 北京英賽嘉華知識產權代理有限責任公司11204 | 代理人: | 王達佐,馬曉亞 |
| 地址: | 100080 北京市海淀區杏石口路6*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 控制 方法 裝置 | ||
技術領域
本申請涉及計算機技術領域,具體涉及互聯網技術領域,尤其涉及分布式鎖的控制方法和裝置。
背景技術
在分布式系統中,若不同的系統或同一個系統的不同主機之間共享了一個或一組資源,那么訪問這些資源時,為保證系統的操作能夠同步或互斥執行,需要使用分布式鎖對系統間相關聯的操作進行協調。
現有的分布式鎖的控制方法通常是利用為分布式應用提供一致性服務的軟件Zookeeper創建臨時節點,基于臨時節點的編號大小實現分布式鎖的控制。然而,這種分布式鎖的控制方法依賴的Zookeeper維護復雜且僅適用于小規模集群,因而,對于如電子商務系統的大型促銷場景、商品秒殺場景等高并發場景,現有的分布式鎖的控制方法無法高效、準確地對分布式鎖進行控制。
發明內容
本申請的目的在于提出一種改進的分布式鎖的控制方法和裝置,來解決以上背景技術部分提到的技術問題。
第一方面,本申請提供了一種分布式鎖的控制方法,所述方法包括:接收客戶端發送的分布式鎖的加鎖請求,其中,所述加鎖請求包括所述分布式鎖的標識;執行如下判定步驟:確定所述加鎖請求指示的所述分布式鎖是否被占用;響應于所述分布式鎖被占用,確定所述分布式鎖是否已被設置過期時間,若已被設置過期時間,獲取所述分布式鎖的剩余有效時長,其中,所述剩余有效時長為所述過期時間與當前時間的差;響應于所述分布式鎖未被設置過期時間或所述剩余有效時長等于零,解除所述分布式鎖,并重新執行所述判定步驟。
在一些實施例中,所述方法還包括:響應于所述剩余有效時長大于零,確定所述客戶端的等待時長或所述判定步驟的執行次數,其中,所述等待時長為當前時間與所述客戶端發送所述加鎖請求的時間的差;響應于所述等待時長不小于預設等待時長閾值或所述執行次數等于預設執行次數閾值,判定加鎖失敗,并向所述客戶端發送加鎖失敗消息,其中,所述加鎖失敗消息包括所述分布式鎖的標識。
在一些實施例中,所述方法還包括:響應于所述等待時長小于所述預設等待時長閾值或所述執行次數小于所述預設執行次數閾值,則等待預設休眠時長,重新執行所述判定步驟。
在一些實施例中,所述預設等待時長閾值、所述預設執行次數閾值為預先存儲的或所述客戶端發送的。
在一些實施例中,所述加鎖請求還包括所述分布式鎖的有效時長信息;以及所述判定步驟,還包括:響應于所述分布式鎖未被占用,占用所述分布式鎖;根據所述有效時長信息對所述分布式鎖進行過期時間設置,并生成指示設置是否成功的設置結果;響應于所述設置結果指示設置成功,向所述客戶端發送加鎖成功消息,以供所述客戶端執行受所述分布式鎖保護的業務操作,其中,所述加鎖成功消息包括所述分布式鎖的標識。
在一些實施例中,所述方法還包括:響應于所述設置結果指示設置失敗,解除所述分布式鎖,并重新執行所述判定步驟。
在一些實施例中,在向所述客戶端發送加鎖成功消息后,所述方法還包括:當所述分布式鎖的剩余有效時長為零時,解除所述分布式鎖。
在一些實施例中,所述方法還包括:響應于從所述客戶端接收所述分布式鎖的解鎖請求,解除所述解鎖請求指示的所述分布式鎖,其中,所述解鎖請求包括所述分布式鎖的標識。
第二方面,本申請提供了分布式鎖的控制裝置,所述裝置包括:接收單元,配置用于接收客戶端發送的分布式鎖的加鎖請求,其中,所述加鎖請求包括所述分布式鎖的標識;判定單元,配置用于執行如下判定步驟:確定所述加鎖請求指示的所述分布式鎖是否被占用;響應于所述分布式鎖被占用,確定所述分布式鎖是否已被設置過期時間,若已被設置過期時間,獲取所述分布式鎖的剩余有效時長,其中,所述剩余有效時長為所述過期時間與當前時間的差;第一解除單元,配置用于響應于所述分布式鎖未被設置過期時間或所述剩余有效時長等于零,解除所述分布式鎖,使所述判定單元重新執行所述判定步驟。
在一些實施例中,所述裝置還包括:確定單元,配置用于響應于所述剩余有效時長大于零,確定所述客戶端的等待時長或所述判定步驟的執行次數,其中,所述等待時長為當前時間與所述客戶端發送所述加鎖請求的時間的差;發送單元,配置用于響應于所述等待時長不小于預設等待時長閾值或所述執行次數等于預設執行次數閾值,判定加鎖失敗,并向所述客戶端發送加鎖失敗消息,其中,所述加鎖失敗消息包括所述分布式鎖的標識。
在一些實施例中,所述裝置還包括:等待單元,配置用于響應于所述等待時長小于所述預設等待時長閾值或所述執行次數小于所述預設執行次數閾值,則等待預設休眠時長,使所述判定單元重新執行所述判定步驟。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司,未經北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610825829.4/2.html,轉載請聲明來源鉆瓜專利網。





