Dubbo簡介
Apache Dubbo |ˈdʌbəʊ| 是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。Dubbo框架,是基於容器運行的.。容器是Spring。
官方網站 : http://dubbo.apache.org/
阿里巴巴已經將dubbo框架捐獻給了Apache軟件基金會
Dubbo框架結構
角色
registry
註冊中心. 是用於發佈和訂閱服務的一個平臺.用於替代SOA結構體系框架中的ESB服務總線的。
發佈
開發服務端代碼完畢後, 將服務信息發佈出去. 實現一個服務的公開.
訂閱
客戶端程序,從註冊中心下載服務內容 這個過程是訂閱.
訂閱服務的時候, 會將發佈的服務所有信息,一次性下載到客戶端.
客戶端也可以自定義, 修改部分服務配置信息. 如: 超時的時長, 調用的重試次數等.
consumer
服務的消費者, 就是服務的客戶端.
消費者必須使用Dubbo技術開發部分代碼. 基本上都是配置文件定義.
provider
服務的提供者, 就是服務端.
服務端必須使用Dubbo技術開發部分代碼. 以配置文件爲主.
container
容器. Dubbo技術的服務端(Provider), 在啓動執行的時候, 必須依賴容器才能正常啓動.
默認依賴的就是spring容器. 且Dubbo技術不能脫離spring框架.
在2.5.3版本的dubbo中, 默認依賴的是spring2.5版本技術. 可以選用spring4.5以下版本.
在2.5.7版本的dubbo中, 默認依賴的是spring4.3.10版本技術. 可以選擇任意的spring版本.
monitor dubbo admin
監控中心. 是Dubbo提供的一個jar工程.
主要功能是監控服務端(Provider)和消費端(Consumer)的使用數據的. 如: 服務端是什麼,有多少接口,多少方法, 調用次數, 壓力信息等. 客戶端有多少, 調用過哪些服務端, 調用了多少次等.
執行流程
- start: 啓動Spring容器時,自動啓動Dubbo的Provider
- register: Dubbo的Provider在啓動後自動會去註冊中心註冊內容.註冊的內容包括:
- Provider的 IP
- Provider 的端口.
- Provider 對外提供的接口列表.哪些方法.哪些接口類
- Dubbo 的版本.
- 訪問Provider的協議.
- subscribe: 訂閱.當Consumer啓動時,自動去Registry獲取到所已註冊的服務的信息.
- notify: 通知.當Provider的信息發生變化時, 自動由Registry向Consumer推送通知.
- invoke: 調用. Consumer 調用Provider中方法
- 同步請求.消耗一定性能.但是必須是同步請求,因爲需要接收調用方法後的結果.
- count:次數. 每隔2分鐘,provoider和consumer自動向Monitor發送訪問次數.Monitor進行統計.
協議
Dubbo協議(官方推薦協議)
優點:
採用NIO複用單一長連接,並使用線程池併發處理請求,減少握手和加大併發效率,性能較好(推薦使用)
缺點:
大文件上傳時,可能出現問題(不使用Dubbo文件上傳)
RMI(Remote Method Invocation)協議
優點:
JDK自帶的能力。可與原生RMI互操作,基於TCP協議
缺點:
偶爾連接失敗.
Hessian協議
優點:
可與原生Hessian互操作,基於HTTP協議
缺點:
需hessian.jar支持,http短連接的開銷大
註冊中心
Zookeeper(官方推薦)
優點:
支持分佈式.很多周邊產品.
缺點:
受限於Zookeeper軟件的穩定性.Zookeeper專門分佈式輔助軟件,穩定較優
Multicast
優點:
去中心化,不需要單獨安裝軟件.
缺點:
2.2.1 Provider和Consumer和Registry不能跨機房(路由)
Redis
優點:
支持集羣,性能高
缺點:
要求服務器時間同步.否則可能出現集羣失敗問題.
Simple
優點:
標準RPC服務.沒有兼容問題
缺點:
不支持集羣.