前置概念
在學習dubbo前,需要先了解SOA和RPC這兩個概念。
SOA
1.英文名稱(Service Oriented Ambiguity)
2.中文名稱:面向服務架構
2.1 有一個專門提供服務單元.
2.2 其他所有單元都調用這個服務.
3.SOA定位:
3.1 如何設計項目,讓開發時更有效率.
3.2 SOA是一種思想
4.之前項目架構設計
4.1 在公司項目不允許所有項目都通路資料庫.
4.2 開發時,資料庫通路層代碼可能出現備援
5.使用SOA架構
5.1 專門通路資料庫服務(項目).
5.2 開發時可以實作,資料通路控制和代碼複用.
6.實作SOA架構時,常用服務.
6.1 Dubbo 做為服務.
6.2 WebService 做為服務.
6.3 Dubbox 做為服務.
6.4 服務方就是web項目,調用web項目的控制器.
6.4.1 使用HttpClient可以調用其他項目的控制器.
RPC
1.英文名稱(Remote Procedure Call Protocol)
2.中文名稱:遠端過程調用協定
3.RPC解析:用戶端(A)通過網際網路調用遠端伺服器,不知道遠端伺服器具體實作,隻知道遠端伺服器提供了什麼功能.
4.RPC最大優點:
4.1 資料安全性.
Dubbo簡介
1.Dubbo:一個分布式、高性能、透明化的RPC服務架構
2.作用:提供服務自動注冊、自動發現等高效服務治理方案.
3.Dubbo架構圖
3.1 Provider :提供者,服務釋出方.
3.2 Consumer:消費者, 調用服務方
3.3 Container:Dubbo容器.依賴于Spring容器.
3.4 Registry: 注冊中心.當Container啟動時把所有可以提供的服務清單上Registry中進行注冊.
3.4.1 作用:告訴Consumer提供了什麼服務和服務方在哪裡.
3.5 Monitor:監聽器
3.6 虛線都是異步通路,實線都是同步通路
3.7 藍色虛線:在啟動時完成的功能
3.8 紅色虛線(實線)都是程式運作過程中執行的功能
3.9 所有的角色都是可以在單獨的伺服器上.是以必須遵守特定的協定.
4.運作原理:
4.0 啟動容器,相當于在啟動Dubbo的Provider
4.1 啟動後會去注冊中心進行注冊.注冊所有可以提供的服務清單
4.2 在Consumer啟動後會去Registry中擷取服務清單和Provider的位址.進行訂閱.
4.3 當Provider有修改後,注冊中心會把消息推送給Consummer
4.3.1 使用了觀察者設計模式(又叫釋出/訂閱設計模式)
4.4 根據擷取到的Provider位址,真實調用Provider中功能.
4.4.1 在Consumer方使用了代理設計模式.建立一個Provider方類的一個代理對象.通過代理對象擷取Provider中真實功能,起到保護Provider真實功能的作用.
4.5 Consumer和Provider每隔1分鐘向Monitor發送統計資訊,統計資訊包含,通路次數,頻率等.