[發(fā)明專利]鎖標(biāo)識(shí)分配和定位方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)在審
| 申請(qǐng)?zhí)枺?/td> | 202210532882.0 | 申請(qǐng)日: | 2022-05-11 |
| 公開(公告)號(hào): | CN115048228A | 公開(公告)日: | 2022-09-13 |
| 發(fā)明(設(shè)計(jì))人: | 樊哲 | 申請(qǐng)(專利權(quán))人: | 北京奇藝世紀(jì)科技有限公司 |
| 主分類號(hào): | G06F9/52 | 分類號(hào): | G06F9/52;G06F16/176 |
| 代理公司: | 北京華夏泰和知識(shí)產(chǎn)權(quán)代理有限公司 11662 | 代理人: | 韓月玲 |
| 地址: | 100080 北京*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 標(biāo)識(shí) 分配 定位 方法 裝置 設(shè)備 存儲(chǔ) 介質(zhì) | ||
本申請(qǐng)涉及一種鎖標(biāo)識(shí)分配和定位方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),涉及云計(jì)算技術(shù)領(lǐng)域。該鎖標(biāo)識(shí)分配方法包括:獲取一級(jí)節(jié)點(diǎn)的數(shù)量,其中,一級(jí)節(jié)點(diǎn)是指根節(jié)點(diǎn)的子節(jié)點(diǎn),一級(jí)節(jié)點(diǎn)的數(shù)量為至少兩個(gè);獲取目標(biāo)鎖標(biāo)識(shí);根據(jù)目標(biāo)鎖標(biāo)識(shí)和一級(jí)節(jié)點(diǎn)的數(shù)量,查找目標(biāo)鎖標(biāo)識(shí)對(duì)應(yīng)的目標(biāo)一級(jí)節(jié)點(diǎn);將目標(biāo)鎖標(biāo)識(shí)分配至目標(biāo)一級(jí)節(jié)點(diǎn)。本申請(qǐng)用以解決Reaper線程與ZK斷開連接,無法刪除鎖的問題。
技術(shù)領(lǐng)域
本申請(qǐng)涉及云計(jì)算技術(shù)領(lǐng)域,尤其涉及一種鎖標(biāo)識(shí)分配和定位方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù)
ZooKeeper(簡稱ZK)是一個(gè)分布式應(yīng)用程序協(xié)調(diào)服務(wù)軟件,是一個(gè)開源的軟件項(xiàng)目,它為大型分布式計(jì)算提供分布式配置服務(wù)、同步服務(wù)和命名注冊(cè)。分布式鎖是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式,在互聯(lián)網(wǎng)開發(fā)中經(jīng)常使用ZK實(shí)現(xiàn)分布式鎖。Curator是對(duì)ZK的高階封裝,是一套開源的ZK客戶端框架,解決了很多ZK客戶端非常底層的細(xì)節(jié)開發(fā)工作,與操作原生的ZK相比,它提供了更加方便的功能,開發(fā)中經(jīng)常直接使用Curator操作分布式鎖。
獲取鎖的工作原理:ZK上有一個(gè)鎖,鎖標(biāo)識(shí)為“my_lock”,客戶端A想獲取鎖“my_lock”,對(duì)ZK發(fā)出加鎖請(qǐng)求,在鎖“my_lock”下創(chuàng)建一個(gè)臨時(shí)順序節(jié)點(diǎn)a,當(dāng)查詢到鎖“my_lock”下的所有子節(jié)點(diǎn)中,臨時(shí)順序節(jié)點(diǎn)a的排序是第一個(gè),則客戶端A成功獲取鎖“my_lock”。
釋放鎖的工作原理:客戶端A獲取鎖之后,可能處理了一些代碼邏輯,處理完成后就會(huì)釋放鎖,釋放鎖就是客戶端A把在鎖“my_lock”下創(chuàng)建的臨時(shí)順序節(jié)點(diǎn)a刪除。客戶端A釋放鎖“my_lock”之后,其他客戶端才有可能成功獲取鎖“my_lock”。
刪除鎖的方式:鎖“my_lock”是持久節(jié)點(diǎn),ZK不能主動(dòng)刪除,需要外部顯式的調(diào)用ZK進(jìn)行刪除。使用Curator刪除鎖時(shí),需要?jiǎng)?chuàng)建一個(gè)Reaper(收割)線程用于清理鎖。這個(gè)Reaper線程的機(jī)制是,先讀取ZK中所有鎖父節(jié)點(diǎn)的名稱,然后每次讀取一個(gè)鎖父節(jié)點(diǎn)下的所有鎖標(biāo)識(shí),查看每個(gè)鎖標(biāo)識(shí)下面是否有鎖的子節(jié)點(diǎn),若該鎖標(biāo)識(shí)下面無鎖的子節(jié)點(diǎn),則這個(gè)鎖標(biāo)識(shí)對(duì)應(yīng)的鎖可以刪除。
當(dāng)Reaper線程每次讀取的一個(gè)鎖父節(jié)點(diǎn)下的所有鎖標(biāo)識(shí)的數(shù)量超過了Reaper線程的閾值,會(huì)導(dǎo)致Reaper線程與ZK斷開連接,無法刪除鎖,ZK中各個(gè)節(jié)點(diǎn)的數(shù)量越積越多,ZK響應(yīng)越來越慢,最終拖垮系統(tǒng)。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┝艘环N鎖標(biāo)識(shí)分配和定位方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),用以解決Reaper線程與ZK斷開連接,無法刪除鎖的問題。
第一方面,本申請(qǐng)?zhí)峁┝艘环N鎖標(biāo)識(shí)分配方法,包括:
獲取一級(jí)節(jié)點(diǎn)的數(shù)量,其中,所述一級(jí)節(jié)點(diǎn)是指根節(jié)點(diǎn)的子節(jié)點(diǎn),所述一級(jí)節(jié)點(diǎn)的數(shù)量為至少兩個(gè);
獲取目標(biāo)鎖標(biāo)識(shí);
根據(jù)所述目標(biāo)鎖標(biāo)識(shí)和所述一級(jí)節(jié)點(diǎn)的數(shù)量,查找所述目標(biāo)鎖標(biāo)識(shí)對(duì)應(yīng)的目標(biāo)一級(jí)節(jié)點(diǎn);
將所述目標(biāo)鎖標(biāo)識(shí)分配至所述目標(biāo)一級(jí)節(jié)點(diǎn)。
可選地,所述根據(jù)所述目標(biāo)鎖標(biāo)識(shí)和所述一級(jí)節(jié)點(diǎn)的數(shù)量,查找所述目標(biāo)鎖標(biāo)識(shí)對(duì)應(yīng)的目標(biāo)一級(jí)節(jié)點(diǎn),包括:
獲取所述目標(biāo)鎖標(biāo)識(shí)對(duì)應(yīng)的哈希值;
根據(jù)所述一級(jí)節(jié)點(diǎn)的數(shù)量,對(duì)所述哈希值進(jìn)行取模運(yùn)算,獲得目標(biāo)序號(hào);
獲取所述目標(biāo)序號(hào)對(duì)應(yīng)的所述目標(biāo)一級(jí)節(jié)點(diǎn)。
可選地,所述方法還包括:
獲取任一所述一級(jí)節(jié)點(diǎn)下的鎖標(biāo)識(shí)的數(shù)量;
根據(jù)所述鎖標(biāo)識(shí)的數(shù)量,調(diào)整所述一級(jí)節(jié)點(diǎn)的數(shù)量。
可選地,所述根據(jù)所述鎖標(biāo)識(shí)的數(shù)量,調(diào)整所述一級(jí)節(jié)點(diǎn)的數(shù)量,包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇藝世紀(jì)科技有限公司,未經(jīng)北京奇藝世紀(jì)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210532882.0/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測試終端的測試方法
- 一種服裝用人體測量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





