一、Dubbo 簡介與架構
1.1 應用架構演進過程
- 單體應用:JEE、MVC
- 分布式應用:SOA、微服務化
1.2 Dubbo 簡介 - 一種分布式 RPC 框架,對專業知識(序列化/反序列化、網絡、多線程、設計模式、性能優化等)進行了更高層的抽象和封裝,提供開箱即用的特性。核心設計原則:微內核+插件體系
- Dubbo 架構’
-
-
- Provider啟動時會向注冊中心把自己的元數據注冊上去(比如服務IP和端口等),Consumer在啟動時從注冊中心訂閱(第一次訂閱會拉取全量數據)服務提供方的元數據,注冊中心中發生數據變更會推送給訂閱的Consumero在獲取服務元數據后,Consumer可以發起RPC調用,在RPC調用前后會向監控中心上報統計信息(比如并發數和調用的接口)。
-
- Dubbo 特性
- 面向接口代理的高性能RPC調用
- 服務自動注冊與發現
- 運行期流量調度
- 智能負載均衡
- 高度可擴展能力
- 可視化的服務治理與運維
- 不同架構區別
- 單一應用架構:當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本
- 垂直應用架構:將應用拆成互不相干的幾個應用
- 分布式服務架構
- 流動計算架構
1.3 總體大圖
- Dubbo 總體分層:業務層(Biz)、RPC層、Remote層
- Dubbo 核心組件
- 首先,服務器端(服務提供者)在框架啟動時,會初始化服務實例,通過Proxy組件調用具體協議(Protocol ),把服務端要暴露的接口封裝成Invoker (真實類型是AbstractProxylnvoker),然后轉換成Exporter,這個時候框架會打開服務端口等并記錄服務實例到內存中,最后通過Registry把服務元數據注冊到注冊中心
h2