<code id="n6fag"><menu id="n6fag"></menu></code>
<p id="n6fag"><legend id="n6fag"></legend></p>
  • <object id="n6fag"><ol id="n6fag"></ol></object>
    <samp id="n6fag"></samp>

          <output id="n6fag"><ol id="n6fag"><td id="n6fag"></td></ol></output>
          <output id="n6fag"></output>

              <strike id="n6fag"></strike>

              Dubbo 服務化架構

              開源、高性能、透明化,當前最成熟的 SOA 服務治理方案




              我們的電商架構,將應用程序進行業務拆分,如訂單、用戶、優惠促銷、售后、商品管理等業務,這些業務獨立運行,并提供服務給其他業務。


              系統利用分布式服務框架(阿里的 Dubbo )搭建分布式服務。Dubbo 是開源的、高性能和透明化的 RPC 遠程調用服務框架,是當前最成熟的 SOA 服務治理方案。


              對于復雜的分布式事務,我們的電商架構通過微交易架構 TCC 來解決復雜事務的一致性問題。




              SOA

              面向應用SOA把原單體應用里的業務邏輯層剝離出來,作為單獨的服務對外提供。


              例如,會員使用的演出詳情頁,展示演出的信息、演出庫存,演出價格;會員系統修改訂單,同時也需要獲取演出的基本信息、價格信息等。





              微服務

              每個服務獨占式地封裝對應主數據表的訪問,這些服務構成系統的基礎服務,一起組成系統的微內核,供所有上層應用共享。



              微內核服務是原子服務,接口粒度比較細,可以在其上構造聚合服務,為上層應用提供粗粒度服務??梢允切畔⒕酆?,比如圖演出聚合服務整合演出的基本信息/庫存/價格;也可以是流程聚合,比如下單接口,調用來自多個服務的接口,共同完成復雜的下單操作。

              這里服務是分層次的,聚合服務是上層,基礎服務是底層,依賴規則如下:


                      ●  上層服務可以調用同層服務和基礎服務
                      ●  基礎服務是原子服務,不可相互調用
                      ●  前端應用可調用聚合服務和跨層調用基礎服務





              TCC

              跨應用之間,通過業務層面邏輯順序,進行預先鎖定,后續應用事物失敗,之前應用數據回滾來實現。

              TCC分別對應Try、Confirm和Cancel三種操作,這三種操作的業務含義如下:

                  Try:預留業務資源
                  Confirm:確認執行業務操作
                  Cancel:取消執行業務操作


              稍稍對照下關系型數據庫事務的三種操作:DML、Commit和Rollback,會發現和TCC有異曲同工之妙。


              在一個跨應用的業務操作中,Try操作是先把多個應用中的業務資源預留和鎖定住,為后續的確認打下基礎,類似的,DML操作要鎖定數據庫記錄行,持有數據庫資源;Confirm操作是在Try操作中涉及的所有應用均成功之后進行確認,使用預留的業務資源,和Commit類似;而Cancel則是當Try操作中涉及的所有應用沒有全部成功,需要將已成功的應用進行取消(即Rollback回滾)。其中Confirm和Cancel操作是一對反向業務操作。



              隱私保護 | 使用條款 | 網站地圖

              ? 2017 版權所有 北京瑞友科技股份有限公司 京ICP備10023829號-1

              亚洲无码性爱视频

              <code id="n6fag"><menu id="n6fag"></menu></code>
              <p id="n6fag"><legend id="n6fag"></legend></p>
            1. <object id="n6fag"><ol id="n6fag"></ol></object>
              <samp id="n6fag"></samp>

                    <output id="n6fag"><ol id="n6fag"><td id="n6fag"></td></ol></output>
                    <output id="n6fag"></output>

                        <strike id="n6fag"></strike>