<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      X/Open DTP——分布式事務模型

      這一幾天一直在回顧事務相關的知識,也準備把以前了解皮毛的知識進行一些深入總結,雖然這一些知識并沒有用到,但是了解其實現原理還是很有必要的,因為知道了原理,你也能把它實現出來。

      在上一節事務的編程模型里面,主要說明了三種編程模型,一般情況下,我們都接觸的是單一資源的事務,也就是單獨對一個數據庫進行操作。如果需要跨多個資源保證事務一致性

      舉個例子:在ATM機取錢的時候,需要對用戶的賬戶進行扣款處理,然后發送一條消息給消息服務器(假設消息服務器是用JMS實現的),由消息服務器異步通過短信通知用戶。如果用戶取款失敗,那么消息服務器不應該發送短信給用戶。如何保證 用戶帳務扣款 和 消息服務器的消息保持一致性,也就是說 取款成功,消息服務器就持久化消息,然后發送短信給用戶,取款失敗,消息服務器就回滾消息,啥都不做。

      在上面這種情況下,就需要使用分布式事務,也就是跨越多個資源的保證數據一致性。

      X/Open DTP(X/Open Distributed Transaction Processing Reference Model) 是X/Open 這個組織定義的一套分布式事務的標準,也就是了定義了規范和API接口,由這個廠商進行具體的實現。這個思想在java 平臺里面到處都是。

      X/Open DTP 定義了三個組件: AP,TM,RM

      AP(Application Program):也就是應用程序,可以理解為使用DTP的程序

      RM(Resource Manager):資源管理器,這里可以理解為一個DBMS系統,或者消息服務器管理系統,應用程序通過資源管理器對資源進行控制。資源必須實現XA定義的接口

      TM(Transaction Manager):事務管理器,負責協調和管理事務,提供給AP應用程序編程接口以及管理資源管理器

      其中,AP 可以和TM 以及 RM 通信,TM 和 RM 互相之間可以通信,DTP模型里面定義了XA接口,TM 和 RM 通過XA接口進行雙向通信,例如:TM通知RM提交事務或者回滾事務,RM把提交結果通知給TM。AP和RM之間則通過RM提供的Native API 進行資源控制,這個沒有進行約API和規范,各個廠商自己實現自己的資源控制,比如Oracle自己的數據庫驅動程序。

       

      下面一幅圖說明了三者的關系:

       

      其中在DTP定了以下幾個概念:

      事務:一個事務是一個完整的工作單元,由多個獨立的計算任務組成,這多個任務在邏輯上是原子的。

      全局事務:對于一次性操作多個資源管理器的事務,就是全局事務

      分支事務:在全局事務中,某一個資源管理器有自己獨立的任務,這些任務的集合作為這個資源管理器的分支任務

      控制線程:用來表示一個工作線程,主要是關聯AP,TM,RM三者的一個線程,也就是事務上下文環境。簡單的說,就是需要標識一個全局事務以及分支事務的關系。

       

      兩階段提交協議:如果一個事務管理器管理著多個資源管理器,如果控制全局事務和分支事務,在DTP里面說明兩階段提交的協議

      第一階段:準備階段

      事務管理器通知資源管理器準備分支事務,資源管理器告之事務管理器準備結果

      第二階段:提交階段

      事務管理器通知資源管理器提交分支事務,資源管理器告之事務管理器結果

      下面一幅圖演示了正常情況下的兩階段提交,

      如果第一階段某一個資源預提交失敗,第二階段就回滾第一階段已經預提交成功的資源

       以上是比較正常的情況,但是由于RM有權利自己根據情況提交或者回滾自己的分支事務(官方說法是:Heuristic Decision)那三么就可能出現以下種情況:

      1 在TM通知RM提交事務之前,RM分支事務已經提交

       

      2 在TM通知RM提交事務之前,RM分支事務全部回滾

       

      3 在TM通知RM提交事務之前,RM分支事務部分回滾

      對于Heuristic Decision標記的分支事務,在沒有TM通知RM forget 它之前,RM都必須保存分支事務的信息,等到TM從失敗中恢復事務之后,通知RM forget 分支事務,這個時候RM才真正的完成事務。

      對于前面兩種情況來說,TM會比較好處理,做事務恢復的時候,要么標記全局事務成功,要么標記全局事務回滾,通知RM可以完成分支事務了。對于第三種情況,可能就需要進行決策了,這個具體怎么處理,貌似DTP并沒有說明細節,可以交給應用自己去判斷。

       

      DTP編程模型

      雖然DTP內部的實現比較復雜,但是對于DTP編程模型就比較簡單了

      1 AP通過TM獲取事務

      2 AP申明需要哪些RM,TM注冊RM

      3 AP使用RM完成分支事務

      4 AP通過TM提交事務

      5 TM通知RM提交事務

       

      而DTP的服務的實現就需要考慮以下幾個問題:

      • 如何獲取TM?
      • 如何啟動和結束一個事務
      • 如何標識一個事務
      • 如何保存和傳遞事務上下文
      • 應用如何通過資源管理器操作共享資源
      • 資源管理器如何實現準備階段以及與提交階段的邏輯
      • 如何實現兩階段提交協議
      • 如何實現在異常情況下進行事務恢復

       

      其實如果把這幾個問題了解清楚了,就可以自己實現一個兩階段提交的分布式事務模型了。

      主站蜘蛛池模板: 国产专区一va亚洲v天堂| 少妇太爽了在线观看免费视频 | 亚洲欧美日韩在线码| 99久久婷婷国产综合精品青草漫画| 亚洲色大成网站WWW久久| 久久亚洲人成网站| 国产女人看国产在线女人| 亚洲无人区码二码三码区| 亚洲男人天堂av在线| 阿拉善盟| 少妇被日自拍黄色三级网络| 久久热精品视频在线视频| 亚洲婷婷综合色高清在线| 亚洲护士一区二区三区| 色综合久久精品亚洲国产| 日韩人妻无码精品久久| 国产AV影片麻豆精品传媒| 国产国产精品人体在线视| 国产毛片基地| 国产精品亚洲欧美大片在线看| 亚洲精品人妻中文字幕| 欧美人伦禁忌dvd放荡欲情| 国产无遮挡又黄又大又爽| 国产片AV国语在线观看手机版| 婷婷久久综合九色综合88| 久久精品亚洲精品国产色婷| 四虎成人精品永久网站| 三河市| 日日碰狠狠添天天爽超碰97| 亚洲熟妇自偷自拍另类| 日韩国产成人精品视频| 久久www免费人成看片中文| 亚洲综合在线日韩av| 免费现黄频在线观看国产 | 亚洲人成色77777| 国产午夜在线观看视频播放| 欧美va亚洲va在线观看| 成人免费亚洲av在线| 亚洲av成人精品日韩一区| 使劲快高潮了国语对白在线| 日韩精品成人一区二区三|