在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    聊聊Dubbo的架構(gòu)原理

    聊聊Dubbo的架構(gòu)原理

    1 Dubbo核心功能

  • Remoting:遠(yuǎn)程通訊,提供對多種NIO框架抽象封裝,包括“同步轉(zhuǎn)異步”和“請求-響應(yīng)”模式的信息交換方式。
  • Cluster: 服務(wù)框架,提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
  • Registry: 服務(wù)注冊中心,基于注冊中心目錄服務(wù),使服務(wù)消費方能動態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。
  • 對于以上的3個核心功能,Dubbo有涉及到哪些組件角色,來協(xié)作完成分布式治理的呢?

    2 Dubbo組件角色

    組件角色

    說明

    Provider

    暴露服務(wù)的服務(wù)提供方

    Consumer

    調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費方

    Registry

    服務(wù)注冊與發(fā)現(xiàn)的注冊中心

    Monitor

    統(tǒng)計服務(wù)的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心

    Container

    服務(wù)運行容器

    調(diào)用關(guān)系說明:

    服務(wù)容器Container負(fù)責(zé)啟動,加載,運行服務(wù)提供者。 服務(wù)提供者Provider在啟動時,向注冊中心注冊自己提供的服務(wù)。 服務(wù)消費者Consumer在啟動時,向注冊中心訂閱自己所需的服務(wù)。 注冊中心Registry返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。 服務(wù)消費者Consumer,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。 服務(wù)消費者Consumer和提供者Provider,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心Monitor。

    3 Dubbo總體架構(gòu)

    上面介紹給出的都是抽象層面的組件關(guān)系,可以說是縱向的以服務(wù)模型的組件分析,其實Dubbo最大的特點是按照分層的方式來架構(gòu),使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。所以,我們橫向以分層的方式來看下Dubbo的架構(gòu),如圖所示:

    Dubbo框架設(shè)計一共劃分了10個層,而最上面的Service層是留給實際想要使用Dubbo開發(fā)分布式服務(wù)的開發(fā)者實現(xiàn)業(yè)務(wù)邏輯的接口層。圖中左邊淡藍(lán)背景的為服務(wù)消費方使用的接口,右邊淡綠色背景的為服務(wù)提供方使用的接口, 位于中軸線上的為雙方都用到的接口。

    下面,結(jié)合Dubbo官方文檔,我們分別理解一下框架分層架構(gòu)中,各個層次的設(shè)計要點:

  • 服務(wù)接口層(Service):與實際業(yè)務(wù)邏輯相關(guān)的,根據(jù)服務(wù)提供方和服務(wù)消費方的業(yè)務(wù)設(shè)計對應(yīng)的接口和實現(xiàn)。
  • 配置層(Config):對外配置接口,以ServiceConfig和ReferenceConfig為中心,可以直接new配置類,也可以通過Spring解析配置生成配置類。
  • 服務(wù)代理層(Proxy):服務(wù)接口透明代理,生成服務(wù)的客戶端Stub和服務(wù)器端Skeleton,以ServiceProxy為中心,擴(kuò)展接口為ProxyFactory。
  • 服務(wù)注冊層(Registry):封裝服務(wù)地址的注冊與發(fā)現(xiàn),以服務(wù)URL為中心,擴(kuò)展接口為RegistryFactory、Registry和RegistryService??赡軟]有服務(wù)注冊中心,此時服務(wù)提供方直接暴露服務(wù)。
  • 集群層(Cluster):封裝多個提供者的路由及負(fù)載均衡,并橋接注冊中心,以Invoker為中心,擴(kuò)展接口為Cluster、Directory、Router和LoadBalance。將多個服務(wù)提供方組合為一個服務(wù)提供方,實現(xiàn)對服務(wù)消費方來透明,只需要與一個服務(wù)提供方進(jìn)行交互。
  • 監(jiān)控層(Monitor):RPC調(diào)用次數(shù)和調(diào)用時間監(jiān)控,以Statistics為中心,擴(kuò)展接口為MonitorFactory、Monitor和MonitorService。
  • 遠(yuǎn)程調(diào)用層(Protocol):封將RPC調(diào)用,以Invocation和Result為中心,擴(kuò)展接口為Protocol、Invoker和Exporter。Protocol是服務(wù)域,它是Invoker暴露和引用的主功能入口,它負(fù)責(zé)Invoker的生命周期管理。Invoker是實體域,它是Dubbo的核心模型,其它模型都向它靠擾,或轉(zhuǎn)換成它,它代表一個可執(zhí)行體,可向它發(fā)起invoke調(diào)用,它有可能是一個本地的實現(xiàn),也可能是一個遠(yuǎn)程的實現(xiàn),也可能一個集群實現(xiàn)。
  • 信息交換層(Exchange):封裝請求響應(yīng)模式,同步轉(zhuǎn)異步,以Request和Response為中心,擴(kuò)展接口為Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。
  • 網(wǎng)絡(luò)傳輸層(Transport):抽象mina和netty為統(tǒng)一接口,以Message為中心,擴(kuò)展接口為Channel、Transporter、Client、Server和Codec。
  • 數(shù)據(jù)序列化層(Serialize):可復(fù)用的一些工具,擴(kuò)展接口為Serialization、 ObjectInput、ObjectOutput和ThreadPool。
  • 從上圖可以看出,Dubbo對于服務(wù)提供方和服務(wù)消費方,從框架的10層中分別提供了各自需要關(guān)心和擴(kuò)展的接口,構(gòu)建整個服務(wù)生態(tài)系統(tǒng)(服務(wù)提供方和服務(wù)消費方本身就是一個以服務(wù)為中心的)。

    根據(jù)官方提供的,對于上述各層之間關(guān)系的描述,如下所示:

    在RPC中,Protocol是核心層,也就是只要有Protocol + Invoker + Exporter就可以完成非透明的RPC調(diào)用,然后在Invoker的主過程上Filter攔截點。 圖中的Consumer和Provider是抽象概念,只是想讓看圖者更直觀的了解哪些類分屬于客戶端與服務(wù)器端,不用Client和Server的原因是Dubbo在很多場景下都使用Provider、Consumer、Registry、Monitor劃分邏輯拓普節(jié)點,保持統(tǒng)一概念。 而Cluster是外圍概念,所以Cluster的目的是將多個Invoker偽裝成一個Invoker,這樣其它人只要關(guān)注Protocol層Invoker即可,加上Cluster或者去掉Cluster對其它層都不會造成影響,因為只有一個提供者時,是不需要Cluster的。 Proxy層封裝了所有接口的透明化代理,而在其它層都以Invoker為中心,只有到了暴露給用戶使用時,才用Proxy將Invoker轉(zhuǎn)成接口,或?qū)⒔涌趯崿F(xiàn)轉(zhuǎn)成Invoker,也就是去掉Proxy層RPC是可以Run的,只是不那么透明,不那么看起來像調(diào)本地服務(wù)一樣調(diào)遠(yuǎn)程服務(wù)。 而Remoting實現(xiàn)是Dubbo協(xié)議的實現(xiàn),如果你選擇RMI協(xié)議,整個Remoting都不會用上,Remoting內(nèi)部再劃為Transport傳輸層和Exchange信息交換層,Transport層只負(fù)責(zé)單向消息傳輸,是對Mina、Netty、Grizzly的抽象,它也可以擴(kuò)展UDP傳輸,而Exchange層是在傳輸層之上封裝了Request-Response語義。 Registry和Monitor實際上不算一層,而是一個獨立的節(jié)點,只是為了全局概覽,用層的方式畫在一起。

    4 服務(wù)調(diào)用流程

    5 注冊/注銷服務(wù)

    服務(wù)的注冊與注銷,是對服務(wù)提供方角色而言,那么注冊服務(wù)與注銷服務(wù)的時序圖,如圖所示:

    6 訂閱/取消服務(wù)

    為了滿足應(yīng)用系統(tǒng)的需求,服務(wù)消費方的可能需要從服務(wù)注冊中心訂閱指定的有服務(wù)提供方發(fā)布的服務(wù),在得到通知可以使用服務(wù)時,就可以直接調(diào)用服務(wù)。反過來,如果不需要某一個服務(wù)了,可以取消該服務(wù)。下面看一下對應(yīng)的時序圖,如圖所示:

    作者:猿碼架構(gòu)

    “做程序員,圈子和學(xué)習(xí)最重要”因為有有了圈子可以讓你少走彎路,擴(kuò)寬人脈,擴(kuò)展思路,學(xué)習(xí)他人的一些經(jīng)驗及學(xué)習(xí)方法!同時在這分享一下是一直以來整理的Java后端進(jìn)階筆記文檔和學(xué)習(xí)資料免費分享給大家!需要資料的朋友私信我扣【1】

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月23日 06:13
    下一篇 2022年6月23日 06:13

    相關(guān)推薦

    • 30個無加盟費的項目(茶顏悅色奶茶店加盟費多少)

      茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開業(yè),開張不到半小時,門店就人滿為患,消費者的購買熱情十分高漲,而由于人流量過大造成擁堵,茶顏悅色也不得不暫停營業(yè)。 當(dāng)然,這里面排…

      2022年11月27日
    • 短視頻策劃內(nèi)容的3個要點(短視頻策劃內(nèi)容怎么做)

      短視頻在制作時,內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過時了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

      2022年11月27日
    • 拍錯了拒收快遞運費誰出(淘寶退貨運費誰出)

      很多人在逛淘寶店的時候覺得寶貝圖片看著不錯就買回來,結(jié)果收貨后發(fā)現(xiàn)可能不太合適就想退貨了。那么,淘寶退貨的快遞費用應(yīng)該由誰來出呢?產(chǎn)生的快遞費用應(yīng)該找誰來負(fù)責(zé)呢? 我們知道,根據(jù)《…

      2022年11月27日
    • 沈陽茂業(yè)中心

      由深圳贏商網(wǎng)茂業(yè)集團(tuán)與上海建工集團(tuán)聯(lián)袂打造的沈陽金廊第一高樓沈陽茂業(yè)中心于2011年11月8日順利實現(xiàn)主塔樓結(jié)構(gòu)封頂至此,歷經(jīng)四年,沈陽茂業(yè)中心以31095m的高度雄踞東北超高層建…

      2022年11月25日
    • 成都健康碼打不開顯示接口請求未知異常怎么辦(成都健康碼打不開顯示接口請求未知異常)

      成都這幾天的疫情也是備受關(guān)注,疫情期間各地出行都是需要查看健康碼的,不過今天卻有成都的小伙伴反饋健康碼無法打開的情況。成都健康碼打不開顯示接口請求未知異常怎么辦?由于健康碼無法打開…

      2022年11月24日
    • 銳龍97900x參數(shù)規(guī)格跑分評測 銳龍97900x屬于什么檔次

      銳龍9 7900X是銳龍7000系列處理器中性能頂尖的型號之一,它采用了這一代標(biāo)配的zen4架構(gòu)和5nm制程工藝,那么它具體的參數(shù)跑分如何,在電腦上世紀(jì)發(fā)揮怎么樣呢,下面就來看看銳…

      2022年11月24日
    • 廣州花都嶺南批發(fā)地女裝在哪拿貨好(廣州花都嶺南批發(fā)地女裝)

      廣州的服裝批發(fā)市場人氣一直也都挺高的,不過很多商家第一次來廣州進(jìn)貨,對于一些女裝貨源批發(fā)還不是很了解。廣州花都嶺南批發(fā)地女裝在哪拿貨好?現(xiàn)在廣州服裝貨源批發(fā)哪里最便宜呢?今天小編整…

      2022年11月23日
    • 神舟戰(zhàn)神S7-DA5NS電腦預(yù)售 到手價僅需5399元

      神舟戰(zhàn)神S7-DA5NS正在京東商城預(yù)售搶購,預(yù)售到手價僅需5399元。其搭載了全新12代i5-12450H處理器,擁有2.0GHz八核十二線程效能,RTX3050 4G GDDR…

      2022年11月23日
    • 拼多多免費領(lǐng)商品有什么規(guī)則(拼多多免費領(lǐng)商品金幣后面是什么)

      拼多多免費領(lǐng)商品活動相信不少小伙伴都參加過,吸引力還是很大的,只要砍價成功就可以免費領(lǐng)到商品,一些小伙伴第一次參加不知道拼多多免費領(lǐng)商品有什么規(guī)則?下面小編為大家?guī)砥炊喽嗝赓M領(lǐng)商…

      2022年11月21日
    • 什么是電商打假淘寶電商是如何打假的

      關(guān)鍵詞:淘寶打假 適用行業(yè):適用所有行業(yè) 適用賣家規(guī)模:淘寶店、天貓店 隨著人們法治意識的不斷增強(qiáng)以及互聯(lián)網(wǎng)的迅猛發(fā)展,由互聯(lián)網(wǎng)引起的一些糾紛日漸增多,其中尤為明顯的莫過于網(wǎng)絡(luò)購物…

      2022年11月19日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息