Dubbo框架————整體架構
上圖中,左邊是serviceConsumer使用的介面和類;右邊是serviceProvider使用的介面和類;中間是雙方均要使用的介面和類。總體上將整個架構分成三大層,分別是Business層、RPC層、Remoting層。其中:
Business層是應用層的介面和實現類,完成應用層的業務邏輯。對於消費端應用層則是利用config配置層的功能在實現類中呼叫Proxy層實現的代理類(即為遠端服務的引用);對於服務端應用層則是實現業務邏輯然後通過Proxy層的Invoker封裝之後,利用config配置層的功能將服務暴露給消費端使用。
RPC層是Dubbo框架的核心,提供透明化的服務釋出和服務引用,裡面可以細分為如下六層:
1)config配置層:使用這一層提供的@註解,xml配置等方法來暴露服務和為服務消費端生成遠端服務代理類;主要是為了方便應用層的使用,提供了與Spring框架的融合功能。
2)proxy服務代理層:服務介面透明代理,可以像調本地服務一樣調遠端服務。在服務暴露的過程中,為服務實現類建立Invoker的代理,在代理類中主要是根據接受到的類名、方法名、引數值等資訊通過反射的方式完成對服務實現類的呼叫。在服務引用過程中,為遠端服務引用Invoker物件(通過從註冊中心獲取服務地址並建立的Invoker物件)建立代理,在應用層呼叫該代理時,由代理類負責呼叫服務引用Invoker物件。
3)registry註冊中心層:完成服務地址的註冊與發現。目前支援的註冊協議有dubbo、multicast、zookeeper、redis。在服務暴露過程中,將服務地址釋出到註冊中心上。在服務引用過程中,對註冊中心進行監聽與訂閱,發現註冊中心上面的所有服務地址,並且在服務地址發生變動時能及時地通知服務消費端更新服務引用Invoker。
4)cluster層:主要是將相同的服務封裝成叢集,在服務呼叫的過程中完成對服務的路由、負載均衡等邏輯處理,最終選擇合適的服務提供者。該層主要是消費端使用,在服務引用過程中,將相同的服務封裝成叢集物件,當呼叫服務時,該叢集物件負責進行路由選擇和負載均衡策略邏輯處理,從服務引用Invoker列表中選擇一個Invoker物件發起遠端服務呼叫。
5)monitor監控層:RPC呼叫次數和呼叫時間監控,傳送資料到monitor監控中心。主要是在服務暴露和服務引用時,為Invoker新增過濾器鏈時將MonitorFilter過濾器放入過濾器鏈中,從而將服務名稱、服務方法、呼叫耗時、併發數等資訊記錄下來,其中服務消費端記錄服務提供者的資訊,服務提供端記錄服務消費者的資訊。
6)protocol遠端呼叫層:封裝RPC呼叫,抽象各種協議,目前支援的協議有dubbo、mock、injvm、rmi、hessian、thrift、memcached、redis、rest。在該層實現各種協議,主要是實現各協議建立服務容器、接受請求並將請求向上層傳遞以及傳送響應訊息等通訊層面的業務邏輯。目前Dubbo框架為擴充套件協議的實現提供了介面及抽象類。
Remoting層主要實現dubbo協議,若使用hessian或其他協議,就不會用到這一層;具體細分為三層:
1)exchange資訊交換層:封裝請求響應模式,同步轉非同步,封裝Request-Response語義。
2)transport網路傳輸層:對Mina,Netty,Grizzly的抽象,socket TCP,UDP程式設計。
3)serialize資料序列化層,將請求訊息或響應訊息進行序列化之後傳送到通訊線路上,對收到的訊息進行反序列化之後提供給上層進行處理。
想了解可以私信我哦!
1 SpringBoot+ 高併發訊息處理 EDM?專案 實戰
2 SpringBoot ELK?分散式 資料分析
3 Netty?高 併發 UTS?專案實戰
4 SpringCloud?微服務+NoSQL+ 負載均衡平臺設計
相關文章
- RPC框架整體架構設計分析RPC框架架構
- Docker整體架構Docker架構
- nginx 整體架構Nginx架構
- 專案-整體架構架構
- Dubbo+Zookeeper(二)Dubbo架構架構
- 4.3. Oracle整體架構Oracle架構
- Flutter系列(三) 整體架構Flutter架構
- Tomcat的整體架構Tomcat架構
- Underscore 整體架構淺析架構
- Netty整體架構解析Netty架構
- Dubbo Mesh 總體技術架構方案架構
- MySQL整體架構與記憶體結構MySql架構記憶體
- 阿里分散式服務框架Dubbo的架構總結阿里分散式框架架構
- 淺談Dubbo架構架構
- TiDB整體架構介紹TiDB架構
- Linux核心的整體架構Linux架構
- jQuery整體架構原始碼解析jQuery架構原始碼
- ==[圖]Spark系列(四)整體架構分析Spark架構
- jQuery原始碼分析系列 : 整體架構jQuery原始碼架構
- newsql新品TiDB的整體架構SQLTiDB架構
- 瓜子智慧線上客服整體架構架構
- 一張圖進階 RocketMQ - 整體架構MQ架構
- TiDB簡介與整體架構TiDB架構
- 聊聊Dubbo(三):架構原理架構
- 全面學習robotframework框架二:整體理解框架結構Framework框架
- go微服務框架go-micro深度學習(一) 整體架構介紹Go微服務框架深度學習架構
- 細緻解析:kubernets整體架構架構
- 死磕Tomcat系列(1)——整體架構Tomcat架構
- 【Mybatis原始碼解析】- 整體架構及原理MyBatis原始碼架構
- 鴻篇鉅製 —— LevelDB 的整體架構架構
- 精盡 MyBatis 原始碼分析 - 整體架構MyBatis原始碼架構
- 《高效能MySQL》筆記-整體架構MySql筆記架構
- OkHttp 3.7原始碼分析(一)——整體架構HTTP原始碼架構
- Oracle記憶體詳解之一 整體架構Oracle記憶體架構
- Dubbo架構設計詳解架構
- Dubbo架構的學習之旅架構
- 完整社交APP需求分析原型設計整體架構前端後端架構APP原型架構前端後端
- 8張圖瞭解JAVA整體構架知識體系!Java