• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    基于分布式鎖的數據回滾方法、裝置、設備和存儲介質制造方法及圖紙

    技術編號:33956584 閱讀:25 留言:0更新日期:2022-06-29 23:39
    本申請適用于信息安全技術領域,提供一種基于分布式鎖的數據回滾方法、裝置、終端設備和存儲介質。該方法包括:向分布式系統的服務器集群發送上鎖請求;在接收到由所述服務器集群基于所述上鎖請求返回的分布式鎖后,向指定的緩存數據庫寫入所述分布式鎖的第一上鎖信息,所述第一上鎖信息包含所述分布式鎖的標識、上鎖時間以及第一客戶端的標識;在執行完與所述分布式鎖對應的任務線程之后,從所述緩存數據庫中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息;若所述第二上鎖信息中包含的客戶端標識不是所述第一客戶端的標識,則對與所述任務線程相關的數據進行回滾。采用該方法能夠解決現有分布式鎖技術的紅鎖方案中可能產生的臟數據問題。中可能產生的臟數據問題。中可能產生的臟數據問題。

    Data rollback method, device, device and storage medium based on distributed lock

    【技術實現步驟摘要】
    基于分布式鎖的數據回滾方法、裝置、設備和存儲介質


    [0001]本申請涉及信息安全
    ,提供一種基于分布式鎖的數據回滾方法、裝置、終端設備和存儲介質。

    技術介紹

    [0002]分布式鎖是控制分布式系統中各客戶端同步訪問共享資源的一種方式。在使用Redis做分布式鎖的時候,服務器集群若采用主從模式,則在主節點發生故障,集群節點執行主從切換的時候,有可能出現分布式鎖丟失的問題。
    [0003]針對該問題,現有技術提出一種紅鎖的解決方案,即服務器集群設置多個主節點,客戶端同時向該多個主節點發送上鎖請求,只要一半以上的主節點通過請求,則該客戶端上鎖成功。
    [0004]然而,采用紅鎖仍然存在以下問題:當某個客戶端A獲得鎖之后,若發生了線程停頓(例如一次很長時間的網絡堵塞或波動)且該停頓超過了該鎖的過期時間,則另一個客戶端B就可以獲得該鎖,從而完成相應的數據操作;此后,當客戶端A的線程恢復之后,仍然會將之后的數據操作執行完,此時有可能產生臟數據等問題。

    技術實現思路

    [0005]有鑒于此,本申請提出一種基于分布式鎖的數據回滾方法、裝置、終端設備和存儲介質,旨在解決現有技術的紅鎖方案中可能產生的臟數據問題。
    [0006]第一方面,本申請實施例提供了一種基于分布式鎖的數據回滾方法,應用于第一客戶端,所述第一客戶端為分布式系統具有的多個客戶端中的任意一個客戶端,該方法包括:
    [0007]向所述分布式系統的服務器集群發送上鎖請求;
    [0008]在接收到由所述服務器集群基于所述上鎖請求返回的分布式鎖后,向指定的緩存數據庫寫入所述分布式鎖的第一上鎖信息,所述第一上鎖信息包含所述分布式鎖的標識、上鎖時間以及所述第一客戶端的標識;所述多個客戶端中的每個客戶端在接收到所述服務器集群分配的分布式鎖后,都會往所述緩存數據庫寫入相應的上鎖信息;
    [0009]在執行完與所述分布式鎖對應的任務線程之后,從所述緩存數據庫存儲的所有上鎖信息中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息;
    [0010]若所述第二上鎖信息中包含的客戶端標識不是所述第一客戶端的標識,則對與所述任務線程相關的數據進行回滾。
    [0011]在本申請實施例中,首先由某個第一客戶端向服務器集群發送上鎖請求;當第一客戶端基于該上鎖請求獲得對應的分布式鎖后,向指定的緩存數據庫寫入該分布式鎖的第一上鎖信息,該第一上鎖信息包含該分布式鎖的標識、上鎖時間和第一客戶端的標識;第一客戶端在執行完相應的任務線程之后,從該緩存數據庫中查找與該分布式鎖對應且上鎖時間最晚的第二上鎖信息;若該第二上鎖信息中包含的客戶端標識不是第一客戶端的標識,
    則第一客戶端對該任務線程相關的數據進行回滾。通過這樣設置,假設第一客戶端在執行任務線程中發生了線程停頓導致分布式鎖超期,而另外一個第二客戶端已獲得該分布式鎖,則第一客戶端在執行完線程后,會發現從緩存數據庫中查找到的第二上鎖信息中包含的客戶端標識是第二客戶端的標識(第二客戶端在獲得該分布式鎖后,與第一客戶端一樣,會向該緩存數據庫寫入該分布式鎖的上鎖信息,其中包含時間更晚的上鎖時間以及第二客戶端的標識,顯然第一客戶端查找到的第二上鎖信息為第二客戶端寫入的上鎖信息),此時第一客戶端會對任務線程相關的數據進行回滾,從而避免產生臟數據等問題。
    [0012]在本申請實施例的一種實現方式中,所述第一上鎖信息包含的上鎖時間可以通過以下方式確定:
    [0013]查詢所述緩存數據庫中是否已存在與所述分布式鎖對應的其它上鎖信息;
    [0014]若所述緩存數據庫中已存在與所述分布式鎖對應的其它上鎖信息,則查找所述其它上鎖信息中包含的最晚上鎖時間,并將所述最晚上鎖時間和指定時長之和確定為所述第一上鎖信息包含的上鎖時間;
    [0015]若所述緩存數據庫中不存在與所述分布式鎖對應的其它上鎖信息,則將所述第一客戶端當前的時鐘時間確定為所述第一上鎖信息包含的上鎖時間。
    [0016]在本申請實施例的一種實現方式中,所述對與所述任務線程相關的數據進行回滾,可以包括:
    [0017]接收由所述服務器集群發送的第二客戶端的優先級信息,所述第二客戶端為所述多個客戶端中與所述第二上鎖信息中包含的客戶端標識對應的客戶端;
    [0018]將所述第二客戶端的優先級信息和所述第一客戶端的優先級信息進行比較,得到所述第一客戶端和所述第二客戶端之間的優先級大小;
    [0019]若所述第一客戶端的優先級小于所述第二客戶端,則對與所述任務線程相關的數據進行回滾。
    [0020]進一步的,在得到所述第一客戶端和所述第二客戶端之間的優先級大小之后,還可以包括:
    [0021]若所述第一客戶端的優先級大于所述第二客戶端,則不執行對與所述任務線程相關的數據進行回滾的操作,并發送數據回滾指令至所述第二客戶端,所述數據回滾指令用于指示所述第二客戶端對其獲取所述分布式鎖期間執行操作的數據進行回滾。
    [0022]在本申請實施例的一種實現方式中,在從所述緩存數據庫存儲的所有上鎖信息中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息之后,還可以包括:
    [0023]若所述第二上鎖信息中包含的客戶端標識是所述第一客戶端的標識,則判斷與所述任務線程相關的數據是否為預定義的核心數據;
    [0024]若與所述任務線程相關的數據不是預定義的核心數據,則不執行對與所述任務線程相關的數據進行回滾的操作;
    [0025]若與所述任務線程相關的數據是預定義的核心數據,則在釋放所述分布式鎖的階段向所述服務器集群發送第一釋放鎖請求,所述第一釋放鎖請求用于指示所述服務器集群檢測所述分布式鎖是否仍在所述第一客戶端上,若所述分布式鎖仍在所述第一客戶端上則執行釋放鎖的流程,若所述分布式鎖不在所述第一客戶端上則返回第一異常信息至所述第一客戶端;
    [0026]在接收到所述第一異常信息之后,對與所述任務線程相關的數據進行回滾。
    [0027]在本申請實施例的一種實現方式中,在從所述緩存數據庫存儲的所有上鎖信息中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息之后,還可以包括:
    [0028]若所述第二上鎖信息中包含的客戶端標識是所述第一客戶端的標識,則獲取所述第一客戶端的性能數據;
    [0029]若所述性能數據不符合預設的數據回滾性能需求,則不執行對與所述任務線程相關的數據進行回滾的操作;
    [0030]若所述性能數據符合預設的數據回滾性能需求,則在釋放所述分布式鎖的階段向所述服務器集群發送第二釋放鎖請求,所述第二釋放鎖請求用于指示所述服務器集群檢測所述分布式鎖是否仍在所述第一客戶端上,若所述分布式鎖仍在所述第一客戶端上則執行釋放鎖的流程,若所述分布式鎖不在所述第一客戶端上則返回第二異常信息至所述第一客戶端;
    [0031]在接收到所述第二異常信息之后,對與所述任務線程相關的數據進行回滾。
    [0032]在本申請實施例的一種實現方式中,所述第一上鎖信息還包含所述分布式鎖的過期時間,在從所述緩存數本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    1.一種基于分布式鎖的數據回滾方法,應用于第一客戶端,所述第一客戶端為分布式系統具有的多個客戶端中的任意一個客戶端,其特征在于,所述方法包括:向所述分布式系統的服務器集群發送上鎖請求;在接收到由所述服務器集群基于所述上鎖請求返回的分布式鎖后,向指定的緩存數據庫寫入所述分布式鎖的第一上鎖信息,所述第一上鎖信息包含所述分布式鎖的標識、上鎖時間以及所述第一客戶端的標識;所述多個客戶端中的每個客戶端在接收到所述服務器集群分配的分布式鎖后,都會往所述緩存數據庫寫入相應的上鎖信息;在執行完與所述分布式鎖對應的任務線程之后,從所述緩存數據庫存儲的所有上鎖信息中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息;若所述第二上鎖信息中包含的客戶端標識不是所述第一客戶端的標識,則對與所述任務線程相關的數據進行回滾。2.如權利要求1所述的數據回滾方法,其特征在于,所述第一上鎖信息包含的上鎖時間通過以下方式確定:查詢所述緩存數據庫中是否已存在與所述分布式鎖對應的其它上鎖信息;若所述緩存數據庫中已存在與所述分布式鎖對應的其它上鎖信息,則查找所述其它上鎖信息中包含的最晚上鎖時間,并將所述最晚上鎖時間和指定時長之和確定為所述第一上鎖信息包含的上鎖時間;若所述緩存數據庫中不存在與所述分布式鎖對應的其它上鎖信息,則將所述第一客戶端當前的時鐘時間確定為所述第一上鎖信息包含的上鎖時間。3.如權利要求1所述的數據回滾方法,其特征在于,所述對與所述任務線程相關的數據進行回滾,包括:接收由所述服務器集群發送的第二客戶端的優先級信息,所述第二客戶端為所述多個客戶端中與所述第二上鎖信息中包含的客戶端標識對應的客戶端;將所述第二客戶端的優先級信息和所述第一客戶端的優先級信息進行比較,得到所述第一客戶端和所述第二客戶端之間的優先級大小;若所述第一客戶端的優先級小于所述第二客戶端,則對與所述任務線程相關的數據進行回滾。4.如權利要求3所述的數據回滾方法,其特征在于,在得到所述第一客戶端和所述第二客戶端之間的優先級大小之后,還包括:若所述第一客戶端的優先級大于所述第二客戶端,則不執行對與所述任務線程相關的數據進行回滾的操作,并發送數據回滾指令至所述第二客戶端,所述數據回滾指令用于指示所述第二客戶端對其獲取所述分布式鎖期間執行操作的數據進行回滾。5.如權利要求1所述的數據回滾方法,其特征在于,在從所述緩存數據庫存儲的所有上鎖信息中查找與所述分布式鎖對應且上鎖時間最晚的第二上鎖信息之后,還包括:若所述第二上鎖信息中包含的客戶端標識是所述第一客戶端的標識,則判斷與所述任務線程相關的數據是否為預定義的核心數據;若與所述任務線程相關的數據不是預定義的核心數據,則不執行對與所述任務線程相關的數據進行回滾的操作;若與所述任務線程相關的數據是預定義的核心數據,則在釋放所述分布式鎖的階段向
    所述服務器集群發送第一釋放鎖請求,所述第一釋放鎖請求用于指示所述服務器集群檢測所述分布式鎖是否仍在...

    【專利技術屬性】
    技術研發人員:王國濤
    申請(專利權)人:未鯤上海科技服務有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 久久老子午夜精品无码怎么打 | 国产精品亚洲专区无码WEB| 亚洲国产综合无码一区| 久久久久久国产精品免费无码| 人妻无码中文久久久久专区| 极品无码国模国产在线观看| 国产亚洲?V无码?V男人的天堂 | 无码播放一区二区三区| 精品人妻中文无码AV在线| 亚洲AV永久无码精品水牛影视| 精品久久久久久无码不卡| 久久久精品无码专区不卡| 亚洲精品中文字幕无码A片老| 中文有无人妻vs无码人妻激烈| 亚洲中文字幕久久精品无码VA| 亚洲午夜无码久久久久| 无码人妻少妇久久中文字幕 | 无码人妻精品一区二区三区蜜桃| 日韩成人无码影院| 亚洲人片在线观看天堂无码| 日韩AV无码久久一区二区| 国产在线观看无码免费视频| 日韩AV无码一区二区三区不卡 | 中文字幕无码人妻AAA片| 天堂一区人妻无码| 无码中文av有码中文av| 亚洲乱亚洲乱妇无码| 伊人天堂av无码av日韩av | 亚洲日韩精品无码专区加勒比 | 亚洲中文字幕无码mv| 色爱无码AV综合区| 日韩人妻无码中文字幕视频| 无码国产色欲XXXX视频 | 日韩精品无码一区二区三区免费| 国产羞羞的视频在线观看 国产一级无码视频在线 | 超清纯白嫩大学生无码网站| 影音先锋无码a∨男人资源站 | yy111111少妇影院无码| 亚洲 另类 无码 在线| 无码任你躁久久久久久久| 国产成人无码av片在线观看不卡|