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

我們的電商架構,將應用程序進行業務拆分,如訂單、用戶、優惠促銷、售后、商品管理等業務,這些業務獨立運行,并提供服務給其他業務。
系統利用分布式服務框架(阿里的 Dubbo )搭建分布式服務。Dubbo 是開源的、高性能和透明化的 RPC 遠程調用服務框架,是當前最成熟的 SOA 服務治理方案。
對于復雜的分布式事務,我們的電商架構通過微交易架構 TCC 來解決復雜事務的一致性問題。
面向應用SOA把原單體應用里的業務邏輯層剝離出來,作為單獨的服務對外提供。
例如,會員使用的演出詳情頁,展示演出的信息、演出庫存,演出價格;會員系統修改訂單,同時也需要獲取演出的基本信息、價格信息等。
每個服務獨占式地封裝對應主數據表的訪問,這些服務構成系統的基礎服務,一起組成系統的微內核,供所有上層應用共享。
微內核服務是原子服務,接口粒度比較細,可以在其上構造聚合服務,為上層應用提供粗粒度服務??梢允切畔⒕酆?,比如圖演出聚合服務整合演出的基本信息/庫存/價格;也可以是流程聚合,比如下單接口,調用來自多個服務的接口,共同完成復雜的下單操作。
這里服務是分層次的,聚合服務是上層,基礎服務是底層,依賴規則如下:
● 上層服務可以調用同層服務和基礎服務
● 基礎服務是原子服務,不可相互調用
● 前端應用可調用聚合服務和跨層調用基礎服務
跨應用之間,通過業務層面邏輯順序,進行預先鎖定,后續應用事物失敗,之前應用數據回滾來實現。
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