麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種云計算平臺上的分布式事務處理方法

文檔序號:7855194閱讀:310來源:國知局
專利名稱:一種云計算平臺上的分布式事務處理方法
技術領域
本發明涉及ー種分布式事務處理方法,尤其涉及一種云計算平臺上的分布式事務處理方法。
背景技術
廣義的云計算平臺是建立在海量數據云存儲之上,對數據進行建模、分析、存儲和計算等的綜合數據管理,對外提供云服務的分布式系統。整個系統在邏輯上可以劃分為數據存儲層和數據管理層,分布式事務處理屬于數據管理層的范圍。相比于傳統的關系數據庫,云計算平臺下的海量數據存儲層一般采用了 NoSQL數據倉庫,它們具有容錯性、高可用性和高可擴展的特性,比如Google的BigTable、Yahoo !的PNUTS以及Facebook和Twitter使用的Cassandra等。
NoSQL數據倉庫大多采用了簡單的鍵-值模型,每條數據項通過唯一的鍵進行標識,不同的數據項可能位于同一個節點或者不同的節點,通過諸如局域網之類的網絡彼此連接。一個事務需要訪問和更新分散在不同節點上的多個數據項,并且不同用戶能夠并發執行事務請求,無論平臺是否發生故障(例如供電中斷、軟硬件故障等),都必須滿足事務的以下特性原子性(事務要么成功執行所有操作,要么沒有任何操作被執行)、一致性(數據庫只能從ー個一致性狀態轉換到另ー個一致性狀態)、隔離性(一個事務的執行不被其他事務干擾)和持久性(一個事務一旦成功完成,它對數據庫的改變就是永久性的)。云計算平臺下的NoSQL數據倉庫通過分布式文件系統確保數據的穩定存儲,提供了基于鍵的單行數據項的原子性保證。對于多鍵的分布式事務請求,數據管理層需要實現事務處理方法。分布式系統通常采用兩階段提交(2PC)協議來實現事務的原子性和一致性。兩階段提交協議中節點角色分為協調者和參與者。每個事務的協調者節點,是在客戶端(或應用程序)發起事務操作后,負責事務的啟動、執行和提交的節點。持有事務請求數據的節點被稱為參與者節點,邏輯上一個事務內不同的數據項持有者視為不同的參與者,但在物理上他們可能位于同一個節點。傳統的兩階段提交協議存在如下的缺點I、兩階段提交協議的日志寫入操作是頻繁的。為保證事務的原子性,在協議執行過程中,協調者和參與者都需要在本地進行強制日志寫入操作。在有η個參與者和I個協調者的系統中,執行一次兩階段提交協議,需要進行2η+1次強制的日志寫入操作。2、兩階段提交協議無法解決ー個阻塞問題。在網絡環境不佳的情況下,由于節點故障導致參與者被阻塞,直到發生故障的節點恢復,這種問題被稱為阻塞問題。由于參與者持有資源被阻塞,進而容易弓I發更多的事務無法成功執行。目前的技術主要支持単行操作的原子性保證,對于分布式的多鍵事務處理,現有技術要么對數據進行特殊劃分,限制多行事務在ー個特定的范圍內,要么采用2PC實現分布式事務,尋求優化的協議實現。現有技術并沒有充分考慮在云計算平臺下,多種異常或故障發生時分布式事務的高效管理。因此需要一種比現有的技術更有效的分布式事務處理方法。

發明內容
本發明的目的在于針對目前分布式事務方法的欠缺,提出一種基于云計算平臺的分布式事務處理方法,本發明為當前云計算平臺的數據管理層提供跨行的分布式事務保證。本發明是通過以下技術方案來實現的一種云計算平臺上的分布式事務處理方法,包括以下步驟(I)在數據存儲集群中啟動云計算平臺的基礎服務,用來存儲數據以及提供分布 式的協調服務,在數據管理集群的各節點上啟動事務處理的服務例程,用來管理用戶發起的事務請求;(2)客戶端通過RPC連接到某一臺固定的數據管理服務節點,首先請求開始ー個新的事務,局部事務管理器接受請求,實例化一個事務對象并分配ー個全局唯一的標識符發送給客戶端,在事務的整個生命周期內通過該事務對象管理該事務的執行;(3)客戶端向局部事務管理器發起事務的數據操作請求;局部事務管理器根據客戶端擁有的事務ID,將請求發送到對應的事務對象,如果該請求是事務的第一個操作,則將該操作的主鍵設為事務的主鎖;否則,直接進入事務對象的處理流程;該步驟由以下子步驟來實現(3. I)事務對象首先通過鎖管理器查詢鎖表,如果該數據項沒有被其他事務加鎖,則將鎖的結構信息寫入該數據項對應的鎖記錄行,加鎖成功;進入步驟(3. 4);(3. 2)如果該數據項正在被其他事務占用,則嘗試加鎖失敗,讀取相應的鎖信息;如果鎖沒有超吋,則選擇設定次數的嘗試加鎖操作;否則發送消息通知全局事務管理器對超時鎖對應的事務進行恢復處理;(3. 3)如果最終加鎖失敗,則局部事務管理器釋放所有已經獲得的鎖,宣布該事務的操作的最終決定為abort,停止事務對象的lease管理器,然后釋放事務對象管理的資源;如果最終加鎖成功,則進入步驟(3. 4);(3. 4)加鎖成功時,根據數據操作的類型,進行相應的數據讀取和日志緩存與合并操作,等待處理客戶端的下一條請求,對于數據操作請求,則重復步驟(3);對客戶的提交事務請求命令,則進入步驟(4);(4)客戶端向局部事務管理器發起提交事務命令,局部管理器負責對事務進行提交;該步驟由以下子步驟來實現(4. I)事務對象將緩存的寫操作集合中的操作日志封裝為一條事務日志消息,強制寫入穩定存儲器中;如果日志被成功寫入,則該事務執行成功,向客戶端返回事務操作成功;如果日志寫入失敗,則返回事務失敗;(4. 2)成功寫入日志后,異步更新數據并將該事務涉及的鎖釋放;否則只用釋放所有的鎖資源。 進ー步地,所述步驟(I)中,所述的基礎服務包括基于鍵-值的NoSQL數據存儲和分布式的協調服務器;所述的事務處理的服務例程包括每個數據管理集群節點上啟動的局部事務管理器、每個節點上啟動數據訪問操作接ロ、鎖表和事務日志表操作接ロ、某個節點上的全局事務管理器;所述的局部事務管理器包括分布式鎖管理器和事務日志管理器;所述的全局事務管理器包括鎖掃描器和恢復管理器。進ー步地,所述步驟(2)中,所述的事務對象管理的內容有事務ID、事務的主鎖、事務的讀操作集合、事務寫操作集合、事務當前操作的計數i、事務對象的lease管理器。進ー步地,所述步驟(3)中,所述的客戶端發出的數據操作請求包括數據項所在行的主鍵、操作的類型(插入、讀取、更新或刪除)、操作的內容以及所屬的事務。其中,對于操作的內容,如果是讀取操作,則為需要讀的列名;如果是插入或更新操作,則為所要操作的列和對應列的值;如果是刪除操作,則該域為空。進ー步地,所述步驟(3)中,所述的鎖結構信息包括數據項的主鍵、事務ID、鎖有效的起始時間戮、鎖超時的時間片、寒務的主鎖。進ー步地,所述步驟(3. 3)中,所述的lease管理器的工作方法為在局部事務管 理器通過事務對象對第一個數據項加鎖成功后,由事務對象啟動,每隔一段設定的時間,獲取本地的時間戳,用它更新所有已獲得對象所在鎖表中的鎖有效的起始時間戳,從而保證正在執行的事務能夠在結束前持續擁有數據操作的權利,直到事務的最終決定被確定,lease管理器才停止工作。進ー步地,所述步驟(3. 4)中,所述事務對象根據操作類型進行的處理方法為(a)如果該操作是讀類型且在該事務內未出現的行操作,則根據數據訪問接ロ從數據庫中讀取整條記錄并緩存到事務對象的讀操作集合中,同時根據請求返回相應域的內容;(b)如果該操作是讀類型且僅在事務對象的讀操作集合中出現過,則從緩存的讀集合中取出相應記錄,根據請求返回相應域的內容;(C)如果該操作是讀類型且在事務對象的寫操作集合中出現過,若讀集合中不存在,則從數據庫中讀取整條記錄并緩存到讀操作集合中,若存在,則直接取出整條記錄,最后用寫操作集合中的新值進行部分替換合井,返回合并后的值;(d)如果該操作是寫類型(包括插入、更新和刪除)且在該事務內未出現的行操作,將其寫入緩存的操作日志的寫操作集合中;(e)如果該操作是寫類型且在事務對象的寫操作集合中出現過,則將原來緩存的部分屬性對應的新值進行替換合井,將合并后的結果緩存在操作日志的寫操作集合中。本發明的有益效果是I、在NoSQL數據存儲提供的服務之上,在事務執行過程中,將客戶端提交的操作緩存在單個服務節點上,只需要顯式地管理協調者日志以及將所有操作組合為一條事務日志,減少了兩階段提交中強制寫入日志的次數,降低了磁盤寫操作的開銷;2、對于事務內的每條操作,在緩存日志的基礎上,通過合并相同數據項上操作內容,減少了單條事務日志的大小,降低了網絡傳輸的開銷;3、通過鎖結構中的主鎖信息以及lease管理,有效地解決了兩階段提交協議中的阻塞問題,同時控制事務執行的嚴格流程,通過前向回滾和后向回滾的恢復策略解決了事務執行過程中各種異常情況,維護了數據的一致性。


圖I是整個事務處理方法的系統結構框圖;圖2是本發明使用的事務提交協議流程圖;圖3全局事務管理器的啟動和工作流程圖。
具體實施例方式本發明云計算平臺上的分布式事務處理方法,包括以下步驟I、在數據存儲集群中啟動云計算平臺的基礎服務,用來存儲數據以及提供分布式的協調服務,在數據管理集群的各節點上啟動事務處理的服務例程,用來管理用戶發起的事務請求。所述的基礎服務包括基于鍵-值的NoSQL數據存儲,比如Hadoop的分布式文件系統HDFS和分布式數據庫HBase,或者其他同類服務如Cassandra等,以及分布式的協調服務器,比如Zooke印er等。所述的事務處理的服務例程包括每個數據管理集群節點上啟動的 局部事務管理器(TransactionManager);姆個節點上啟動數據訪問操作接ロ,鎖表和事務日志表操作接ロ ;某個節點上的全局事務管理器(TransactionMaster)。所述的局部事務管理器包括分布式鎖管理器LockManager和事務日志管理器LogManager ;所述的全局事務管理器包括鎖掃描器LockScanner和恢復管理器RecoveryHandler02、客戶端通過RPC連接到某一臺固定的數據管理服務節點,首先請求開始ー個新的事務,局部事務管理器接受請求,實例化一個事務對象并分配ー個全局唯一的標識符(事務ID)發送給客戶端,在事務的整個生命周期內通過該事務對象管理該事務的執行。所述的事務對象管理的內容有事務ID、事務的主鎖、事務的讀操作集合、事務寫操作集合、事務當前操作的計數i、事務對象的lease管理器。所述的事務標識符的分配方法是局部事務管理器訪問日志表中単獨的事務ID分配単元,該單元維護了一個計數器,記錄了系統當前已經分配使用的編號,對該單元進行遞增并返回操作完成后的值,將該編號加上事務前綴標識符(如“ T”)構成事務ID。因為該事務ID分配單元是全局可見且遞增操作是原子性的,從而保證了事務ID的全局唯一性。事務ID分配表的格式如下表所示
rowkey countertid ■ 68 -3、客戶端向局部事務管理器發起事務的數據操作請求。局部事務管理器根據客戶端擁有的事務ID,將請求發送到對應的事務對象,如果該請求是事務的第一個操作,則將該操作的主鍵設為事務的主鎖;否則,直接進入事務對象的處理流程。該步驟由以下子步驟來實現。3. I、事務對象首先通過鎖管理器查詢鎖表,如果該數據項沒有被其他事務加鎖,則將鎖的結構信息寫入該數據項對應的鎖記錄行,加鎖成功。進入步驟3. 4。3. 2、如果該數據項正在被其他事務占用,則嘗試加鎖失敗,讀取相應的鎖信息。如果鎖沒有超吋,則選擇設定次數的嘗試加鎖操作;否則發送消息通知全局事務管理器對超時鎖對應的事務進行恢復處理。3. 3、如果最終加鎖失敗,則局部事務管理器釋放所有已經獲得的鎖,宣布該事務的操作的最終決定為abort,停止事務對象的lease管理器,然后釋放事務對象管理的資源;如果最終加鎖成功,則進入步驟3. 4。3. 4、加鎖成功時,根據數據操作的類型,進行相應的數據讀取和日志緩存與合并操作,等待處理客戶端的下一條請求,對于數據操作請求,則重復步驟3 ;對客戶的提交事務請求命令,則進入步驟4。所述的lease管理器的工作方法為在局部事務管理器通過事務對象對第一個數據項加鎖成功后,由事務對象啟動,每隔一段設定的時間,獲取本地的時間戳,用它更新所有已獲得對象所在鎖表中的鎖有效的起始時間戳,從而保證正在執行的事務能夠在結束前持續擁有數據操作的權利,直到事務的最終決定被確定,lease管理器才停止工作。
所述事務對象根據操作類型進行的處理方法為a、如果該操作是讀類型且在該事務內未出現的行操作,則根據數據訪問接ロ從數據庫中讀取整條記錄并緩存到事務對象的讀操作集合中,同時根據請求返回相應域的內容。b、如果該操作是讀類型且僅在事務對象的讀操作集合中出現過,則從緩存的讀集合中取出相應記錄,根據請求返回相應域的內容。C、如果該操作是讀類型且在事務對象的寫操作集合中出現過,若讀集合中不存在,則從數據庫中讀取整條記錄并緩存到讀操作集合中,若存在,則直接取出整條記錄,最后用寫操作集合中的新值進行部分替換合并,返回合并后的值。d、如果該操作是寫類型(包括插入、更新和刪除)且在該事務內未出現的行操作,將其寫入緩存的操作日志的寫操作集合中。e、如果該操作是寫類型且在事務對象的寫操作集合中出現過,則將原來緩存的部分屬性對應的新值進行替換合井,將合并后的結果緩存在操作日志的寫操作集合中。所述的客戶端發出的數據操作請求包括數據項所在行的主鍵、操作的類型(插入、讀取、更新或刪除)、操作的內容以及所屬的事務。其中,對于操作的內容,如果是讀取操作,則為需要讀的列名;如果是插入或更新操作,則為所要操作的列和對應列的值;如果是刪除操作,則該域為空。請求的格式如下表所示
權利要求
1.一種云計算平臺上的分布式事務處理方法,其特征在于,包括以下步驟 (1)在數據存儲集群中啟動云計算平臺的基礎服務,用來存儲數據以及提供分布式的協調服務,在數據管理集群的各節點上啟動事務處理的服務例程,用來管理用戶發起的事務請求; (2)客戶端通過RPC連接到某一臺固定的數據管理服務節點,首先請求開始ー個新的事務,局部事務管理器接受請求,實例化一個事務對象并分配ー個全局唯一的標識符發送給客戶端,在事務的整個生命周期內通過該事務對象管理該事務的執行; (3)客戶端向局部事務管理器發起事務的數據操作請求;局部事務管理器根據客戶端擁有的事務ID,將請求發送到對應的事務對象,如果該請求是事務的第一個操作,則將該操作的主鍵設為事務的主鎖;否則,直接進入事務對象的處理流程;該步驟由以下子步驟來實現 (3. I)事務對象首先通過鎖管理器查詢鎖表,如果該數據項沒有被其他事務加鎖,則將鎖的結構信息寫入該數據項對應的鎖記錄行,加鎖成功;進入步驟(3. 4); (3. 2)如果該數據項正在被其他事務占用,則嘗試加鎖失敗,讀取相應的鎖信息;如果鎖沒有超吋,則選擇設定次數的嘗試加鎖操作;否則發送消息通知全局事務管理器對超時鎖對應的事務進行恢復處理; (3. 3)如果最終加鎖失敗,則局部事務管理器釋放所有已經獲得的鎖,宣布該事務的操作的最終決定為abort,停止事務對象的lease管理器,然后釋放事務對象管理的資源;如果最終加鎖成功,則進入步驟(3. 4); (3. 4)加鎖成功時,根據數據操作的類型,進行相應的數據讀取和日志緩存與合并操作,等待處理客戶端的下一條請求,對于數據操作請求,則重復步驟(3);對客戶的提交事務請求命令,則進入步驟(4); (4)客戶端向局部事務管理器發起提交事務命令,局部管理器負責對事務進行提交;該步驟由以下子步驟來實現 (4. I)事務對象將緩存的寫操作集合中的操作日志封裝為一條事務日志消息,強制寫入穩定存儲器中;如果日志被成功寫入,則該事務執行成功,向客戶端返回事務操作成功;如果日志寫入失敗,則返回事務失敗; (4. 2)成功寫入日志后,異步更新數據并將該事務涉及的鎖釋放;否則只用釋放所有的鎖資源。
2.根據權利要求I所述云計算平臺上的分布式事務處理方法,其特征在于,所述步驟(1)中,所述的基礎服務包括基于鍵-值的NoSQL數據存儲和分布式的協調服務器;所述的事務處理的服務例程包括每個數據管理集群節點上啟動的局部事務管理器、每個節點上啟動數據訪問操作接ロ、鎖表和事務日志表操作接ロ、某個節點上的全局事務管理器;所述的局部事務管理器包括分布式鎖管理器和事務日志管理器;所述的全局事務管理器包括鎖掃描器和恢復管理器。
3.根據權利要求I所述云計算平臺上的分布式事務處理方法,其特征在于,所述步驟(2)中,所述的事務對象管理的內容有事務ID、事務的主鎖、事務的讀操作集合、事務寫操作集合、事務當前操作的計數i、事務對象的lease管理器。
4.根據權利要求I所述云計算平臺上的分布式事務處理方法,其特征在于,所述步驟(3)中,所述的客戶端發出的數據操作請求包括數據項所在行的主鍵、操作的類型(插入、讀取、更新或刪除)、操作的內容以及所屬的事務;所述的鎖結構信息包括數據項的主鍵、寒務ID、鎖有效的起始時間戮、鎖超時的時間片、寒務的主鎖。
5.根據權利要求I所述云計算平臺上的分布式事務處理方法,其特征在于,所述步驟(3.4)中,所述事務對象根據操作類型進行的處理方法為 (a)如果該操作是讀類型且在該事務內未出現的行操作,則根據數據訪問接ロ從數據庫中讀取整條記錄并緩存到事務對象的讀操作集合中,同時根據請求返回相應域的內容; (b)如果該操作是讀類型且僅在事務對象的讀操作集合中出現過,則從緩存的讀集合中取出相應記錄,根據請求返回相應域的內容; (C)如果該操作是讀類型且在事務對象的寫操作集合中出現過,若讀集合中不存在,則從數據庫中讀取整條記錄并緩存到讀操作集合中,若存在,則直接取出整條記錄,最后用寫操作集合中的新值進行部分替換合并,返回合并后的值; (d)如果該操作是寫類型(包括插入、更新和刪除)且在該事務內未出現的行操作,將其寫入緩存的操作日志的寫操作集合中; (e)如果該操作是寫類型且在事務對象的寫操作集合中出現過,則將原來緩存的部分屬性對應的新值進行替換合井,將合并后的結果緩存在操作日志的寫操作集合中。
全文摘要
本發明公開了一種云計算平臺上的分布式事務處理方法,該方法首先在云計算平臺的數據存儲集群中啟動基礎服務,在數據管理集群的節點上啟動事務處理的服務;客戶端通過RPC連接到數據管理服務節點,請求開始一個新的事務,局部事務管理器接受請求,實例化一個事務對象并分配一個事務標識符發送給客戶端;客戶端發起事務的數據操作請求,局部事務管理器根據客戶端擁有的事務標識符,將請求發送到對應的事務對象進行處理;客戶端發起提交事務命令,局部管理器負責對事務進行提交。本發明在云計算平臺之上,通過緩存與合并事務日志,減少了事務日志的大小和日志操作次數;主鎖和lease管理解決了阻塞問題;恢復策略處理故障情況,維護了數據的一致性。
文檔編號H04L29/08GK102831156SQ20121022811
公開日2012年12月19日 申請日期2012年6月29日 優先權日2012年6月29日
發明者魯偉明, 王耀光 申請人:浙江大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 板桥市| 邵阳县| 托克逊县| 怀仁县| 江永县| 诏安县| 铜梁县| 泸水县| 八宿县| 田林县| 微山县| 富川| 承德县| 灌阳县| 西城区| 灵丘县| 翁牛特旗| 横山县| 和静县| 万荣县| 班戈县| 清丰县| 辽源市| 莎车县| 罗城| 通山县| 武强县| 象山县| 武定县| 浮梁县| 衡东县| 慈利县| 建始县| 商城县| 尉氏县| 宜章县| 平度市| 衡阳市| 临潭县| 称多县| 临沧市|