專利名稱:服務器集群的事務處理方法
技術(shù)領域:
本發(fā)明涉及一種服務器集群的事務處理方法,特別涉及一種整合服務器集群的所有的節(jié)點服務器進行事務處理的方法。
背景技術(shù):
服務器集群(cluster)的技術(shù)是對外提供統(tǒng)一的服務接口(service),并由多個服務器(server)協(xié)調(diào)工作,其中每一個服務器被稱為集群的一個節(jié)點(node)。外部的發(fā)起者(sponsor)需要集群進行各種稱為“事務(transaction) ”的操作,而這種集群中的操作往往需要由多個節(jié)點參與才能完成。一個事務可能包含多個步驟(step),且每個步驟可能需要不同的節(jié)點負責完成。例如一個事務可能要求將一個資源(resource)在節(jié)點之間進行遷移(migrate),則這個事務可能會有“發(fā)起事務”、“放棄對指定資源的控制”、“接管指定資源”以及“結(jié)束事務”等步驟。由于事務發(fā)生在多個節(jié)點上,需要解決節(jié)點間信息傳遞的問題。傳統(tǒng)上負責第一個步驟的節(jié)點執(zhí)行完畢后,需要將剩余的步驟的數(shù)據(jù)傳送給負責下一個步驟的節(jié)點。一旦某次節(jié)點之間傳遞的信息有所缺漏,就會造成后續(xù)的步驟無法執(zhí)行或是執(zhí)行失敗。因此現(xiàn)有的節(jié)點運作方式以及信息傳遞方式并不可靠。且在現(xiàn)實情況中會有各種意外情況發(fā)生,因此每一個步驟都有失敗的可能。然而由于傳統(tǒng)的做法上各節(jié)點都是獨立運作,因此節(jié)點之間無法得知彼此執(zhí)行的狀況。如此一來,便無法得知整個事務的執(zhí)行狀況;甚至在發(fā)生錯誤時,連是哪一個節(jié)點執(zhí)行失敗都不知道。也就是說,現(xiàn)有的做法具有難以掌控事務的執(zhí)行情況,以及缺乏甚至是難以執(zhí)行異常處理的缺點。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明的目的在于提出一種服務器集群(cluster)的事務 (transaction)處理方法,其適用于利用具有多個節(jié)點(node)服務器的一服務器集群處理
一事務。為了實現(xiàn)上述目的,本發(fā)明提供的服務器集群的事務處理方法包括接收從一發(fā)起者(sponsor)發(fā)出的事務,其中事務包括至少一事務步驟(step);將事務的一事務信息儲存于一數(shù)據(jù)庫,其中事務信息包括所有事務的事務步驟;通知至少一個節(jié)點服務器的一動作服務(action service)程序,依序執(zhí)行儲存于數(shù)據(jù)庫中的事務步驟;以及回報事務的一事務執(zhí)行結(jié)果給發(fā)起者,以結(jié)束事務。事務信息可包括每一個事務步驟對應的一節(jié)點服務器代號。且每一個節(jié)點服務器代號分別對應于節(jié)點服務器之一。而“通知至少一個節(jié)點服務器的一動作服務程序,依序執(zhí)行儲存于數(shù)據(jù)庫中的事務步驟”的步驟可包括由數(shù)據(jù)庫依序讀取事務信息中彼此對應的事務步驟以及節(jié)點服務器代號;以及通知與事務步驟對應的節(jié)點服務器的動作服務程序的一動作服務接口,令動作服務程序執(zhí)行對應的事務步驟。
其中動作服務程序包括讀取事務信息的一事務本文(context,又稱為上下文)、 對應的事務步驟的一動作參數(shù);依據(jù)讀取的事務本文以及動作參數(shù)執(zhí)行事務步驟;以及將對應的事務步驟的一目前執(zhí)行狀態(tài)回傳給事務服務程序,并將目前執(zhí)行狀態(tài)寫入數(shù)據(jù)庫的
事務信息。根據(jù)一實施范例,服務器集群的事務處理方法還可包括當事務服務程序接收到失敗的目前執(zhí)行狀態(tài)時,執(zhí)行一異常處理程序,異常處理程序包括由最后一個成功的事務步驟開始到第一個事務步驟為止,依序?qū)σ呀?jīng)執(zhí)行過的事務步驟執(zhí)行反動作 (anti-action),以將服務器集群回復到執(zhí)行事務之前的狀態(tài)。上述的服務器集群的事務處理方法可以由一事務服務(transaction server) 程序執(zhí)行。事務服務程序可以配置于服務器集群的節(jié)點服務器之一;也可配置于一管理服務器,且管理服務器不屬于服務器集群。事務服務程序可通過一統(tǒng)一的事務服務接口(interface)接收事務。而統(tǒng)一的事務服務接口可以是一固定的接口地址(socket address)或是一應用禾呈序接口 (application program interface, API)。綜上所述,事務服務程序統(tǒng)整所有節(jié)點服務器的動作服務程序以執(zhí)行事務步驟, 并了解事務的所有事務步驟的運作狀況。因此節(jié)點服務器之間不需要進行多余的數(shù)據(jù)傳遞動作,事務服務程序也能夠?qū)崟r發(fā)現(xiàn)執(zhí)行失敗等異常,并執(zhí)行異常處理程序。以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
圖IA為一實施范例的服務器集群的示意圖;圖IB為另一實施范例的服務器集群的示意圖;圖2為一實施范例的事務服務程序的示意圖;圖3為一實施范例的動作服務程序的示意圖;圖4為一實施范例的服務器集群的事務處理方法的流程圖;圖5為一實施范例的動作服務程序的流程圖。其中,附圖標記10服務器集群12節(jié)點服務器14動作服務程序142動作服務接口144執(zhí)行動作程序20管理服務器22事務服務程序221統(tǒng)一的事務服務接口222數(shù)據(jù)庫223執(zhí)行程序224通信程序225異常處理程序30發(fā)起者
具體實施例方式以下在實施方式中詳細敘述本發(fā)明的詳細特征以及優(yōu)點,其內(nèi)容足以使任何本領域技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并據(jù)以實施,且根據(jù)本說明書所揭露的內(nèi)容、權(quán)利要求范圍及圖式,任何本領域技術(shù)人員可輕易地理解本發(fā)明相關的目的及優(yōu)點。本發(fā)明關于一種服務器集群(cluster)的事務(transaction)處理方法,其適用于利用具有多個節(jié)點(node)服務器的一服務器集群處理一事務。請參照圖IA以及圖1B,其分別為不同實施范例的服務器集群的示意圖。服務器集群的事務處理方法可由一事務服務(transaction service)程序22執(zhí)行。事務服務程序22可配置于不屬于服務器集群10的一管理服務器20之中,如圖IA所示。事務服務程序22也可配置于服務器集群10的任一節(jié)點服務器12之中,如圖IB所示。此外,各個節(jié)點服務器12都分別具有一動作服務(action service)程序14,以配合事務服務程序22執(zhí)行事務。接著請搭配圖2以及圖3 —同參照圖4。圖2以及圖3分別為基于圖IA的實施范例的事務服務程序以及動作服務程序的示意圖。圖4為一實施范例的服務器集群的事務處理方法的流程圖。事務服務程序22接收從一發(fā)起者(sponsor) 30發(fā)出的事務,其中事務包括至少一事務步驟(Step)(步驟S110)。為了整合整個執(zhí)行事務的流程以及系統(tǒng),事務服務程序 22可通過一統(tǒng)一的事務服務接口(interface) 221接收事務。而統(tǒng)一的事務服務接口 221 可以是一固定的接口地址(socket address)或是一應用程序接口(application program interface, API)。其中固定的接口地址包括事務服務程序22所在的管理服務器20或節(jié)點服務器12的一對因特網(wǎng)地址(Internet protocol address, IP address)以及連接端口 (port)。多個不同的發(fā)起者30均可由統(tǒng)一的事務服務接口 221發(fā)出要求服務器集群10執(zhí)行的事務。事務服務程序22將收到的事務的一事務信息儲存于一數(shù)據(jù)庫222,其中事務信息包括事務的所有事務步驟(步驟S120)。而事務信息可包括每一個事務步驟對應的一節(jié)點服務器代號,且這些節(jié)點服務器代號分別對應于服務器集群10中的所有節(jié)點服務器12。舉例而言,事務步驟可以以下表1的方式被儲存于數(shù)據(jù)庫222。
權(quán)利要求
1.一種服務器集群的事務處理方法,適用于利用具有多個節(jié)點服務器的一服務器集群處理一事務,其特征在于,該服務器集群的事務處理方法包括接收從一發(fā)起者發(fā)出的該事務,其中該事務包括至少一事務步驟; 將該事務的一事務信息儲存于一數(shù)據(jù)庫,其中該事務信息包括該事務的所有該事務步驟;通知至少一該節(jié)點服務器的一動作服務程序,依序執(zhí)行儲存于該數(shù)據(jù)庫中的該事務步驟·’以及回報該事務的一事務執(zhí)行結(jié)果給該發(fā)起者,以結(jié)束該事務。
2.根據(jù)權(quán)利要求1所述的服務器集群的事務處理方法,其特征在于,該事務信息包括每一該事務步驟對應的一節(jié)點服務器代號,且每一該節(jié)點服務器代號分別對應于該些節(jié)點服務器之一;該通知至少一該節(jié)點服務器的一動作服務程序,依序執(zhí)行儲存于該數(shù)據(jù)庫中的該事務步驟的步驟包括由該數(shù)據(jù)庫依序讀取該事務信息中彼此對應的該事務步驟以及該節(jié)點服務器代號;以及通知與該事務步驟對應的該動作服務程序的一動作服務接口,令該動作服務程序執(zhí)行對應的該事務步驟。
3.根據(jù)權(quán)利要求2所述的服務器集群的事務處理方法,其特征在于,該動作服務程序包括讀取該事務信息的一事務本文、對應的該事務步驟的一動作參數(shù); 依據(jù)讀取的該事務本文以及該動作參數(shù)執(zhí)行該事務步驟;以及將對應的該事務步驟的一目前執(zhí)行狀態(tài)回傳給一事務服務程序,并將該目前執(zhí)行狀態(tài)寫入該數(shù)據(jù)庫。
4.根據(jù)權(quán)利要求3所述的服務器集群的事務處理方法,其特征在于,還包括 當該事務服務程序接收到失敗的該目前執(zhí)行狀態(tài)時,執(zhí)行一異常處理程序,該異常處理程序包括由最后一個成功的該事務步驟開始到第一個該事務步驟為止,依序?qū)σ呀?jīng)執(zhí)行過的該事務步驟執(zhí)行反動作,以將該服務器集群回復到執(zhí)行該事務之前的狀態(tài)。
5.根據(jù)權(quán)利要求1所述的服務器集群的事務處理方法,其特征在于,由一事務服務程序執(zhí)行。
6.根據(jù)權(quán)利要求5所述的服務器集群的事務處理方法,其特征在于,該事務服務程序為配置于該服務器集群的該些節(jié)點服務器之一。
7.根據(jù)權(quán)利要求5所述的服務器集群的事務處理方法,其特征在于,該事務服務程序為配置于一管理服務器,且該管理服務器不屬于該服務器集群。
8.根據(jù)權(quán)利要求5所述的服務器集群的事務處理方法,其特征在于,該事務服務程序通過一統(tǒng)一的事務服務接口接收該事務。
9.根據(jù)權(quán)利要求8所述的服務器集群的事務處理方法,其特征在于,該統(tǒng)一的事務服務接口為一固定的接口地址或是一應用程序接口。
全文摘要
一種服務器集群的事務處理方法,適用于利用具有多個節(jié)點服務器的服務器集群處理事務。服務器集群的事務處理方法包括接收從發(fā)起者發(fā)出的事務,其中事務包括至少一事務步驟;將事務的事務信息儲存于數(shù)據(jù)庫,其中事務信息包括所有事務的事務步驟;通知至少一個節(jié)點服務器的動作服務程序,依序執(zhí)行儲存于數(shù)據(jù)庫中的事務步驟;以及回報事務的事務執(zhí)行結(jié)果給發(fā)起者,以結(jié)束事務。本發(fā)明提供的服務器集群的事務處理方法,其節(jié)點服務器之間不需要進行多余的數(shù)據(jù)傳遞動作,事務服務程序也能夠?qū)崟r發(fā)現(xiàn)執(zhí)行失敗等異常,并執(zhí)行異常處理程序。
文檔編號H04L29/08GK102457559SQ20101052695
公開日2012年5月16日 申請日期2010年10月25日 優(yōu)先權(quán)日2010年10月25日
發(fā)明者焦旭東, 陳志豐 申請人:英業(yè)達股份有限公司