1. 程式人生 > >Dubbo詳細介紹

Dubbo詳細介紹

比較 采樣 取代 pro log 演進 計算 遠程 最新

1 Dubbo介紹

隨著互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。

技術分享圖片

單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
此時,用於簡化增刪改查工作量的 數據訪問框架(ORM) 是關鍵。

垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相幹的幾個應用,以提升效率。
此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。

分布式服務架構
當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。

此時,用於提高業務復用及整合的 分布式服務框架(RPC) 是關鍵。

流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基於訪問壓力實時管理集群容量,提高集群利用率。
此時,用於提高機器利用率的 資源調度和治理中心(SOA) 是關鍵。

dubbox是dubbo的擴展,主要在dubbo的基礎上進行了一下的改進:

1、支持REST風格遠程調用(HTTP + JSON/XML):基於非常成熟的JBoss RestEasy框架,在dubbo中實現了REST風格(HTTP + JSON/XML)的遠程調用,以顯著簡化企業內部的跨語言交互,同時顯著簡化企業對外的Open API、無線API甚至AJAX服務端等等的開發。事實上,這個REST調用也使得Dubbo可以對當今特別流行的“微服務”架構提供基礎性支持。 另外,REST調用也達到了比較高的性能,在基準測試下,HTTP + JSON與Dubbo 2.x默認的RPC協議(即TCP + Hessian2二進制序列化)之間只有1.5倍左右的差距,詳見文檔中的基準測試報告。

2、支持基於Kryo和FST的Java高效序列化實現:基於當今比較知名的Kryo和FST高性能序列化庫,為Dubbo默認的RPC協議添加新的序列化實現,並優化調整了其序列化體系,比較顯著的提高了Dubbo RPC的性能,詳見文檔中的基準測試報告。

3、支持基於Jackson的JSON序列化:基於業界應用最廣泛的Jackson序列化庫,為Dubbo默認的RPC協議添加新的JSON序列化實現。

4、支持基於嵌入式Tomcat的HTTP remoting體系:基於嵌入式tomcat實現dubbo的HTTP remoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠程調用性能,並將Servlet API的支持從2.5升級到3.1。(註:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等協議都基於這個HTTP remoting體系)。

5、升級Spring:將dubbo中Spring由2.x升級到目前最常用的3.x版本,減少版本沖突帶來的麻煩。

6、升級ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級到最新的版本,以修正老版本中包含的bug。

7、支持完全基於Java代碼的Dubbo配置:基於Spring的Java Config,實現完全無XML的純Java代碼方式來配置dubbo

8、調整Demo應用:暫時將dubbo的demo應用調整並改寫以主要演示REST功能、Dubbo協議的新序列化方式、基於Java代碼的Spring配置等等。
9、修正了dubbo的bug 包括配置、序列化、管理界面等等的bug。

2.dubbo的特性

(1) 連通性:

註冊中心負責服務地址的註冊與查找,相當於目錄服務,服務提供者和消費者只在啟動時與註冊中心交互,註冊中心不轉發請求,壓力較小監控中心負責統計各服務調用次數,調用時間等,統計先在內存匯總後每分鐘一次發送到監控中心服務器,並以報表展示服務提供者向註冊中心註冊其提供的服務,並匯報調用時間到監控中心,此時間不包含網絡開銷服務消費者向註冊中心獲取服務提供者地址列表,並根據負載算法直接調用提供者,同時匯報調用時間到監控中心,此時間包含網絡開銷註冊中心,服務提供者,服務消費者三者之間均為長連接,監控中心除外註冊中心通過長連接感知服務提供者的存在,服務提供者宕機,註冊中心將立即推送事件通知消費者註冊中心和監控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表
註冊中心和監控中心都是可選的,服務消費者可以直連服務提供者

(2) 健狀性:

監控中心宕掉不影響使用,只是丟失部分采樣數據數據庫宕掉後,註冊中心仍能通過緩存提供服務列表查詢,但不能註冊新服務註冊中心對等集群,任意一臺宕掉後,將自動切換到另一臺註冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊服務提供者無狀態,任意一臺宕掉後,不影響使用服務提供者全部宕掉後,服務消費者應用將無法使用,並無限次重連等待服務提供者恢復

(3) 伸縮性:

註冊中心為對等集群,可動態增加機器部署實例,所有客戶端將自動發現新的註冊中心
服務提供者無狀態,可動態增加機器部署實例,註冊中心將推送新的服務提供者信息給消費者

(4) 升級性:

當服務集群規模進一步擴大,帶動IT治理結構進一步升級,需要實現動態部署,進行流動計算,現有分布式服務架構不會帶來阻力:

技術分享圖片

Dubbo詳細介紹