Dubbo 底層原理剖析

閱讀指南

本文會通過 圖文 + 案例,對 Dubbo 的底層原理進行剖析 - 探索 Dubbo 分層的意義。閱讀之前,要求對 Dubbo 有所瞭解,並且會簡單使用。

正文

先來看一張摘自官網的 令人頭大 的 Dubbo 框架設計圖,另外還有幾張圖,就不一一貼出了,詳細請參考 Dubbo 框架設計 

其實 Dubbo 官網關於框架設計的部分已經講得很詳細了,但是對於我們這種沒工作多久的菜鳥,仍然需要花費大量的時間去理解。

框架設計的簡要說明

Dubbo 的框架設計圖中從下至上分爲十層,其中,Service 和 Config 層爲 API,其它各層均爲 SPI。也就是除了 Service 和 Config 層,其餘各層都至少有一種替代品。

比如 Protocol 層:

Dubbo 的這種高擴展性全部基於 Dubbo SPI 機制,前面花費了多篇文章去講解 Dubbo SPI 使用,這是研究 Dubbo 源碼的關鍵。

官網 Demo 案例

篇幅原因,具體使用方法和代碼還是到官網 Dubbo - 快速啓動,下面的內容全部基於這個案例。

圖解服務調用過程

官網給出了非常詳細的服務調用過程,都是從架構層面,還有整個流程會經歷哪個類,哪個方法,下面就基於官網的圖文,再結合案例給出自己的理解。

從 main 函數的代碼來看,整個流程看着很簡單

當我們加上註冊中心後

結合 xml 配置 和 Dubbo - 架構, 圖解如下:

結合框架設計

服務引用過程

// 有刪減
dubbo://LOCALHOST:20880/org.apache.dubbo.demo.DemoService
?anyhost=true&application=demo-provider&bind.ip=192.168.31.87&bind.port=20880&
interface=org.apache.dubbo.demo.DemoService
&methods=sayHello,sayHello1×tamp=1586693904645

服務暴露過程

總結

本文結合官網的 Demo 案例, 通過畫圖的方式, 對 Dubbo 的框架設計圖進行了簡化, 目的是瞭解 Dubbo 框架分層的作用。一個簡單的 RPC 就是基於動態代理 + 網絡通信,

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MTmbLCC1cwlnt5bBjO44IA