Dubbo原理与框架设计
生活随笔
收集整理的這篇文章主要介紹了
Dubbo原理与框架设计
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Dubbo是常用的開源服務(wù)治理型RPC框架,在之前osgi框架下不同bundle之間的方法調(diào)用時(shí)用到過。其工作原理和框架設(shè)計(jì)值得開源技術(shù)愛好者學(xué)習(xí)和研究。
一、Dubbo的工作原理
調(diào)用關(guān)系說明
二、Dubbo的框架分層
圖例說明:
- 圖中左邊淡藍(lán)背景的為服務(wù)消費(fèi)方使用的接口,右邊淡綠色背景的為服務(wù)提供方使用的接口,位于中軸線上的為雙方都用到的接口。
- 圖中從下至上分為十層,各層均為單向依賴,右邊的黑色箭頭代表層之間的依賴關(guān)系,每一層都可以剝離上層被復(fù)用,其中,Service 和 Config 層為 API,其它各層均為 SPI。
- 圖中綠色小塊的為擴(kuò)展接口,藍(lán)色小塊為實(shí)現(xiàn)類,圖中只顯示用于關(guān)聯(lián)各層的實(shí)現(xiàn)類。
- 圖中藍(lán)色虛線為初始化過程,即啟動(dòng)時(shí)組裝鏈,紅色實(shí)線為方法調(diào)用過程,即運(yùn)行時(shí)調(diào)時(shí)鏈,紫色三角箭頭為繼承,可以把子類看作父類的同一個(gè)節(jié)點(diǎn),線上的文字為調(diào)用的方法。
各層說明
- config 配置層:對(duì)外配置接口,以?ServiceConfig,?ReferenceConfig?為中心,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類
- proxy 服務(wù)代理層:服務(wù)接口透明代理,生成服務(wù)的客戶端 Stub 和服務(wù)器端 Skeleton, 以?ServiceProxy?為中心,擴(kuò)展接口為?ProxyFactory
- registry 注冊(cè)中心層:封裝服務(wù)地址的注冊(cè)與發(fā)現(xiàn),以服務(wù) URL 為中心,擴(kuò)展接口為?RegistryFactory,?Registry,?RegistryService
- cluster 路由層:封裝多個(gè)提供者的路由及負(fù)載均衡,并橋接注冊(cè)中心,以?Invoker?為中心,擴(kuò)展接口為?Cluster,?Directory,?Router,?LoadBalance
- monitor 監(jiān)控層:RPC 調(diào)用次數(shù)和調(diào)用時(shí)間監(jiān)控,以?Statistics?為中心,擴(kuò)展接口為?MonitorFactory,?Monitor,?MonitorService
- protocol 遠(yuǎn)程調(diào)用層:封裝 RPC 調(diào)用,以?Invocation,?Result?為中心,擴(kuò)展接口為?Protocol,?Invoker,?Exporter
- exchange 信息交換層:封裝請(qǐng)求響應(yīng)模式,同步轉(zhuǎn)異步,以?Request,?Response?為中心,擴(kuò)展接口為?Exchanger,?ExchangeChannel,?ExchangeClient,?ExchangeServer
- transport 網(wǎng)絡(luò)傳輸層:抽象 mina 和 netty 為統(tǒng)一接口,以?Message?為中心,擴(kuò)展接口為?Channel,?Transporter,?Client,?Server,?Codec
- serialize 數(shù)據(jù)序列化層:可復(fù)用的一些工具,擴(kuò)展接口為?Serialization,?ObjectInput,?ObjectOutput,?ThreadPool
嘗試試用可參考Dubbo安裝配置手冊(cè)
三、其它RPC框架
motan是和Dubbo類似的服務(wù)治理型RPC框架,是新浪2016年開源的RPC框架,總體設(shè)計(jì)和Dubbo類似,相當(dāng)于Dubbo的精簡(jiǎn)版,去掉了一些不常用的協(xié)議、注冊(cè)中心、通訊組件等的支持。
雖然Dubbo本身不支持多語言,但它可以很方便的集成其它多語言型RPC框架,如thrift等。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Dubbo原理与框架设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pycharm工具下代码下面显示波浪线的
- 下一篇: [react] 请说说什么是useSta