一、dubbo
(1)介紹
dubbo 是阿里巴巴公司開源的乙個高效能優秀的服務框架,使得應用可通過高效能的 rpc 實現服務的輸出和輸入功能,可以和 spring 框架無縫整合。dubbo 框架,是基於容器 執行的.。容器是 spring
(2) 單體架構
單體架構也稱之為單體系統或者是單體應用。就是一種把系統中所有的功能、模組耦合 在乙個應用中的架構方式。
(3) soa架構
面向服務的架構(soa)是乙個元件模型,它將應用程式拆分成不同功能單元(稱為服 務)通過這些服務之間定義良好的介面和契約聯絡起來。
(4) rpc遠端過程呼叫
遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底 層網路技術的協議。
二. dubbo架構圖
(1) registry含義
註冊中心. 是用於發布和訂閱服務的乙個平台.用於替代soa結構體系框架中的esb服 務匯流排的。
(2) consumer含義
服務的消費者, 就是服務的客戶端
(3) provider含義
服務的提供者, 就是服務端.
(4) container含義
容器. dubbo 技術的服務端(provider), 在啟動執行的時候, 必須依賴容器才能正常啟動. 預設依賴的就是 spring 容器. 且 dubbo 技術不能脫離 spring 框架.
(5) monitor含義
監控中心. 是 dubbo 提供的乙個 jar 工程.
2.1 dubbo 執行流程
0 start: 啟動 spring 容器時,自動啟動 dubbo 的 provider
1 register: dubbo 的 provider 在啟動後自動會去註冊中心註冊內容.註冊的內容包括:
1.1 provider 的 ip
1.2 provider 的埠.
1.3 provider 對外提供的介面列表.哪些方法.哪些介面類
1.4 dubbo 的版本.
1.5 訪問 provider 的協議.
2 subscribe: 訂閱.當 consumer 啟動時,自動去 registry 獲取到所已註冊的服務的資訊.
3 notify: 通知.當 provider 的資訊發生變化時, 自動由 registry 向 consumer 推送通知.
4 invoke: 呼叫. consumer 呼叫 provider 中方法
4.1 同步請求.消耗一定效能.但是必須是同步請求,因為需要接收呼叫方法後的結
果. 5 count:次數. 每隔 2 分鐘,provoider 和 consumer 自動向 monitor 傳送訪問次數.monitor 進行統計.
3.dubbo 支援的協議
3.1 dubbo 協議(官方推薦協議)
3.2 rmi(remote method invocation)協議
1) 優點: jdk 自帶的能力。可與原生 rmi 互操作,基於 tcp 協議 2) 缺點: 偶爾連線失敗.
3.3 hessian 協議
1) 優點: 可與原生 hessian 互操作,基於 http 協議 2) 缺點: 需 hessian.jar 支援,http 短連線的開銷大
4 dubbo 支援的註冊中心
4.1 zookeeper(官方推薦)
1) 優點: 支援分布式.很多周邊產品. 2) 缺點: 受限於 zookeeper 軟體的穩定性.zookeeper 專門分布式輔助軟體,穩定較優
4.2 multicast
1) 優點:
去中心化,不需要單獨安裝軟體. 2) 缺點: 2.2.1 provider 和 consumer 和 registry 不能跨機房(路由)
4.3 redis
1) 優點: 支援集群,效能高 2) 缺點: 要求伺服器時間同步.否則可能出現集群失敗問題.
4.4 ******
1) 優點: 標準 rpc 服務.沒有相容問題 2) 缺點: 不支援集群.
三、 dubbo 入門
1 安裝 zookeeper
2 建立 provider
2.1 建立工程
provider 工程型別是 jar 型別
修改pom.xml
介面和實現類
dubbo的原理,實現
config 配置層 對外配置介面,以 serviceconfig,referenceconfig 為中心,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類 proxy 服務 層 服務介面透明 生成服務的客戶端 stub 和伺服器端 skeleton,以 serviceproxy ...
dubbo擋板的實現
實際開發或者測試過程中,因為服務端的不穩定,希望能在客戶端實現擋板功能。下面介紹如何利用 dubbo reference的stub屬性來實現擋板功能。首先,看下dubbo官網對stub的描述 stub 服務介面客戶端本地 類名,用於在客戶端執行本地邏輯,如本地快取等,該本地 類的建構函式必須允許傳入...
自己實現Dubbo的ExtensionLoader
看了dubbo的extensionloader覺得用這樣的方式載入各種元件和替換元件十分的方便,便自己實現了個。使用方法 public static void main string args 輸出結果 這是posthttp 元件的 呼叫 這是gethttp 元件的 呼叫 配置檔案 在src met...