qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          支付寶分布式事務測試方案

            傳統的基于數據庫本地事務的解決方案只能保障單個服務的一次處理具備原子性、隔離性、一致性與持久性,但無法保障多個分布服務間處理的一致性。因此,我們必須建立一套分布式服務處理之間的協調機制,保障分布式服務處理的原子性、隔離性、一致性與持久性。
            支付寶為什么需要分布式事務
            基于SOA架構,整個支付寶系統會拆分成一系列獨立開發、自包含、自主運行的業務服務,并將這些服務通過各種機制靈活地組裝成最終用戶所需要的產品與解決方案。
            在多個服務協同完成一次業務時,由于業務約束(如紅包不符合使用條件、賬戶余額不足等)、系統故障(如網絡或系統超時或中斷、數據庫約束不滿足等),都可能造成服務處理過程在任何一步無法繼續,使數據處于不一致的狀態,產生嚴重的業務后果,所以我們需要一個分布式事務的解決方案,用來協調多個服務的業務一致性。
            支付寶的分布式事務框架
            支付寶開發的分布式事務是基于兩階段提交的理論(Two Phase Commit),首先給出兩階段提交的邏輯圖:
            為了能夠有效的讓框架進行分布式事務的提交、回滾等動作,框架需要在整個兩階段執行過程中記錄下足夠的信息,設計了兩張表來記錄相關信息:
            分布式業務控制活動主表:記錄了全局事務的活動狀態;
            原子業務活動表:記錄了原子業務活動的狀態;
            我們用一個例子來說明:
            看一個典型的分布式事務場景。
            業務場景描述: 用戶購買商品,使用支付寶余額支付;
            測試方案
            分析步驟
            角色定位
            各分支的業務活動記錄狀態
            梳理業務各個場景
            驗證梳理場景
            恢復&回查機制
            角色定位
            首先測試人員需要分析所測試的系統處于分布式事務中的哪一個環節中,是處于事務的發起者,還是事務的參與者,不同的角色的定位對于測試分析角度不同,主要有以下的區別:
            發起者:
            分為同庫/異庫模式,主要區分是控制全局事務狀態的主事務記錄是否持久化在自己系統的db中;
            參與者:
            分為本地/遠程模式,主要區分是是否可以創建嵌套的分布式事務;
            各分支的業務活動記錄狀態
            主事務記錄:
            根據業務場景的不同,主事務記錄狀態也會相應改變,主要的狀態機變化如圖所示,測試人員需要模擬業務場景來驗證狀態機的遷轉是否正確;
            同庫:初始狀態:I;提交成功:C;提交失敗:I
            異庫:初始狀態:U;提交成功:U;提交失敗:U

           梳理&驗證業務場景
            分析維度
            一階段:預處理:成功/失敗;
            二階段:提交/回滾;
            預期結果
            各個狀態場景
            恢復&回查
            恢復:應用使用分布式事務,出現處理失敗的業務活動,為了確保產生的影響不破壞業務一致性,我們必須對這些記錄進行恢復處理
            回查:對于異庫模式,事務狀態為U,若提交或回滾失敗,分布式事務總控系統無法感知這筆分布式事務是否執行成功,需要業務系統提供相應的回查接口;
            恢復及回查接口需要特別關注,對于分布式事務的正常二階段提交或回滾,業務場景覆蓋時多半都能check到,但是對于恢復及回查邏輯,很多時候都會遺漏,所以測試人員需要對這塊特別做一個分析

          posted on 2014-06-10 09:47 順其自然EVO 閱讀(360) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 房产| 高邑县| 兴安县| 张北县| 怀集县| 临朐县| 蕉岭县| 咸阳市| 宜兰市| 贡山| 盐池县| 永安市| 桓台县| 新平| 那曲县| 凤凰县| 平顶山市| 洛宁县| 登封市| 东乌珠穆沁旗| 浪卡子县| 田东县| 新安县| 新竹市| 嘉禾县| 鄱阳县| 甘肃省| 苍山县| 柳河县| 鄯善县| 三明市| 旺苍县| 军事| 罗源县| 阳西县| 曲麻莱县| 北安市| 扬州市| 寻乌县| 南丰县| 安吉县|