謝璐俊 楊鶴彪


摘要:隨著信息化的發展,企業軟件應用規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行。闡述了如何通過Dubbox框架,將垂直應用架構變成分布式服務架構。實驗結果表明,改進后的架構可以顯著提高系統的健壯性和運行效率。
關鍵詞:Dubbo;Dubbox;SOA;分布式服務架構
DOIDOI:10.11907/rjdk.161137
中圖分類號:TP303
文獻標識碼:A 文章編號:1672-7800(2016)005-0013-03
0 引言
SOA是一種架構模型,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
Dubbo是阿里巴巴內部的SOA服務化治理方案的核心框架,每天為2 000多個服務提供3億多次訪問量支持,廣泛應用于阿里巴巴集團的各成員站點。Dubbo自2011年開源后,已被許多非阿里系公司使用[1]。其中當當根據自身的需求,為Dubbo實現了一些新的功能,包括REST風格遠程調用、Kryo/FST序列化等等,并將其命名為Dubbox(即Dubbo eXtensions)。鑒于此,很多公司SOA框架都采用Dobbox,本文在介紹Dobbox的基礎上,將原有的垂直應用架構查詢系統用Dobbox進行改進,使之成為分布式服務架構。本文分析了架構的關鍵技術,并進行了性能評估。
1 Dubbox 架構設計
1.1 節點角色說明
Provider:暴露服務的服務提供方;
Consumer:調用遠程服務的服務消費方;
Registry:服務注冊與發現的注冊中心;
Monitor:統計服務的調用次數和調用時間的監控中心;
Container:服務運行容器。
1.2 調用關系說明
具體如下:①服務容器負責啟動、加載,運行服務提供者;②服務提供者在啟動時,向注冊中心注冊提供的服務;③服務消費者在啟動時,向注冊中心訂閱所需服務;④注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者;⑤服務消費者從地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用;⑥服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
2 數據服務化系統部署與設計
一個完整的Dubbox服務架構部署,包括Provider(服務提供者)、Consumer(消費者)、Registry(注冊中心)、Monitor(監控中心)和Container(運行容器),采用Spring的配置方式。下面介紹如何部署Dubbox以及將一個傳統的查詢業務部署在Dubbox上[3]。
2.1 注冊中心ZooKeeper
ZooKeeper是一個分布式開源框架,提供了協調分布式應用的基本服務,它向外部應用暴露一組通用服務——分布式同步、命名服務、集群維護等,簡化分布式應用協調及其管理的難度,提供高性能的分布式服務。
本文以ZooKeeper作為Dobbux的注冊中心。ZooKeeper的安裝十分簡便,首先從官網上下載ZooKeeper,解壓后,進入到zooKeeper的conf文件夾中,將zoo_sample.cfg重新命名為zoo.cfg,并且寫上每個節點的名稱和對應IP,然后啟動。
2.2 Container
服務的運行依賴于容器,Dubbox支持大多數Web容器,本文的provider使用的是tomcat容器,consumer使用的是jetty容器
2.3 Provider
從github下載Dubbox的源碼用maven進行編譯,并且用maven將項目導入到eclipse中,其中dubbo-demo-provider就是一個已經配置好的provider的demo,刪除里面的類和spring其它服務的配置,添加自己的類,并在spring中添加配置。
→符號左邊是Consumer的訪問情況,→符號右邊是Provider的訪問情況,可以看出訪問延時非常的小,應用程序分布式部署,擁有了橫向擴展和容錯性特點,實驗證明在采用分布式服務架構以后,優化了查詢性能,提高了服務健壯性。
參考文獻:
[1]阿里巴巴.Dubbo用戶指南[EB/OL].http://dubbo.io/User+Guide-zh.htm
[2]戴亞娥,俞成海,堯飄海.基于REST架構風格的Web2.0實現[J].計算機系統應用,2009(2):165-168.
[3]丁振凡.Spring REST風格Web服務的Json消息封裝及解析研究[J].智能計算機與應用,2012,2(2):9-10.
[4]當當.在Dubbo中開發REST風格的遠程調用[EB/OL].http://dangdangdotcom.github.io/dubbox/rest.html
[5]陳志剛,曾志文.中間應用服務器動態負載均衡的物理模型[J].計算機工程,2004,27(1):44-45.
(責任編輯:杜能鋼)
Abstract:With the development of information technology,the scale of the enterprise software application become lagrer and larger,the conventional vertical application architecture has been unable to cope with it,distributed service architecture and flow computing architecture is imperative.This paper mainly introduces how to use dubbox framework,vertical application architecture into distributed service architecture.The experimental results show that the improved structure,can significantly improve the robustness and efficiency of the system.
Key Words:Dubbo;Dubbox;SOA;Distributed Service Architecture