TWI421677B - 伺服器集群的事務處理方法 - Google Patents
伺服器集群的事務處理方法 Download PDFInfo
- Publication number
- TWI421677B TWI421677B TW99141712A TW99141712A TWI421677B TW I421677 B TWI421677 B TW I421677B TW 99141712 A TW99141712 A TW 99141712A TW 99141712 A TW99141712 A TW 99141712A TW I421677 B TWI421677 B TW I421677B
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- server
- node
- action
- database
- Prior art date
Links
Description
本發明係關於一種伺服器集群的事務處理方法,特別是一種整合伺服器集群之所有的節點伺服器進行事務處理的方法。
伺服器集群(cluster)的技術是對外提供統一的服務介面(service),並由多個伺服器(server)協調工作,其中每一個伺服器被稱為集群的一個節點(node)。外部的發起者(sponsor)需要集群進行各種稱為「事務(transaction)」的操作,而這種集群中的操作往往需要由多個節點參與才能完成。一個事務可能包含多個步驟(step),且每個步驟可能需要不同的節點負責完成。例如一個事務可能要求將一個資源(resource)在節點之間進行遷移(migrate),則這個事務可能會有「發起事務」、「放棄對指定資源的控制」、「接管指定資源」以及「結束事務」等步驟。
由於事務發生在多個節點上,需要解決節點間資訊傳遞的問題。傳統上負責第一個步驟的節點執行完畢後,需要將剩餘的步驟的資料傳送給負責下一個步驟的節點。一旦某次節點之間傳遞的資訊有所缺漏,就會造成後續的步驟無法執行或是執行失敗。因此習知的節點運作方式以及資訊傳遞方式並不可靠。
且在現實情況中會有各種意外情況發生,因此每一個步驟都
有失敗的可能。然而由於傳統的做法上各節點都是獨立運作,因此節點之間無法得知彼此執行的狀況。如此一來,便無法得知整個事務的執行狀況;甚至在發生錯誤時,連是哪一個節點執行失敗都不知道。也就是說,習知的做法具有難以掌控事務的執行情況,以及缺乏甚至是難以執行異常處理的缺點。
為了解決上述問題,在此提出一種伺服器集群(cluster)的事務(transaction)處理方法,其適用於利用具有多個節點(node)伺服器的一伺服器集群處理一事務。伺服器集群的事務處理方法包括:接收從一發起者(sponsor)發出之事務,其中事務包括至少一事務步驟(step);將事務的一事務訊息儲存於一資料庫,其中事務訊息包括所有事務的事務步驟;通知至少一個節點伺服器的一動作服務(action service)程序,依序執行儲存於資料庫中的事務步驟;以及回報事務的一事務執行結果給發起者,以結束事務。
事務訊息可包括每一個事務步驟對應的一節點伺服器代號。且每一個節點伺服器代號個別對應於節點伺服器之一。而「通知至少一個節點伺服器的一動作服務程序,依序執行儲存於資料庫中的事務步驟」的步驟可包括:由資料庫依序讀取事務訊息中彼此對應的事務步驟以及節點伺服器代號;以及通知與事務步驟對應的節點伺服器的動作服務程序的一動作服務接口,令動作服務程序執行對應的事務步驟。
其中動作服務程序包括:讀取事務訊息的一事務本文(context,又稱為上下文)、對應的事務步驟的一動作參數;依據讀取的事
務本文以及動作參數執行事務步驟;以及將對應的事務步驟的一目前執行狀態回傳給事務服務程序,並將目前執行狀態寫入資料庫的事務訊息。
根據一實施範例,伺服器集群的事務處理方法另可包括:當事務服務程序接收到失敗的目前執行狀態時,執行一異常處理程序,異常處理程序包括:由最後一個成功的事務步驟開始到第一個事務步驟為止,依序對已經執行過的事務步驟執行反動作(anti-action),以將伺服器集群回復到執行事務之前的狀態。
上述之伺服器集群的事務處理方法可以由一事務服務(transaction server)程序執行。事務服務程序可以配置於伺服器集群的節點伺服器之一;亦可配置於一管理伺服器,且管理伺服器不屬於伺服器集群。
事務服務程序可透過一統一的事務服務接口(interface)接收事務。而統一的事務服務接口可以是一固定的接口位址(socket address)或是一應用程式介面(application program interface,API)。
綜上所述,事務服務程序統整所有節點伺服器的動作服務程序以執行事務步驟,並了解事務的所有事務步驟的運作狀況。因此節點伺服器之間不需要進行多餘的資料傳遞動作,事務服務程序亦能夠即時發現執行失敗等異常,並執行異常處理程序。
10‧‧‧伺服器集群
12‧‧‧節點伺服器
14‧‧‧動作服務程序
142‧‧‧動作服務接口
144‧‧‧執行動作程序
20‧‧‧管理伺服器
22‧‧‧事務服務程序
221‧‧‧統一的事務服務接口
222‧‧‧資料庫
223‧‧‧執行程序
224‧‧‧通信程序
225‧‧‧異常處理程序
30‧‧‧發起者
第1A圖係為一實施範例之伺服器集群之示意圖。
第1B圖係為另一實施範例之伺服器集群之示意圖。
第2圖係為一實施範例之事務服務程序之示意圖。
第3圖係為一實施範例之動作服務程序之示意圖。
第4圖係為一實施範例之伺服器集群的事務處理方法之流程圖。
第5圖係為一實施範例之動作服務程序之流程圖。
以下在實施方式中詳細敘述本發明之詳細特徵以及優點,其內容足以使任何熟習相關技藝者了解本發明之技術內容並據以實施,且根據本說明書所揭露之內容、申請專利範圍及圖式,任何熟習相關技藝者可輕易地理解本發明相關之目的及優點。
本發明係關於一種伺服器集群(cluster)的事務(transaction)處理方法,其適用於利用具有多個節點(node)伺服器的一伺服器集群處理一事務。
請參照「第1A圖」以及「第1B圖」,其分別為不同實施範例之伺服器集群之示意圖。伺服器集群的事務處理方法可由一事務服務(transaction service)程序22執行。事務服務程序22可配置於不屬於伺服器集群10的一管理伺服器20之中,如「第1A圖」所示。事務服務程序22亦可配置於伺服器集群10的任一節點伺服器12之中,如「第1B圖」所示。此外,各個節點伺服器12都個別具有一動作服務(action service)程序14,以配合事務服務程序22執行事務。
接著請搭配「第2圖」以及「第3圖」一同參照「第4圖」。「第2圖」以及「第3圖」分別為基於「第1A圖」之實施範例的事務服務程序以及動作服務程序之示意圖。「第4圖」係為一實施範例之伺服器集群
的事務處理方法之流程圖。
事務服務程序22接收從一發起者(sponsor)30發出之事務,其中事務包括至少一事務步驟(step)(步驟S110)。為了整合整個執行事務的流程以及系統,事務服務程序22可透過一統一的事務服務接口(interface)221接收事務。而統一的事務服務接口221可以是一固定的接口位址(socket address)或是一應用程式介面(application program interface,API)。其中固定的接口位址包括事務服務程序22所在的管理伺服器20或節點伺服器12的一對網際網路位址(Internet protocol address,IP address)以及連接埠(port)。多個不同的發起者30均可由統一的事務服務接口221發出要求伺服器集群10執行的事務。
事務服務程序22將收到的事務的一事務訊息儲存於一資料庫222,其中事務訊息包括事務的所有事務步驟(步驟S120)。而事務訊息可包括每一個事務步驟對應的一節點伺服器代號,且這些節點伺服器代號個別對應於伺服器集群10中的所有節點伺服器12。
舉例而言,事務步驟可以以下「表1」的方式被儲存於資料庫222。
根據一實施範例,發起者30可在發出的事務中詳述所有的事務步驟的內容。
根據另一實施範例,資料庫222中可預存所有能提供的(也就是在伺服器集群10中能被執行的)事務步驟的名稱以及內容,類似以API的方式提供給發起者30。則發起者30僅需在發出的事務中記載事務的名稱及執行此事務所需的必要參書,而不需詳述事務步驟的內容。
事務服務程序22接著通知至少一個節點伺服器12的動作服務程序14,依序執行儲存於資料庫222中的事務步驟(步驟S130)。事務服務程序22可包括一執行程序223,以依序分派對應的節點伺服器12去執行事務步驟。且執行程序223可透過一通信程序224下達指令以及執行事務步驟所需的資訊給各個節點伺服器12,節點伺服器12亦可透過通信程序224對事務服務程序22進行回報。也就是說,事務服務程序22類似一個中央控管中心,統馭並分發事務步驟給動作服務程序14處理。
且步驟S130可包括下述步驟:由資料庫222依序讀取事務訊息中彼此對應的事務步驟以及節點伺服器代號;以及通知與事務步驟對應的節點伺服器12的動作服務程序14的一動作服務接口142,令動作服務程序14執行對應的事務步驟。於「第3圖」之實施範例,每一個動作服務程序14都有一個動作服務接口142以及一執行動作程序144,其中動作服務接口142可以例如是以API得方式實作。
請參照「第5圖」,其係為一實施範例之動作服務程序之流程圖。動作服務程序14透過動作服務接口142接收到執行事務步驟的要求之後,可依此來處理此事務步驟。
動作服務程序14先讀取事務訊息的一事務本文(context,又稱為上下文)以及對應的事務步驟的一動作參數(步驟S210)。其中事務本文可包括事務目前已完成的階段之記錄,例如已完成的事務步驟的清單。事務本文亦可包括此事務的當前狀態和共享資源等等與事務相關的資訊。而動作參數則包括執行此事務步驟所需的必要資訊。例如當事務步驟是要遷移(migrate)一個資源(resource)時,動作參數可以例如是需要遷移的資源的名稱或是來源端儲存路徑,以及遷移的目的地端儲存路徑。
動作服務程序14依據讀取的事務本文以及動作參數執行事務步驟(步驟S220);以及將對應的事務步驟的一目前執行狀態回傳給事務服務程序22的執行程序223,並將目前執行狀態寫入資料庫222(步驟S230)。目前執行狀態可以僅簡單的回覆「成功」或是「失敗」;亦可在失敗時加註失敗的相關訊息。
而事務服務程序22再依據對應每一個事務步驟所收到的目前執行狀態,回報事務的一事務執行結果給發起者30,以結束事務(步驟S140)。
以成功執行「表1」的事務步驟為例,處理的順序如下。
事務服務程序22透過統一的事務服務接口221接收到發起者30發送的事務,而將事務訊息儲存於資料庫222。執行程序223查詢資料庫222中的事務訊息,令節點伺服器代號為「Node-A」的節點伺服器12
執行內容為「put_resource(R)」之事務步驟。節點伺服器代號為「Node-A」的節點伺服器12執行後,回傳值為「成功」的目前執行狀態給執行程序223並將目前執行狀態寫入資料庫222。執行程序223再度查詢資料庫222中的事務訊息,得知下一個事務步驟所對應的節點伺服器代號為「Node-B」。故執行程序223令節點伺服器代號為「Node-B」的節點伺服器12執行內容為「get_resource(R)」之事務步驟。節點伺服器代號為「Node-B」的節點伺服器12執行後,亦回傳值為「成功」的目前執行狀態給執行程序223並將目前執行狀態寫入資料庫222。執行程序223查詢資料庫222的事務訊息得知已經沒有需要節點伺服器12執行的事務步驟後,將值為「成功」的事務執行結果給發起者30,以結束此事務。
事務服務程序22亦可包括一異常處理程序225,以處理目前執行狀態為「失敗」的情況。當事務服務程序22的執行程序223接收到值為「失敗」的目前執行狀態時,可觸發並執行異常處理程序225。異常處理程序225則可由最後一個成功的事務步驟開始到第一個事務步驟為止,依序對已經執行過的事務步驟執行反動作(anti-action),以將伺服器集群10回復到執行事務之前的狀態。
以「表1」中事務步驟編號3之事務步驟失敗的情況為例,處理的順序如下。
事務服務程序22透過統一的事務服務接口221接收到發起者30發送的事務,而將事務訊息儲存於資料庫222。執行程序223查詢資料庫222中的事務訊息,令節點伺服器代號為「Node-A」的節點伺服器12執行內容為「put_resource(R)」之事務步驟。節點伺服器代號為「Node-A」
的節點伺服器12執行後,回傳值為「成功」的目前執行狀態給執行程序223並將目前執行狀態寫入資料庫222。執行程序223再度查詢資料庫222中的事務訊息,得知下一個事務步驟所對應的節點伺服器代號為「Node-B」。故執行程序223令節點伺服器代號為「Node-B」的節點伺服器12執行內容為「get_resource(R)」之事務步驟。節點伺服器代號為「Node-B」的節點伺服器12執行失敗,並回傳值為「失敗」的目前執行狀態給執行程序223並將目前執行狀態寫入資料庫222。執行程序223因此觸發異常處理程序225。異常處理程序225查詢資料庫222得知在此失敗的事務步驟之前有執行過事務步驟編號2之事務步驟,而命令節點伺服器代號為「Node-A」的節點伺服器12執行內容為「put_resource(R)」之事務步驟的反動作(anti-action)。當異常處理程序225查詢資料庫222的事務訊息得知所有執行過的事務步驟都進行反動作之後,將值為「失敗」的事務執行結果給發起者30,以結束此事務。
此外,執行程序223亦可對每個事務步驟個別設定一執行時間門檻值。若沒有在執行時間門檻值之內收到負責的動作服務程序14回報的目前執行狀態,則視為此事務步驟執行失敗並觸發異常處理程序225。
綜上所述,事務服務程序依據事務訊息依序令節點伺服器的動作服務程序執行事務步驟,並了解事務的所有事務步驟的運作狀況;因此事務服務程序以及伺服器集群內的操作統整為一。且透過資料庫,不同的節點伺服器能夠簡單並完整地得到自己執行事務步驟時所需的事務參數等資訊,亦能回報並備份自己的目前執行狀態。
此外,透過以事務服務程序集中管理事務之進行的方式,能
夠確切地知道每一個事務步驟的執行狀況,而能夠馬上發現執行失敗等異常。且異常處理程序能通知發起者執行失敗甚至是失敗的詳細內容;更能將已執行過的事務步驟以反動作處理,以將伺服器集群回復成原本的狀態。
以上較佳具體實施範例之詳述,是希望藉此更加清楚描述本發明之特徵與精神,並非以上述揭露的較佳具體實施範例對本發明之範疇加以限制。相反地,其目的是希望將各種改變及具相等性的安排涵蓋於本發明所欲申請之專利範圍的範疇內。
Claims (1)
- 一種伺服器集群的事務處理方法,適用於利用具有多個節點伺服器的一伺服器集群處理一事務,該伺服器集群的事務處理方法包括:接收從一發起者發出之該事務,其中該事務包括至少一事務步驟;將該事務的一事務訊息儲存於一資料庫,其中該事務訊息包括該事務的所有該事務步驟;通知至少一該節點伺服器的一動作服務程序,依序執行儲存於該資料庫中的該事務步驟;回報該事務的一事務執行結果給該發起者,以結束該事務;以及當該事務服務程序接收到失敗的該目前執行狀態時,執行一異常處理程序,該異常處理程序包括:由最後一個成功的該事務步驟開始到第一個該事務步驟為止,依序對已經執行過的該事務步驟執行反動作,以將該伺服器集群回復到執行該事務之前的狀態;其中該事務訊息包括每一該事務步驟對應的一節點伺服器代號,且每一該節點伺服器代號個別對應於該些節點伺服器之一;該通知至少一該節點伺服器的一動作服務程序,依序執行儲存於該資料庫中的該事務步驟的步驟包括:由該資料庫依序讀取該事務訊息中彼此對應的該事務步驟以及該節點伺服器代號;以及通知與該事務步驟對應的該動作服務程序的一動作服務接 口,令該動作服務程序執行對應的該事務步驟;其中該動作服務程序包括:讀取該事務訊息的一事務本文、對應的該事務步驟的一動作參數;依據讀取的該事務本文以及該動作參數執行該事務步驟;以及將對應的該事務步驟的一目前執行狀態回傳給一事務服務程序,並將該目前執行狀態寫入該資料庫。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99141712A TWI421677B (zh) | 2010-12-01 | 2010-12-01 | 伺服器集群的事務處理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99141712A TWI421677B (zh) | 2010-12-01 | 2010-12-01 | 伺服器集群的事務處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201224741A TW201224741A (en) | 2012-06-16 |
TWI421677B true TWI421677B (zh) | 2014-01-01 |
Family
ID=46725933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW99141712A TWI421677B (zh) | 2010-12-01 | 2010-12-01 | 伺服器集群的事務處理方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI421677B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI220821B (en) * | 2001-04-26 | 2004-09-01 | Accton Technology Corp | Zero-loss web service system and method |
US7519652B2 (en) * | 2002-04-24 | 2009-04-14 | Open Cloud Limited | Distributed application server and method for implementing distributed functions |
TW200941233A (en) * | 2007-12-05 | 2009-10-01 | Onlive Inc | System and method for intelligently allocating client requests to server centers |
-
2010
- 2010-12-01 TW TW99141712A patent/TWI421677B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI220821B (en) * | 2001-04-26 | 2004-09-01 | Accton Technology Corp | Zero-loss web service system and method |
US7519652B2 (en) * | 2002-04-24 | 2009-04-14 | Open Cloud Limited | Distributed application server and method for implementing distributed functions |
TW200941233A (en) * | 2007-12-05 | 2009-10-01 | Onlive Inc | System and method for intelligently allocating client requests to server centers |
Also Published As
Publication number | Publication date |
---|---|
TW201224741A (en) | 2012-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10120924B2 (en) | Quarantine and repair of replicas in a quorum-based data storage system | |
WO2018103318A1 (zh) | 分布式事务处理方法和系统 | |
US10178184B2 (en) | System and method for session handling in a multitenant application server environment | |
US10657119B1 (en) | Fleet node management system | |
US9542404B2 (en) | Subpartitioning of a namespace region | |
US8910172B2 (en) | Application resource switchover systems and methods | |
WO2021217986A1 (zh) | 分布式消息传输方法、装置、计算机设备及存储介质 | |
US9483482B2 (en) | Partitioning file system namespace | |
US9146822B2 (en) | Cluster configuration systems and methods | |
US20170371568A1 (en) | Failure resistent volume creation in a shared storage environment | |
US7836357B2 (en) | Error handling process | |
US20140059315A1 (en) | Computer system, data management method and data management program | |
US9565243B2 (en) | System and method for managing event tracking | |
US10055445B2 (en) | Transaction processing method and apparatus | |
US9948520B2 (en) | Efficiently determining network topology | |
US9553929B2 (en) | Episodic coordination model for distributed applications | |
CN107612950A (zh) | 一种提供服务的方法、装置、系统、电子设备 | |
US20160277152A1 (en) | Method and system for robust message retransmission | |
US8468386B2 (en) | Detecting and recovering from process failures | |
WO2022033586A1 (zh) | 一种消息发送方法及装置 | |
US20170270031A1 (en) | Information processing apparatus, test execution method, and computer-readable recording medium | |
US20150213104A1 (en) | Synchronous data replication in a content management system | |
CN102457559B (zh) | 服务器集群的事务处理方法 | |
TWI421677B (zh) | 伺服器集群的事務處理方法 | |
WO2022199229A1 (zh) | 悬挂事务巡检方法和装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |