官方文档: Dubbo 框架设计、模块说明、依赖关系
生活随笔
收集整理的這篇文章主要介紹了
官方文档: Dubbo 框架设计、模块说明、依赖关系
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
以下內(nèi)容全文轉(zhuǎn)自 apache 官方 dubbo文檔:http://dubbo.apache.org/en-us/docs/dev/design.html
?
框架設(shè)計(jì)
?
圖片描述:
- 淺藍(lán)色背景的左側(cè)區(qū)域顯示服務(wù)用戶界面,淺綠色背景的右側(cè)區(qū)域顯示服務(wù)提供者界面,中心區(qū)域顯示兩個(gè)側(cè)面界面。
- 圖像從底部到頂部分為10層,這些層是單向依賴的。右側(cè)的黑色箭頭表示層之間的依賴關(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í)為裝配鏈,方法調(diào)用過程為紅線,運(yùn)行時(shí)調(diào)用鏈,繼承紫色三角箭頭,可將子類視為父類的同一節(jié)點(diǎn),文本為lines是方法調(diào)用。
圖層描述
- config層:外部配置界面,ServiceConfig并且ReferenceConfig是圖層的中心,可以直接初始化配置類,也可以通過spring生成配置類。
- 代理層:服務(wù)接口的透明代理,生成客戶端Stub服務(wù)和服務(wù)器Skeletion of service,ServiceProxy是中心,擴(kuò)展接口是ProxyFactory。
- 注冊(cè)表層:服務(wù)注冊(cè)表和發(fā)現(xiàn)的封裝,服務(wù)URL是中心,擴(kuò)展接口是RegistryFactory,Registry和RegistryService。
- 簇層:muliple提供商和負(fù)載平衡,和橋接登記中心的簇的封裝,Invoker是中心,擴(kuò)展接口是Cluster,Directory,Router,LoadBalance。
- 監(jiān)控層:的RPC調(diào)用倍顯示器和呼叫執(zhí)行時(shí)間,Statistics是中心,擴(kuò)展接口是MonitorFactory,Monitor,MonitorService
- 協(xié)議層:RPC的封裝,Invocation并且Result是中心,擴(kuò)展接口是Protocol,Invoker,Exporter
- 交換層:的請(qǐng)求和響應(yīng),同步傳輸異步封裝,Request并且Response是中心,擴(kuò)展接口是Exchanger,ExchangeChannel,ExchangeClient,ExchangeServer
- 傳輸層:米娜和網(wǎng)狀的抽象,Message是中心,擴(kuò)展接口是Channel,Transporter,Client,Server,Codec
- 序列化層:可重復(fù)使用的工具,擴(kuò)展接口Serialization,ObjectInput,ObjectOutput,ThreadPool
關(guān)系描述
- 在RPC中,Protocol是核心層,它意味著您可以通過Protocol + Invoker + Exporter完成RPC調(diào)用,然后在Invoker的主進(jìn)程中進(jìn)行過濾。
- Consumer和Provider是抽象概念,只是希望您能更直觀地了解哪些類屬于客戶端和服務(wù)器端,不使用Client和Server的原因是Dubbo使用Provider,Consumer,Registry,Monitor劃分邏輯拓?fù)涔?jié)點(diǎn)。場景,保持團(tuán)結(jié)的概念。
- Cluster是外部概念,Cluster的目的是讓各種Invoker偽裝成一個(gè)Invoker,這樣我們只關(guān)注Invoker in Protocol層,添加Cluster或刪除Cluster不會(huì)影響其他層,因?yàn)槲覀儾恍枰狢luster什么時(shí)候只有一個(gè)提供者。
- Proxy層封裝了所有接口的透明代理,在Invoker作為中心的其他層中,將Invoker轉(zhuǎn)換為接口,或者僅在暴露給用戶時(shí)將接口實(shí)現(xiàn)轉(zhuǎn)換為Invoker by Proxy。RPC仍然可以工作,甚至刪除代理層,但不是那么透明,使得遠(yuǎn)程服務(wù)調(diào)用看起來不像本地服務(wù)調(diào)用。
- 遠(yuǎn)程處理是Dubbo協(xié)議的實(shí)現(xiàn),如果選擇RMI,您可以刪除遠(yuǎn)程處理。Remoting分為Transport層和Exchange層,Transport層負(fù)責(zé)單向消息傳輸,它是Mina,Netty,Grizzly的抽象,它還可以擴(kuò)展UDP傳輸。Exchange層在傳輸層上封裝了Request-Response語義。
- 實(shí)際上Registry和Monitor不在同一層,它們是獨(dú)立的節(jié)點(diǎn),只是為了全局視圖而一層一層地繪制它們。
模塊包裝
模塊說明:
- dubbo-common模塊:包括Util類和通用模塊。
- dubbo-remoting模塊:是Dubbo協(xié)議實(shí)現(xiàn),如果使用RMI for RPC則無需使用此模塊。
- dubbo-rpc模塊:各種協(xié)議的抽象,和動(dòng)態(tài)代理,只有一對(duì)一的調(diào)用,不關(guān)心集群的管理。
- dubbo-cluster模塊:將許多服務(wù)提供者偽裝成一個(gè)提供者,包括負(fù)載平衡,容錯(cuò),路由等。群集的地址列表可以是靜態(tài)的,也可以是注冊(cè)表發(fā)送的。
- dubbo-registry模塊:基于注冊(cè)表發(fā)送地址的集群和各種注冊(cè)中心的抽象。
- dubbo-monitor模塊:服務(wù)呼叫時(shí)間統(tǒng)計(jì),呼叫時(shí)間,呼叫鏈跟蹤服務(wù)。
- dubbo-config模塊:是Dubbo外部API,用戶使用Dubbo by Config,隱藏Dubbo的詳細(xì)信息。
- dubbo-container模塊:是一個(gè)Standlone容器,只需使用Main方法加載Spring,因?yàn)橥ǔ7?wù)不需要Tomcat / JBoss功能。
包層根據(jù)層結(jié)構(gòu)劃分,與層劃分的區(qū)別:
- 容器是服務(wù)容器,用于服務(wù)運(yùn)行部署,未在映像中顯示。
- 協(xié)議層和代理層都放在RPC模塊中,它們是RPC模塊的核心,當(dāng)只有1個(gè)提供者時(shí),可以使用這2層完整的RPC調(diào)用。
- 傳輸層和交換層放置在遠(yuǎn)程模塊中,用于RPC呼叫基礎(chǔ)通信。
- 序列化層放在通用模塊中,以便重用。
依賴關(guān)系
圖片描述:
- 圖像,協(xié)議,群集,代理,服務(wù),容器,注冊(cè)表,監(jiān)視器中的框表示層或模塊,藍(lán)調(diào)表示與業(yè)務(wù)交互,綠色表示僅與Dubbo的內(nèi)部交互。
- 圖像,消費(fèi)者,提供者,注冊(cè)表,監(jiān)視器中的背景框表示部署邏輯拓?fù)涔?jié)點(diǎn)。
- 調(diào)用圖像中的藍(lán)色虛線進(jìn)行初始化,為運(yùn)行時(shí)異步調(diào)用紅色虛線,并為運(yùn)行時(shí)同步調(diào)用紅線。
- 圖像僅包含RPC層,不包括Remoting層,整個(gè)Remoting隱藏在Protocol層中。
調(diào)用鏈
展開整個(gè)設(shè)計(jì)地圖的紅色調(diào)用鏈:
公開服務(wù)順序
展開服務(wù)提供者公開服務(wù)的初始化鏈,在整個(gè)設(shè)計(jì)圖的左側(cè),序列圖如下所示:
參考服務(wù)序列
展開服務(wù)使用者參考服務(wù)的初始化鏈,在整個(gè)設(shè)計(jì)圖的右側(cè),序列圖如下所示:
領(lǐng)域模型
達(dá)博的核心領(lǐng)域模型:
- 協(xié)議是服務(wù)域,它是Invoker暴露和參考的主要功能入口,它負(fù)責(zé)Invoker的生命周期管理。
- Invoker是實(shí)體域,它是Dubbo的核心模型,所有其他模型都受到干擾,或轉(zhuǎn)換為它,它代表一個(gè)可執(zhí)行文件,你可以通過調(diào)用invoke來調(diào)用它,它可以是一個(gè)本地實(shí)現(xiàn),一個(gè)遠(yuǎn)程實(shí)現(xiàn),或者集群實(shí)現(xiàn)。
- 調(diào)用是會(huì)話域,它在調(diào)用進(jìn)程中保存變量,例如方法名稱,參數(shù)等。
基本設(shè)計(jì)原則
- 使用Microkernel + Plugin設(shè)計(jì)模式,Microkernel只負(fù)責(zé)組裝插件,Dubbo的功能是通過擴(kuò)展點(diǎn)實(shí)現(xiàn)的,這意味著Dubbo的所有功能都可以被用戶自定義擴(kuò)展替換。
- 使用URL作為配置信息的startdard格式,所有擴(kuò)展點(diǎn)都通過URL傳輸配置信息。
?
總結(jié)
以上是生活随笔為你收集整理的官方文档: Dubbo 框架设计、模块说明、依赖关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt中Qtableview的用法
- 下一篇: Qt 程序获取各种文件路径方法