摘 要:介紹了Web服務和事務的相關概念,闡述了傳統事務處理協議在Web服務處理環境中存在的問題;然后結合目前流行的WST協議族對Web事務處理作了分析;最后根據分析總結了解決問題的思路,以及在Web服務事務處理中建議采用的策略。
關鍵詞:Web服務; Web服務事務; Web服務原子事務; Web服務業務活動; Web服務業務活動發起者
中圖分類號:TP311 文獻標志碼:A
文章編號:10013695(2008)09279803
WST protocol family and its research and application
RUAN Chunrong, CHEN Bo, ZHOU Mingtian
(Developing Union Laboratory of Information Safety, University of Electronic Science Technology of China, Chengdu 610054, China)
Abstract:The article introduced the related concepts about Web services and transactions.Then it analyzed the problems existing in the Web services processing environment about the traditional transaction process protocol and the WST protocol family. At last, according to the analysis above, it summarized the way to solve the problem and proposed an adopting strategy in the Web service transaction process.
Key words:Web services; WST; WSAtomicTransaction; WSBusinessActivity; WSBusinessActivityInitiator
隨著互聯網技術和應用的迅速發展,Web 服務正在成為基于Internet的新一代計算平臺。Web 服務具有良好的互操作性,能夠為不同實現標準和通信機制下的軟件交互和集成提供有效的支持[1],因此具有廣泛的應用前景。 在Web 服務應用中,常常需要處理應用相關的多個Web 服務間的交互和組合過程,這類過程必須保證多個Web 服務運行結果的可靠性和一致性,并能及時解決運行時的各種異常。因此,Web 服務處理環境需要事務技術的支持。
1 Web服務概念
Web服務是獨立的、模塊化的業務流程應用程序[2,3],它基于的行業標準技術有WSDL、UDDI和SOAP。Web服務是包裝了一些操作的接口,通過標準化的XML消息傳遞機制SOAP來訪問這些操作,使得基于Web服務應用程序具備松散耦合、面向組件和跨技術實現的特點。使用Web服務可以有效地解決異構網絡之間的通信。Web服務是創建可互操作的、分布式應用程序的重要選擇。Web服務可以單獨或與其他Web服務一起用于實現復雜的聚集或商業交易,從而可以以一種平臺和語言獨立的方式在網絡上經營業務。
Web 服務系統具有以下特性:a)長事務。由于商務處理、網絡延遲和用戶的交互,一個Web 服務事務處理過程往往會持續較長的時間,使得鎖定資源的策略不再適用。b)自治性。Web 服務提供者擁有對服務的控制權,其他應用可能無法鎖定它需要的資源。c)松耦合。Web 服務之間是松散耦合的。d)更多潛在的故障。不僅進程和機器可能崩潰,廣域網絡也比傳統分布式系統的內部網更加不可靠。e)一次事務過程可能跨越多個組織。
2 事務及其屬性
事務是一系列對于物理的或抽象的應用狀態的操作組成的集合。事務的目的是確保系統容錯和并發控制的正確順利運行,從而更好地保證系統的可靠性。
傳統的分布式事務具有ACID 性質:a)原子性(atomicity),事務的所有參加者要么都提交,要么都撤銷;b)一致性(consistency),事務不會破壞系統的恒定,事務執行的結果必須使系統從一個一致性狀態變換到另一個一致性狀態;c)獨立性(isolation),并發執行的各個事務間不會相互干擾;d)持久性(durability),事務一旦提交,它對系統的改變就是永久的,其他任何操作或故障都不會對其產生影響。
為了實現嚴格的ACID 性質,事務必須是短生命期的;系統必須是緊耦合的;協調者必須對參加者擁有完全的控制權。
3 傳統事務處理協議
傳統事務處理主要處理嚴格遵循ACID屬性的原子事務,其處理有賴于傳統事務處理中的資源鎖定等技術手段。作為分布式自治服務構成的粗粒度業務事務,由于沒有集中化的事務管理器,必須實現完成協議(completion protocol)。應用程序首先通過該協議來告知協調器嘗試提交或放棄一個事務。對于具體的提交,需要實現典型的兩階段提交協議[4](2PC)。兩種協議均實現為底層協調框架中的協調協議。
完成協議用于啟動提交處理。為完成而注冊的Web服務能夠通知指定的協調者何時開始提交處理。該協議還詳細說明了用于通知啟動者事務最終結果的消息。
兩階段提交協議為所有已注冊的參與者提供了一個公共的提交或終止決定,確保了所有參與者都能得到最終結果通知。顧名思義,它使用兩輪通知來完成該事務。該協議的兩個變體是易失2PC(volatile 2PC)和持久2PC(durable 2PC)。這兩個協議使用相同的消息(對應于prepare、commit和abort操作),但易失2PC沒有持久性要求。易失2PC協議供管理易失資源的參與者使用,如緩存管理器或窗口管理器。這些參與者在第一輪通知中不與協調者發生聯系,且不需要第二輪的通知。持久2PC協議供管理數據庫和文件等持久資源的參與者使用。當某一提交處理已經啟動時,在所有易失2PC參與者被聯系過之后這些參與者會第一次被聯系,這使緩存能夠被刷新。持久2PC參與者需要完整的兩輪通知來實現協調者所要求的全有或全無行為以及完成該事務。這些行為最適合于在整個事務期內持有資源,且該事務通常為非常短暫事務的情況。該協議保證在正常處理的情況下,協調者提供第一階段結果的同時將聯系所有參與者。兩階段提交協議的兩階段協作如圖1所示。
4 傳統事務處理協議在Web服務中存在的問題
Web services 與傳統事務處理協議之間存在著矛盾。傳統事務處理協議是嚴格遵循事務的ACID屬性的。
Web services 是松耦合的環境。傳統事務處理協議中事務的隔離性要求使不同的事務之間不能進行消息或控制的交換,這樣就限制了參與者之間的交互和數據交換,使得協作喪失了基礎,Web services 的松耦合優勢得不到體現。
傳統事務處理協議[5]對長事務支持較差,長時間持續增加了執行過程中出現差錯的可能性,根據事務的原子性要求,將導致前功盡棄。對于協作過程特別是同步協作,參與者需要感知到其他參與者的存在。而傳統的事務處理協議中, 用戶獨自使用數據庫, 感覺不到其他用戶。Web services 事務處理能力是其能否投入商業應用的關鍵技術之一[5],因此提出了各種不同的事務處理協議支持Web services 環境下的事務處理。
5 WST(WSTransaction)協議族
WSBA[6](WSBusinessActivity)規范與WSAT(WSAtomicTransaction)和WSC(WSCoordination)規范一起形成了WST協議族,同時它也被稱為Web服務事務處理框架[7](Web services transaction framework,WSTF)。在這些規范集中,WSC提供實現Web服務事務處理交互的基礎,它定義了事務的協調上下文和注冊服務的協議。WSAT和WSBA基于WSC說明了不同類型的事務類型。WSAT集中于處理遵循ACID規則的事務,它實現兩階段提交協議;WSBA集中于長事務處理,允許人為交互和混合結果。同時H.Erven等人[6]定義了WSBA規范的擴展協議——WSBAI(WSBusinessActivityInitiator),這個協議明確地定義了發起者與協調服務之間的接口。
51 WSC協議
WSC規范為Web services 協調提供了一個通用的基礎,并對當今市場上存在的各種標準事務機制提供支持。WSC規范包含對原子事務和業務事務協議的定義。
WSC[8]是一個協調框架,它使分布的參與者能夠在他們的行動上就一個通用的結果達成一致。分布式的參與者能夠使用WSC[6]將每個參與者的行為集合在一起,并且通過確保它們在協調上下文中執行的所有操作均產生單一的結果來進一步管理這些行為。協調服務也叫協調器,它由激活服務、注冊服務和協調協議服務組成。激活服務支持創建事務上下文操作來創建協調上下文;注冊服務用來協調協議選擇和注冊參與方;協調協議服務支持協調協議的使用,該協議定義了協調器與參與者之間的行為和通信。52 WSAT協議
原子事務支持主要處理嚴格遵循ACID屬性的事務,其事務處理采用兩階段提交協議。兩階段提交協議中存在以下兩個階段:a)準備階段。事務協調者將向事務中的每個參與者發送一則消息,要求每個參與者準備提交[4,5]。當某參與者準備好時,它保證可以提交事務并為自己的工作生成一條永久記錄。在保證可以提交之后,它不能再單方面決定回滾事務。如果該參與者不能準備(也就是說如果它不能保證自己可以提交任務) ,那么必須回滾事務。b)解決階段。事務協調者將對所有回應作出抉擇[4,5]。如果所有參與者都準備提交,則提交事務;否則回滾事務。無論哪種情況,事務協調者都會將結果通知所有參與者。如果結果為提交,參與者將確認它們已經提交[9]。
53 WSBA協議及其擴展協議WSBAI
WSBA標準[10]提供了靈活的事務處理特性。它主要用于協調長時間運行、松耦合的事務,并希望應用業務邏輯來處理業務異常。由于隔離性限制被取消,資源鎖定手段不再適用。它與原子事務處理最大的差異在于引入了補償機制。補償機制不要求參與者鎖定數據并延遲提交數據,而是假設所有的更新都是立即提交,但準備了反向的操作方式在發生錯誤時撤銷已經執行操作帶來的影響。
WSBA規范允許嵌套事務邏輯[6,10]。一個業務活動也許會包含于另一個業務活動,這也就意味著一個長事務會集成多個原子事務。不過,在事務處理中它允許子事務單獨提交,并由上一級事務邏輯負責決定這個長時間運行事務的最終結果。
與WSAT規范(定義了所有必要的事務處理的接口)不同的是[6],WSBA規范沒有定義發起者和協調者之間的接口。這樣允許客戶將WSBA協調者和他們的事務處理引擎相結合,然而這需要在發起者與協調者之間設立專用的協議。WSBAI[6]正是這樣明確定義了發起者與協調者之間的接口協議。
為了創建一個事務上下文,發起者需要聯系激活服務。另外,發起者需要通過聯系與事務上下文關聯的注冊服務向WSBAI協議注冊自己。協調器只允許一個事務上下文有一個發起者[6,10],在發起者注冊完畢后,協調器將拒絕WSBAI協議的任何后繼注冊請求。當成功注冊時,發起者使用WSBAI協議服務來與事務上下文通信。
在子上下文中取消和補償操作的特殊考慮[6,10]:
在完成狀態下,WSBA協議允許協調器和參與者發起狀態轉換消息,即協調器可以發送取消,參與者也可以發送退出、完成或者錯誤。如果雙方同時發送消息,它們將會相互抵觸。這時協調器必須放棄它自己的消息并接收參與者的信息。
如果參與者報告完成,這時它需要運行補償,因為協調器發送了取消消息。但這不像取消,補償是允許失敗的[6]。在事務處理過程中,允許這種情況發生:當協調器及時發送取消命令時,參與者卻以任何方式完成,但過一段時間它在補償時失敗。這樣,這個任務就永久地完成了而不是被取消。
這種情況在子上下文中是特別[6]不好的。當子上下文的協調器告知取消并向前發送這個命令給本地參與者時,一些參與者也許成功地取消了,而其他的已經完成了。但協調器不能報告完成,因為這個任務的一些部分已經取消了。另一方面它也不能報告取消,因為一些工作確實是執行了。因而子協調器必須立即試圖補償這些已完成的參與者的操作。如果它們都成功地補償了[6],才可以向上一級上下文報告取消。如果一個參與者在補償時失敗了,整個子上下文必須向上一級上下文報告錯誤來進一步處理這個問題[6]。
6 結束語
從以上對各規范的分析可以看出, 要解決傳統事務處理存在的問題,需要將傳統事務進行擴展,建立適合實際需要的事務模型,并在此基礎之上制定事務處理協議。Web services處理需要各事務處理協議的相互協作才能滿足現在業務活動的需要,也才能達到事務處理預定的效果。如可以使用WST協議族,并在具體實現時將WSBA規范與WSBAI規范結合使用,因為WSBAI使得WSBA發起者能夠招募參與者[6],檢查它們現在的狀態和通知協調服務它做的決定。這樣不僅能使源代碼的模塊性劇烈增強,而且允許來自不同客戶的協調者和參與者進行透明的合作[6]。
在設計一個系統實現時,可以使用擴展協議這種機制,它可以方便地對協調類型進行擴展。當出現新的事務業務邏輯時,只需要在業務事務處理核心模塊中插入相應的事務協調支持,而不用改變整個系統的結構。另外,由于事務處理的參與者需要向協調器注冊,且一個事務可能需要若干個參與者。可以通過handler技術來實現它們的注冊,即通過在客戶端和服務端配置handler來實現。當事務上下文創建以后,具體的業務操作開始通過SOAP引擎發送SOAP請求消息給相應業務的服務提供者時,通過客戶端配置的handler,在這個SOAP請求消息的header中加入相應的協調上下文。當這個請求消息到達服務端時,通過服務端配置文件中配置的handler來處理SOAP請求消息的header,以此確定是否需要注冊參與者,即參與者的注冊過程可在事務上下文創建之后,在執行具體的業務邏輯時,通過客戶端和服務端配置的handler來決定是否要注冊參與者。這種處理方式可以方便地擴展事務的參與者。
參考文獻:
[1]尹瑞.Web 服務事務處理系統的研究與實現[J]. 北京航空航天大學學報,2005,31(4):439442.
[2]MONSONHAEFEL R. J2EE Web services高級編程[M].崔洪斌,王愛民,譯. 北京:清華大學出版社,2005.
[3]趙傳慧.Web服務事務處理技術分析[J].中州煤炭,2005(6):2829.
[4]CABRERA L,COPELAND G,COX W,et al. Web services atomic transaction[EB/OL].(2005).ftp://www6.software.ibm.com/software/developer/library/WSAtomicTransaction.pdf.
[5]石雙元.事務處理協議及其在Web services中的應用分析[J].管理學報,2005,2(sup):7073.
[6]ERVEN H, HICKER G, HUEMER C,et al. The Web servicesBusinessActivityInitiator protocol: an extension to the Web ServicesBusinessActivity specification[K].[S.l.]:Business Informatics Group,2006.
[7]Web services transaction framework[EB/OL]. (2005).http://www128.ibm.com/developerworks/library/specification/wstx/.
[8]CABRERA L,COPELAND G,COX W,et al.Web services coordination(WSCoordination)[EB/OL] .(2005).ftp://www6.software.ibm.com/software/developer/library/ WSCoordination.pdf.
[9]唐飛龍. 一個Web 服務事務處理模型:結構、算法和事務補償[J].電子學報,2003,31(12):20742078.
[10]CABREA L,COPELAND G,COX W,et al.Web services business activity framework[EB/OL]. (2005).ftp://www6.software.ibm.com/software/developer/library/WSBusinessActivity.pdf.