[發明專利]一種帶有心跳的分布式鎖實現方法及系統在審
| 申請號: | 201910273229.5 | 申請日: | 2019-04-04 |
| 公開(公告)號: | CN110134522A | 公開(公告)日: | 2019-08-16 |
| 發明(設計)人: | 周江翔;孫海濤;周蓉;高國明;王帥;陶偉松 | 申請(專利權)人: | 杭州抖音科技有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;G06F9/50 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 310013 浙江省杭州市西湖區*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式鎖 心跳 有效期 釋放 更新 數據處理技術 啟動定時器 服務申請 服務停止 心跳機制 正常流程 自動回收 自動釋放 釋放鎖 超時 申請 計時 發送 成功 服務 | ||
本發明屬于數據處理技術領域,公開一種帶有心跳的分布式鎖實現方法及系統;在成功申請獲取鎖以后,對該鎖設置一超時ttl時間,然后啟動定時器,定期的去更新ttl值,鎖釋放時先關閉定時執行器,不再更新鎖的ttl值,再釋放分布式鎖;從鎖成功獲取開始計時,超過ttl秒后,鎖自動釋放;鎖釋放后其他申請者有獲取該分布式鎖;沒按照正常流程釋放鎖時,心跳也停止,不繼續定時去更新鎖的有效期,有效期到期,鎖被自動回收,其他服務申請獲取分布式鎖。本發明帶有心跳機制,一旦其服務停止,則心跳無法正常發送,則鎖會在有效期之后釋放,新的服務就可以申請該鎖。
技術領域
本發明屬于數據處理技術領域,尤其涉及一種帶有心跳的分布式鎖實現方法及系統。
背景技術
目前,業內常用的現有技術是這樣的:當服務宕機以后,原獲取的分布式鎖沒釋放,新啟動的服務或者備份的服務因為獲取不到分布式鎖而無法進行有效工作,只能借外力刪除掉鎖才能開展工作。
分布式鎖應用非常廣泛,有些用mysql實現,使用mysql的行鎖原理。有些用redis實現,redis提供一個原子性腳本做原子操作,這樣可以通過判斷某個值是否為固定的值實現申請鎖等操作。Etcd也提供原子性操作prevExist等。
由于各種原因服務非正常關閉時候,其申請獲取的分布式鎖未釋放,因此新的服務沒法獲取這個分布式鎖。
分布式鎖使用范圍比較大,很多用redis、sql、文件系統、etcd等實現分布式鎖。都是正常的處理方法,需要使用鎖的時候則申請,使用完就主動釋放。在正常環境中都可以正常使用,但實際運行環境復雜,有些服務可能會非正常退出,一旦發生內存泄露、程序bug,甚至斷電、磁盤故障的情況,就往往需要人工去手動釋放鎖,運維成本比較大。
綜上所述,現有技術存在的問題是:現有的分布式鎖服務非正常退出需要人工去手動釋放鎖,導致運維成本比較大。
解決上述技術問題的難度:
心跳是業界常用的一種檢查服務是否正常的技術,把心跳技術引入到分布式鎖,利用心跳更新鎖的有效期。注上述方案需要分布式鎖服務實現超時機制,也就是說鎖在申請后會分配一個有效期,過這個有效期后鎖就會自動釋放。
解決上述技術問題的意義:
把心跳技術和分布式鎖技術結合起,既能保證在正常的環境下正常運行,還能保證在異常情況下系統可以自動恢復不需要人工介入。引入心跳機制更新分布式鎖的ttl值后,在正常情況下,分布式鎖可以正常申請和釋放。在異常情況下,鎖也能在有效期過期以后自動釋放,其他鎖申請者就可以正常獲取新鎖,整個過程中不需要人為介入,完全全自動,減少人工運維成本的同時也提升系統性能,一旦需要人為介入一般需要幾分鐘,但系統自動恢復最多只需要幾秒的時間。
發明內容
針對現有技術存在的問題,本發明提供一種帶有心跳的分布式鎖實現方法及系統。
本發明是這樣實現的,一種帶有心跳的分布式鎖實現方法,所述帶有心跳的分布式鎖實現方法包括:
申請獲取鎖的過程,使用etcd、redis第三方開源代碼實現,利用提供的原子性操作原理封裝的原子操作申請鎖。etcd提供prevExist、preValue函數,按照對方接口調用。
在成功申請獲取鎖以后,對該鎖設置一超時ttl時間,然后啟動定時器,定期的去更新ttl值,鎖釋放時先關閉定時執行器,不再更新鎖的ttl值,再釋放分布式鎖;
更新ttl值,啟動一個定時器定時,調用第三方分布式鎖提供方提供的函數,etcd提供對某個key做set其ttl值的操作。每次調用后,key的ttl值就會更新,其值的有效期也對應的改變。
從鎖成功獲取開始計時,超過ttl秒后,鎖自動釋放;鎖釋放后其他申請者有獲取該分布式鎖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于杭州抖音科技有限公司,未經杭州抖音科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910273229.5/2.html,轉載請聲明來源鉆瓜專利網。





