日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo原理与框架设计

發(fā)布時(shí)間:2023/12/9 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo原理与框架设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Dubbo是常用的開源服務(wù)治理型RPC框架,在之前osgi框架下不同bundle之間的方法調(diào)用時(shí)用到過。其工作原理和框架設(shè)計(jì)值得開源技術(shù)愛好者學(xué)習(xí)和研究。

一、Dubbo的工作原理


調(diào)用關(guān)系說明
  • 服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。
  • 服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
  • 服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。
  • 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。
  • 服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。
  • 服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiā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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。