DUBBO學習 概述

2021-08-03 17:33:04 字數 1818 閱讀 8682

dubbo是alibaba開源的分布式服務框架,它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地鬆耦合)。從服務模型的角度來看,dubbo採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方(provider)和服務消費方(consumer)兩個角色。關於註冊中心、協議支援、服務監控等內容,詳見後面描述。

dubbo的總體架構:

dubbo框架設計一共劃分了10個層,而最上面的service層是留給實際想要使用dubbo開發分布式服務的開發者實現業務邏輯的介面層。圖中左邊淡藍背景的為服務消費方使用的介面,右邊淡綠色背景的為服務提供方使用的介面, 位於中軸線上的為雙方都用到的介面。

下面,結合dubbo官方文件,我們分別理解一下框架分層架構中,各個層次的設計要點:

服務介面層(service):該層是與實際業務邏輯相關的,根據服務提供方和服務消費方的業務設計對應的介面和實現。

配置層(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的架構簡單概述

節點角色說明 provider 暴露服務的服務提供方。consumer 呼叫遠端服務的服務消費方。registry 服務註冊與發現的註冊中心。monitor 統計服務的呼叫次調和呼叫時間的監控中心。container 服務執行容器。呼叫關係說明 0.服務容器負責啟動,載入,執行服務提供者。1.服務提...

Dubbo 的整體架構分層概述

配置層 con g 對外配置介面,以 servicecon g 和 referencecon g 為中心 服務 層 proxy 服務介面透明 生成服務的客戶端 stub 和 服務端的 skeleton,以 serviceproxy 為中心,擴充套件介面為 proxyfactory 路由層 clust...

dubbo 學習體驗

dubbo學習的xml配置和註解配置 xml配置 以上是spring配置provider.xml 以下是spring配置dubbo service.xml,對外暴露服 對外提供服務,ref為介面的實現類,採用的是spring的預設beanname,通訊協議protocol為dubbo 以下是引用該服...