<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rednight

    0x2B|~0x2B,That's not a question,Just do it.
    posts - 32, comments - 14, trackbacks - 0, articles - 0

    XA分布式事務(wù)處理

    Posted on 2007-03-06 10:11 rednight 閱讀(11409) 評(píng)論(6)  編輯  收藏
    在談到 XA 規(guī)范之前,必須首先了解分布式事務(wù)處理( Distributed Transaction Processing DTP )的概念。 Transaction ,即事務(wù),又稱之為交易,指一個(gè)程序或程序段,在一個(gè)或多個(gè)資源如 數(shù)據(jù)庫 或文件上為完成某些功能的執(zhí)行過程的集合。 LU 人的博客 )vqfhOBA
      分布式事務(wù)處理是指一個(gè)事務(wù)可能涉及多個(gè)數(shù)據(jù)庫操作,分布式事務(wù)處理的關(guān)鍵是必須有一種方法可以知道事務(wù)在任何地方所做的所有動(dòng)作,提交或回滾事務(wù)的決定必須產(chǎn)生統(tǒng)一的結(jié)果(全部提交或全部回滾)。
      X/Open 組織(即現(xiàn)在的 Open Group )定義了分布式事務(wù)處理模型。 X/Open DTP 模型( 1994 )包括應(yīng)用程序( AP )、事務(wù)管理器( TM )、資源管理器( RM )、通信資源管理器( CRM )四部分。一般,常見的事務(wù)管理器( TM )是交易中間件,常見的資源管理器( RM )是數(shù)據(jù)庫,常見的通信資源管理器( CRM )是消息中間件。
      通常把一個(gè)數(shù)據(jù)庫內(nèi)部的事務(wù)處理,如對(duì)多個(gè)表的操作,作為本地事務(wù)看待。數(shù)據(jù)庫的事務(wù)處理對(duì)象是本地事務(wù),而分布式事務(wù)處理的對(duì)象是全局事務(wù)。

    所謂全局事務(wù),是指分布式事務(wù)處理環(huán)境中,多個(gè)數(shù)據(jù)庫可能需要共同完成一個(gè)工作,這個(gè)工作即是一個(gè)全局事務(wù),例如,一個(gè)事務(wù)中可能更新幾個(gè)不同的數(shù)據(jù)庫。對(duì)數(shù)據(jù)庫的操作發(fā)生在系統(tǒng)的各處但必須全部被提交或回滾。此時(shí)一個(gè)數(shù)據(jù)庫對(duì)自己內(nèi)部所做操作的提交不僅依賴本身操作是否成功,還要依賴與全局事務(wù)相關(guān)的其它數(shù)據(jù)庫的操作是否成功,如果任一數(shù)據(jù)庫的任一操作失敗,則參與此事務(wù)的所有數(shù)據(jù)庫所做的所有操作都必須回滾。 LU 人的博客 8v:d?(~;~$A-Q9V D
      一般情況下,某一數(shù)據(jù)庫無法知道其它數(shù)據(jù)庫在做什么,因此,在一個(gè) DTP 環(huán)境中,交易中間件是必需的,由它通知和協(xié)調(diào)相關(guān)數(shù)據(jù)庫的提交或回滾。而一個(gè)數(shù)據(jù)庫只將其自己所做的操作(可恢復(fù))影射到全局事務(wù)中。

       XA 就是 X/Open DTP 定義的交易中間件與數(shù)據(jù)庫之間的接口規(guī)范(即接口函數(shù)),交易中間件用它來通知數(shù)據(jù)庫事務(wù)的開始、結(jié)束以及提交、回滾等。 XA 接口函數(shù)由數(shù)據(jù)庫廠商提供。

    XA
    與兩階段提交協(xié)議

      通常情況下,交易中間件與數(shù)據(jù)庫通過 XA 接口規(guī)范,使用兩階段提交來完成一個(gè)全局事務(wù), XA 規(guī)范的基礎(chǔ)是兩階段提交協(xié)議。
      在第一階段,交易中間件請(qǐng)求所有相關(guān)數(shù)據(jù)庫準(zhǔn)備提交(預(yù)提交)各自的事務(wù)分支,以確認(rèn)是否所有相關(guān)數(shù)據(jù)庫都可以提交各自的事務(wù)分支。當(dāng)某一數(shù)據(jù)庫收到預(yù)提交后,如果可以提交屬于自己的事務(wù)分支,則將自己在該事務(wù)分支中所做的操作固定記錄下來,并給交易中間件一個(gè)同意提交的應(yīng)答,此時(shí)數(shù)據(jù)庫將不能再在該事務(wù)分支中加入任何操作,但此時(shí)數(shù)據(jù)庫并沒有真正提交該事務(wù),數(shù)據(jù)庫對(duì)共享資源的操作還未釋放(處于上鎖狀態(tài))。如果由于某種原因數(shù)據(jù)庫無法提交屬于自己的事務(wù)分支,它將回滾自己的所有操作,釋放對(duì)共享資源上的鎖,并返回給交易中間件失敗應(yīng)答。 在第二階段,交易中間件審查所有數(shù)據(jù)庫返回的預(yù)提交結(jié)果,如所有數(shù)據(jù)庫都可以提交,交易中間件將要求所有數(shù)據(jù)庫做正式提交,這樣該全局事務(wù)被提交。而如果有任一數(shù)據(jù)庫預(yù)提交返回失敗,交易中間件將要求所有其它數(shù)據(jù)庫回滾其操作,這樣該全局事務(wù)被回滾。
      以一個(gè)全局事務(wù)為例, AP 首先通知交易中間件開始一個(gè)全局事務(wù),交易中間件通過 XA 接口函數(shù)通知數(shù)據(jù)庫開始事務(wù),然后 AP 可以對(duì)數(shù)據(jù)庫管理的資源進(jìn)行操作,數(shù)據(jù)庫系統(tǒng)記錄事務(wù)對(duì)本地資源的所有操作。操作完成后交易中間件通過 XA 接口函數(shù)通知數(shù)據(jù)庫操作完成。交易中間件負(fù)責(zé)記錄 AP 操作過哪些數(shù)據(jù)庫(事務(wù)分支)。 AP 根據(jù)情況通知交易中間件提交該全局事務(wù),交易中間件會(huì)通過 XA 接口函數(shù)要求各個(gè)數(shù)據(jù)庫做預(yù)提交,所有數(shù)據(jù)庫返回成功后要求各個(gè)數(shù)據(jù)庫做正式提交,此時(shí)一筆全局事務(wù)結(jié)束。

       XA 規(guī)范對(duì)應(yīng)用來說,最大好處在于事務(wù)的完整性由交易中間件和數(shù)據(jù)庫通過 XA 接口控制, AP 只需要關(guān)注與數(shù)據(jù)庫的應(yīng)用邏輯的處理,而無需過多關(guān)心事務(wù)的完整性,應(yīng)用設(shè)計(jì)開發(fā)會(huì)簡化很多。
      具體來說,如果沒有交易中間件,應(yīng)用系統(tǒng)需要在程序內(nèi)部直接通知數(shù)據(jù)庫開始、結(jié)束和提交事務(wù),當(dāng)出現(xiàn)異常情況時(shí)必須由專門的程序?qū)?shù)據(jù)庫進(jìn)行反向操作才能完成回滾。如果是有很多事務(wù)分支的全局事務(wù),回滾時(shí)情況將變得異常復(fù)雜。而使用 XA 接口,則全局事務(wù)的提交是由交易中間件控制,應(yīng)用程序只需通知交易中間件提交或回滾事務(wù),就可以控制整個(gè)事務(wù)(可能涉及多個(gè)異地的數(shù)據(jù)庫)的全部提交或回滾,應(yīng)用程序完全不用考慮沖正邏輯。
      在一個(gè)涉及多個(gè)數(shù)據(jù)庫的全局事務(wù)中,為保證全局事務(wù)的完整性,由交易中間件控制數(shù)據(jù)庫做兩階段提交是必要的。但典型的兩階段提交,對(duì)數(shù)據(jù)庫來說事務(wù)從開始到結(jié)束(提交或回滾)時(shí)間相對(duì)較長,在事務(wù)處理期間數(shù)據(jù)庫使用的資源(如邏輯日志、各種鎖),直到事務(wù)結(jié)束時(shí)才會(huì)釋放。因此,使用典型的兩階段提交相對(duì)來說會(huì)占用更多的資源,在網(wǎng)絡(luò)條件不是很好,如低速網(wǎng)、網(wǎng)絡(luò)顛簸頻繁,情況會(huì)更為嚴(yán)重。
      當(dāng)一個(gè)全局事務(wù)只涉及一個(gè)數(shù)據(jù)庫時(shí),有一種優(yōu)化方式,即一階段提交。當(dāng) AP 通知交易中間件提交事務(wù)時(shí),交易中間件直接要求數(shù)據(jù)庫提交事務(wù),省去兩階段提交中的第一階段,可以縮短處理一個(gè)事務(wù)的時(shí)間,以提高事務(wù)處理的效率。作為兩階段提交的一種特例,與兩階段一樣,一階段提交也是標(biāo)準(zhǔn)的。

    Feedback

    # re: XA分布式事務(wù)處理  回復(fù)  更多評(píng)論   

    2008-01-24 21:03 by baixch
    透徹!

    # re: XA分布式事務(wù)處理[未登錄]  回復(fù)  更多評(píng)論   

    2008-01-25 10:26 by XXX

    # re: XA分布式事務(wù)處理[未登錄]  回復(fù)  更多評(píng)論   

    2008-09-20 20:19 by 棒棒
    如果在第二階段,某個(gè)數(shù)據(jù)庫正式提交數(shù)據(jù)失敗了,這時(shí)如何處理?

    # re: XA分布式事務(wù)處理  回復(fù)  更多評(píng)論   

    2009-07-06 11:18 by
    可以異構(gòu)數(shù)據(jù)庫兩階段事務(wù)提交嗎?

    # re: XA分布式事務(wù)處理[未登錄]  回復(fù)  更多評(píng)論   

    2009-08-24 16:30 by quaff
    當(dāng)然可以,只要異構(gòu)數(shù)據(jù)庫也支持xa接口

    # re: XA分布式事務(wù)處理  回復(fù)  更多評(píng)論   

    2013-08-26 13:43 by 天龍
    # re: XA分布式事務(wù)處理[未登錄] 回復(fù) 更多評(píng)論
    2008-09-20 20:19 by 棒棒
    如果在第二階段,某個(gè)數(shù)據(jù)庫正式提交數(shù)據(jù)失敗了,這時(shí)如何處理?

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 又黄又爽又成人免费视频| 女人张开腿给人桶免费视频| 亚洲六月丁香婷婷综合| 成人免费视频网址| 国产黄在线观看免费观看不卡| 亚洲AV无码专区亚洲AV伊甸园| 国产曰批免费视频播放免费s| 久久亚洲中文字幕无码| 亚洲国产精品一区第二页| 免费一本色道久久一区| 国产特黄特色的大片观看免费视频 | 国产亚洲情侣久久精品| 亚洲av女电影网| 永久黄网站色视频免费直播| 免费一级毛片在线播放视频| 亚洲中文字幕无码久久2020| 黑人大战亚洲人精品一区| 久久这里只有精品国产免费10| 成人片黄网站色大片免费观看cn | 亚洲成人免费网址| 亚洲视频在线精品| 毛片a级毛片免费观看品善网| 国产精品免费久久久久影院| 中文字幕乱码亚洲精品一区| 亚洲va在线va天堂va四虎| 免费在线观看日韩| 久久久久国色AV免费观看性色| 免费视频精品一区二区三区 | 亚洲精品久久无码av片俺去也| 亚洲日本中文字幕| 亚洲日韩精品一区二区三区无码| 永久免费毛片手机版在线看| 日本最新免费网站| 久久精品国产影库免费看| 日韩免费高清一级毛片| 亚洲色最新高清av网站| 91亚洲va在线天线va天堂va国产| 亚洲日韩一页精品发布| gogo全球高清大胆亚洲| 日韩中文字幕在线免费观看| 免费观看的毛片大全|