Dubbo原理 實戰 原始碼

2021-10-01 11:53:21 字數 1725 閱讀 4394

核心功能

架構圖

服務容器啟動,載入,並執行服務提供者;

服務提供者(provider)在啟動時,向註冊中心(registry)提供自己的服務

服務消費者(consumer),向註冊中心訂閱自己需要的服務;

註冊中心返回服務提供者位址列表給消費者(consumer),如有變更,註冊中心將基於長連線推送變更資料給消費者(consumer);

服務消費者(consumer)從提供者(provider)位址列表中,基於負載均衡演算法,選一台提供者進行呼叫,如呼叫失敗,選另一台;

服務消費者(consumer)和提供者(provider),在記憶體中累計呼叫次數與時間,每分鐘一次統計資料到監控中心(monitor)

配置層(config):對外配置介面,以serviceconfig和referenceconfig為中心,可以直接new配置類,也可以通過spring解析配置生成配置類。

服務**層(proxy):服務介面透明**,生成服務的客戶端stub和伺服器端skeleton,以serviceproxy為中心,擴充套件介面為proxyfactory。

服務註冊層(registry):封裝服務位址的註冊與發現,以服務url為中心,擴充套件介面為registryfactory、registry和registryservice。可能沒有服務註冊中心,此時服務提供方直接暴露服務。

集群層(cluster):封裝多個提供者的路由及負載均衡,並橋接註冊中心,以invoker為中心,擴充套件介面為cluster、directory、router和loadbalance。將多個服務提供方組合為乙個服務提供方,實現對服務消費方來透明,只需要與乙個服務提供方進行互動。

監控層(monitor):rpc呼叫次數和呼叫時間監控,以statistics為中心,擴充套件介面為monito***ctory、monitor和monitorservice。

遠端呼叫層(protocol):封將rpc呼叫,以invocation和result為中心,擴充套件介面為protocol、invoker和exporter。protocol是服務域,它是invoker暴露和引用的主功能入口,它負責invoker的生命週期管理。invoker是實體域,它是dubbo的核心模型,其它模型都向它靠擾,或轉換成它,它代表乙個可執行體,可向它發起invoke呼叫,它有可能是乙個本地的實現,也可能是乙個遠端的實現,也可能乙個集群實現。

資訊交換層(exchange):封裝請求響應模式,同步轉非同步,以request和response為中心,擴充套件介面為exchanger、exchangechannel、exchangeclient和exchangeserver。

網路傳輸層(transport):抽象mina和netty為統一介面,以message為中心,擴充套件介面為channel、transporter、client、server和codec。

資料序列化層(serialize):可復用的一些工具,擴充套件介面為serialization、

objectinput、objectoutput和threadpool。

dubbo原始碼解析 簡單原理

dubbo原始碼解析 簡單原理 與spring融合 dubbo是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及soa服務治理方案 面向服務的體系架構 soa service oriented architecture 各服務是部署在不同的伺服器上,那服務間的呼叫就是要通過...

Dubbo原始碼解析 服務暴露原理

服務發布和服務的引用到底什麼實現的呢?我們追蹤這個問題進行下面的學習?首先我們通過控制台檢視服務啟動過程中,日誌記錄了什麼?通過日誌看出發布的過程 暴露本地服務 暴露遠端服務 啟動netty 連線zookeeper 註冊到zookeeper 監聽zookeeper the service ready...

dubbo原始碼 dubbo之Listener

1.exporterlistener spi public inte ce exporterlistener 使用者可以繼承該方法重寫需要的方法 public abstract class exporterlisteneradapter implements exporterlistener pub...