在分布式系統中鎖定業務資源的系統和方法
【專利摘要】本發明提供了一種在分布式系統中鎖定業務資源的系統,包括:請求解析單元,用于解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式;鎖定執行單元,用于將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。本發明還提出了一種在分布式系統中鎖定業務資源的方法。通過本發明的技術方案,可以不依賴于單點服務器,使得在分布式系統中,有助于避免單點服務器的宕機導致業務鎖無法釋放或請求,從而提高了系統的效率和健壯性。
【專利說明】在分布式系統中鎖定業務資源的系統和方法
【技術領域】
[0001]本發明涉及數據處理【技術領域】,具體而言,涉及在分布式系統中鎖定業務資源的系統和相應的方法。
【背景技術】
[0002]在大并發環境下,必可避免存在并發操作同一資源的情況。如同時修改同一條檔案、同時申請新的單據號等等。如果僅靠數據庫的鎖機制,效率很低,并且會出現邏輯錯誤和誤覆蓋的情況。常用的做法是使用業務鎖,對資源按照業務需要進行鎖定,在一定程度上解決了這個問題。
[0003]然而在分布式環境中,必須使用單點的方式實現。隨著并發訪問量增加,對鎖的請求越來越大,單點服務器會成為瓶頸。更嚴重的問題是,單點服務器會因為壓力過大,不再響應甚至宕機,導致出現已存在的業務鎖不能釋放或者無法請求新的業務鎖的情況,嚴重影響業務。
[0004]因此,如何在分布式系統中實現更為高效的業務鎖功能,成為目前亟待解決的技術問題。
【發明內容】
[0005]本發明正是基于上述問題,提出了一種新的應用于分布式系統中的業務鎖技術,可以不依賴于單點服務器,使得在分布式系統中,有助于避免單點服務器的宕機導致業務鎖無法釋放或請求,從而提高了系統的效率和健壯性。
[0006]有鑒于此,本發明提出了一種在分布式系統中鎖定業務資源的系統,包括:請求解析單元,用于解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式;鎖定執行單元,用于將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
[0007]在該技術方案中,通過創建數據節點來作為業務鎖的承載節點,使得在分布式系統中,無需采用單點的方式,避免了由于單點服務器的宕機或不響應而導致的業務鎖無法釋放或無法申請,提升了系統的可靠性。
[0008]在上述技術方案中,優選地,還包括:第一判斷單元,用于判斷是否存在已建立的對應于所述業務資源的數據節點;其中,所述鎖定執行單元用于:在所述第一判斷單元的判斷結果為不存在時,新建所述數據節點,并執行對所述業務資源的鎖定操作;在所述第一判斷單元的判斷結果為存在時,若所述鎖定模式為排他鎖定、或所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為排他鎖定,則停止執行所述鎖定操作并返回,若所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為共享鎖定,則修改所述數據節點,以完成所述鎖定操作。
[0009]在該技術方案中,對業務鎖的類型分為了排他鎖定和共享鎖定,其中,排他鎖定使得同一時間內僅能夠由一個對象實現對相應業務資源的鎖定,共享鎖定則允許多個對象實現對相應業務資源的鎖定,從而有助于滿足不同對象對于業務的操作需求,避免在操作過程中發生邏輯錯誤、誤覆蓋等。而通過在申請業務資源的鎖定過程中,對是否已存在數據節點、業務鎖的類型等進行確認,也使得對業務資源的鎖定處理更準確,避免產生誤操作。
[0010]在上述任一技術方案中,優選地,還包括:分類處理單元,用于按照預設的隔離條件對建立的數據節點進行分類;隔離管理單元,用于對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
[0011]在該技術方案中,可以基于預設的隔離條件,對不同類型的數據節點進行隔離管理,有助于系統的穩定性和效率的提升。其中,隔離條件可以為系統默認預設的,也可以為用戶根據需求預設的,還可以由用戶實時設置或編輯,以滿足不同情況下的需求。
[0012]在上述任一技術方案中,優選地,所述請求解析單元還用于:解析接收到的解鎖請求,確定需要解除鎖定的業務資源;所述系統還包括:第二判斷單元,用于判斷是否存在對應于所述需要解除鎖定的業務資源的數據節點;解鎖執行單元,用于在所述第二判斷單元的判斷結果為存在時,若已存在的數據節點的鎖定模式為排他鎖,則直接刪除,若已存在的數據節點的鎖定模式為共享鎖,則在共享數目為零時,刪除所述已存在的數據節點。
[0013]在該技術方案中,通過在釋放業務鎖對應的業務資源時,對業務鎖的類型進行查看,避免了對于業務鎖對應的數據節點的任意刪除,有助于提升系統的穩定性和可靠性。
[0014]在上述任一技術方案中,優選地,還包括:節點管理單元,用于監控被鎖定的業務資源對應的業務節點的狀態,以實現對相應的數據節點的管理。
[0015]在該技術方案中,通過對業務節點進行狀態監控,并據此管理對應的數據節點(業務鎖的承載),從而可以根據業務資源的實時狀態的變化,實現對數據節點的生命周期的管理。比如業務節點所處的服務器發生宕機或不響應時,可以直接刪除相應的數據節點,從而避免相應的業務資源無法釋放或其他對象無法申請對該業務資源進行鎖定。
[0016]根據本發明的另一方面,還提出了一種在分布式系統中鎖定業務資源的方法,包括:步驟202,解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式;步驟204,將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
[0017]在該技術方案中,通過創建數據節點來作為業務鎖的承載節點,使得在分布式系統中,無需采用單點的方式,避免了由于單點服務器的宕機或不響應而導致的業務鎖無法釋放或無法申請,提升了系統的可靠性。
[0018]在上述技術方案中,優選地,所述步驟204還包括:判斷是否存在已建立的對應于所述業務資源的數據節點,當不存在時,新建所述數據節點,并執行對所述業務資源的鎖定操作;當存在時,若所述鎖定模式為排他鎖定、或所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為排他鎖定,則停止執行所述鎖定操作并返回,若所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為共享鎖定,則修改所述數據節點,以完成所述鎖定操作。
[0019]在該技術方案中,對業務鎖的類型分為了排他鎖定和共享鎖定,其中,排他鎖定使得同一時間內僅能夠由一個對象實現對相應業務資源的鎖定,共享鎖定則允許多個對象實現對相應業務資源的鎖定,從而有助于滿足不同對象對于業務的操作需求,避免在操作過程中發生邏輯錯誤、誤覆蓋等。而通過在申請業務資源的鎖定過程中,對是否已存在數據節點、業務鎖的類型等進行確認,也使得對業務資源的鎖定處理更準確,避免產生誤操作。
[0020]在上述任一技術方案中,優選地,還包括:按照預設的隔離條件對建立的數據節點進行分類;對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
[0021]在該技術方案中,可以基于預設的隔離條件,對不同類型的數據節點進行隔離管理,有助于系統的穩定性和效率的提升。其中,隔離條件可以為系統默認預設的,也可以為用戶根據需求預設的,還可以由用戶實時設置或編輯,以滿足不同情況下的需求。
[0022]在上述任一技術方案中,優選地,還包括:解析接收到的解鎖請求,確定需要解除鎖定的業務資源;判斷是否存在對應于所述需要解除鎖定的業務資源的數據節點,當存在時,若已存在的數據節點的鎖定模式為排他鎖,則直接刪除,若已存在的數據節點的鎖定模式為共享鎖,則在共享數目為零時,刪除所述已存在的數據節點。
[0023]在該技術方案中,通過在釋放業務鎖對應的業務資源時,對業務鎖的類型進行查看,避免了對于業務鎖對應的數據節點的任意刪除,有助于提升系統的穩定性和可靠性。
[0024]在上述任一技術方案中,優選地,還包括:監控被鎖定的業務資源對應的業務節點的狀態,以實現對相應的數據節點的管理。
[0025]在該技術方案中,通過對業務節點進行狀態監控,并據此管理對應的數據節點(業務鎖的承載),從而可以根據業務資源的實時狀態的變化,實現對數據節點的生命周期的管理。比如業務節點所處的服務器發生宕機或不響應時,可以直接刪除相應的數據節點,從而避免相應的業務資源無法釋放或其他對象無法申請對該業務資源進行鎖定。
[0026]通過以上技術方案,可以不依賴于單點服務器,使得在分布式系統中,有助于避免單點服務器的宕機導致業務鎖無法釋放或請求,從而提高了系統的效率和健壯性。
【專利附圖】
【附圖說明】
[0027]圖1示出了根據本發明的實施例的在分布式系統中鎖定業務資源的系統的示意框圖;
[0028]圖2示出了根據本發明的實施例的在分布式系統中鎖定業務資源的方法的流程示意圖;
[0029]圖3示出了根據本發明的實施例的數據節點的樹形結構示意圖;
[0030]圖4示出了根據本發明的實施例的添加業務鎖的流程示意圖;
[0031]圖5示出了根據本發明的實施例的解除業務鎖的流程示意圖;
[0032]圖6示出了根據本發明的實施例的管理業務鎖的系統的示意框圖。
【具體實施方式】
[0033]為了能夠更清楚地理解本發明的上述目的、特征和優點,下面結合附圖和【具體實施方式】對本發明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
[0034]在下面的描述中闡述了很多具體細節以便于充分理解本發明,但是,本發明還可以采用其他不同于在此描述的其他方式來實施,因此,本發明的保護范圍并不受下面公開的具體實施例的限制。[0035]圖1示出了根據本發明的實施例的在分布式系統中鎖定業務資源的系統的示意框圖。
[0036]如圖1所示,根據本發明的實施例的在分布式系統中鎖定業務資源的系統100,包括:請求解析單元102,用于解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式;鎖定執行單元104,用于將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
[0037]在該技術方案中,通過創建數據節點來作為業務鎖的承載節點,使得在分布式系統中,無需采用單點的方式,避免了由于單點服務器的宕機或不響應而導致的業務鎖無法釋放或無法申請,提升了系統的可靠性。
[0038]在上述技術方案中,優選地,還包括:第一判斷單元106,用于判斷是否存在已建立的對應于所述業務資源的數據節點;其中,所述鎖定執行單元104用于:在所述第一判斷單元106的判斷結果為不存在時,新建所述數據節點,并執行對所述業務資源的鎖定操作;在所述第一判斷單元106的判斷結果為存在時,若所述鎖定模式為排他鎖定、或所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為排他鎖定,則停止執行所述鎖定操作并返回,若所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為共享鎖定,則修改所述數據節點,以完成所述鎖定操作。
[0039]在該技術方案中,對業務鎖的類型分為了排他鎖定和共享鎖定,其中,排他鎖定使得同一時間內僅能夠由一個對象實現對相應業務資源的鎖定,共享鎖定則允許多個對象實現對相應業務資源的鎖定,從而有助于滿足不同對象對于業務的操作需求,避免在操作過程中發生邏輯錯誤、誤覆蓋等。而通過在申請業務資源的鎖定過程中,對是否已存在數據節點、業務鎖的類型等進行確認,也使得對業務資源的鎖定處理更準確,避免產生誤操作。
[0040]在上述任一技術方案中,優選地,還包括:分類處理單元108,用于按照預設的隔離條件對建立的數據節點進行分類;隔離管理單元110,用于對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
[0041]在該技術方案中,可以基于預設的隔離條件,對不同類型的數據節點進行隔離管理,有助于系統的穩定性和效率的提升。其中,隔離條件可以為系統默認預設的,也可以為用戶根據需求預設的,還可以由用戶實時設置或編輯,以滿足不同情況下的需求。
[0042]在上述任一技術方案中,優選地,所述請求解析單元102還用于:解析接收到的解鎖請求,確定需要解除鎖定的業務資源;所述系統100還包括:第二判斷單元112,用于判斷是否存在對應于所述需要解除鎖定的業務資源的數據節點;解鎖執行單元114,用于在所述第二判斷單元112的判斷結果為存在時,若已存在的數據節點的鎖定模式為排他鎖,則直接刪除,若已存在的數據節點的鎖定模式為共享鎖,則在共享數目為零時,刪除所述已存在的數據節點。
[0043]在該技術方案中,通過在釋放業務鎖對應的業務資源時,對業務鎖的類型進行查看,避免了對于業務鎖對應的數據節點的任意刪除,有助于提升系統的穩定性和可靠性。
[0044]在上述任一技術方案中,優選地,還包括:節點管理單元116,用于監控被鎖定的業務資源對應的業務節點的狀態,以實現對相應的數據節點的管理。
[0045]在該技術方案中,通過對業務節點進行狀態監控,并據此管理對應的數據節點(業務鎖的承載),從而可以根據業務資源的實時狀態的變化,實現對數據節點的生命周期的管理。比如業務節點所處的服務器發生宕機或不響應時,可以直接刪除相應的數據節點,從而避免相應的業務資源無法釋放或其他對象無法申請對該業務資源進行鎖定。
[0046]圖2示出了根據本發明的實施例的在分布式系統中鎖定業務資源的方法的流程示意圖。
[0047]如圖2所示,根據本發明的實施例的在分布式系統中鎖定業務資源的方法,包括:步驟202,解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式;步驟204,將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
[0048]在該技術方案中,通過創建數據節點來作為業務鎖的承載節點,使得在分布式系統中,無需采用單點的方式,避免了由于單點服務器的宕機或不響應而導致的業務鎖無法釋放或無法申請,提升了系統的可靠性。
[0049]圖3示出了根據本發明的實施例的數據節點的樹形結構示意圖。
[0050]如圖3所示,業務鎖(業務資源的鎖)對應的數據節點具體可以組織為樹形結構。根節點為LOCK節點,所有的鎖節點都在此節點下,按照不同的隔離條件進行隔離存放,比如隔離條件1、隔離條件2。而每個隔離條件下,對應連接有一個或多個具體的業務鎖的承
載節點,比如隔離條件I對應于1ckl節點、lock2節點......,隔離條件2對應于lock2節點等。
[0051]在上述任一技術方案中,優選地,還包括:按照預設的隔離條件對建立的數據節點進行分類;對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
[0052]在該技術方案中,可以基于預設的隔離條件,對不同類型的數據節點進行隔離管理,有助于系統的穩定性和效率的提升。其中,隔離條件可以為系統默認預設的,也可以為用戶根據需求預設的,還可以由用戶實時設置或編輯,以滿足不同情況下的需求。
[0053]其中,隔離條件可以根據業務需要而指定,因而在不同的隔離條件下,可以允許有相同的鎖(比如隔離條件I下的lock2節點和隔離條件2下的lock2節點)。鎖的遍歷從根節點LOCK開始,逐項遍歷子節點。
[0054]在每個鎖對應的數據節點(承載節點)中,每個鎖的結構內容如下表1所示:
[0055]
【權利要求】
1.一種在分布式系統中鎖定業務資源的系統,其特征在于,包括: 請求解析單元,用于解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式; 鎖定執行單元,用于將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
2.根據權利要求1所述的在分布式系統中鎖定業務資源的系統,其特征在于,還包括: 第一判斷單元,用于判斷是否存在已建立的對應于所述業務資源的數據節點; 其中,所述鎖定執行單元用于: 在所述第一判斷單元的判斷結果為不存在時,新建所述數據節點,并執行對所述業務資源的鎖定操作; 在所述第一判斷單元的判斷結果為存在時,若所述鎖定模式為排他鎖定、或所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為排他鎖定,則停止執行所述鎖定操作并返回,若所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為共享鎖定,則修改所述數據節點,以完成所述鎖定操作。
3.根據權利要求1所述的在分布式系統中鎖定業務資源的系統,其特征在于,還包括: 分類處理單元,用于按照預設的隔離條件對建立的數據節點進行分類; 隔離管理單元,用于對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
4.根據權利要求1所述的在分布式系統中鎖定業務資源的系統,其特征在于,所述請求解析單元還用于:解析接收到的解鎖請求,確定需要解除鎖定的業務資源; 所述系統還包括: 第二判斷單元,用于判斷是否存在對應于所述需要解除鎖定的業務資源的數據節點; 解鎖執行單元,用于在所述第二判斷單元的判斷結果為存在時,若已存在的數據節點的鎖定模式為排他鎖,則直接刪除,若已存在的數據節點的鎖定模式為共享鎖,則在共享數目為零時,刪除所述已存在的數據節點。
5.根據權利要求1至4中任一項所述的在分布式系統中鎖定業務資源的系統,其特征在于,還包括: 節點管理單元,用于監控被鎖定的業務資源對應的業務節點的狀態,以實現對相應的數據節點的管理。
6.—種在分布式系統中鎖定業務資源的方法,其特征在于,包括: 步驟202,解析接收到的業務資源鎖定請求,獲取鎖定信息,所述鎖定信息包括所述分布式系統中需要執行鎖定的業務資源和鎖定模式; 步驟204,將創建的數據節點作為鎖定所述業務資源的承載節點,并按照所述鎖定模式,對所述業務資源執行鎖定操作。
7.根據權利要求6所述的在分布式系統中鎖定業務資源的方法,其特征在于,所述步驟204還包括: 判斷是否存在已建立的對應于所述業務資源的數據節點,當不存在時,新建所述數據節點,并執行對所述業務資源的鎖定操作; 當存在時,若所述鎖定模式為排他鎖定、或所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為排他鎖定,則停止執行所述鎖定操作并返回,若所述鎖定模式為共享鎖定且已存在的數據節點的鎖定模式為共享鎖定,則修改所述數據節點,以完成所述鎖定操 作。
8.根據權利要求6所述的在分布式系統中鎖定業務資源的方法,其特征在于,還包括: 按照預設的隔離條件對建立的數據節點進行分類;對每種類型的數據節點進行隔離管理,且同一數據節點對應于一個或多個所述隔離條件。
9.根據權利要求6所述的在分布式系統中鎖定業務資源的方法,其特征在于,還包括: 解析接收到的解鎖請求,確定需要解除鎖定的業務資源; 判斷是否存在對應于所述需要解除鎖定的業務資源的數據節點,當存在時,若已存在的數據節點的鎖定模式為排他鎖,則直接刪除,若已存在的數據節點的鎖定模式為共享鎖,則在共享數目為零時,刪除所述已存在的數據節點。
10.根據權利要求6至9中任一項所述的在分布式系統中鎖定業務資源的方法,其特征在于,還包括:監控被鎖定的業務資源對應的業務節點的狀態,以實現對相應的數據節點的管理。
【文檔編號】G06F9/50GK103488526SQ201310392292
【公開日】2014年1月1日 申請日期:2013年9月2日 優先權日:2013年9月2日
【發明者】趙國濱 申請人:用友軟件股份有限公司