工作原理
簡單的說,Dubbo是基于Java的RPC框架。Dubbo工作分為4個角色,分別是服務提供者、服務消費者、注冊中心、和監(jiān)控中心。
按照工作階段又分為部署階段和運行階段。
其中部署階段在圖中以藍色的線來表示,代表服務注冊、服務訂閱的過程,而運行階段在圖中以紅色的線來表示,代表一次RPC的完整調用。
部署階段中服務提供方在啟動時在指定的端口上暴露服務,并向注冊中心匯報自己的地址。
服務調用方啟動時向注冊中心訂閱自己感興趣的服務。
運行階段注冊中心先將地址列表推送給服務消費者,服務消費者選取一個地址向對端發(fā)起調用。
在這個過程中,服務消費者和服務提供者的運行狀態(tài)會上報給監(jiān)控中心。
整體架構
這里是Dubbo的整體架構圖。首先這張圖看起來很復雜、信息量很大。不要被嚇到。一點點的來看。
我先介紹一下這張圖的解讀方式。這張圖從左往右看,分為兩部分,左半邊藍色背景的部分代表服務消費者,右半邊綠色背景的部分代表服務提供者。
從上往下看又分為九層。
左邊九層按功能來劃分又被分為了三大類,分別是面向用戶的Biz層、框架核心RPC以及負責遠程傳輸?shù)腞emoting,右邊按面向人群又劃分為了兩類,上面兩層是面向用戶的API,而下面七層是面向擴展提供者的SPI。
圖中的線代表對象與對象之間不同的關系,紫色代表繼承;黑色代表依賴;藍色虛線代表服務注冊、服務訂閱的過程,也就是上面講的部署階段;紅色代表一次完整的RPC調用,也就是運行階段。
我們順著紅色的線,來看下一次完整的RPC調用是如何進行的。
首先從圖的左邊開始,服務消費者從Proxy層發(fā)起一次RPC調用,Dubbo從Registry層拿到服務的地址列表,再通過Cluster層選擇其中的一個作為目標地址,再流經(jīng)Protocol決定的執(zhí)行鏈,最后將服務信息,包括要調用的服務名、方法名、參數(shù)等序列化,再經(jīng)過應用協(xié)議編碼,通過Transport層發(fā)送到網(wǎng)絡上。
右邊的服務提供者從網(wǎng)絡上收到數(shù)據(jù)以后,從下往上,依次通過應用協(xié)議解碼、反序列化得到要調用的服務信息,再經(jīng)由執(zhí)行鏈,最終通過Invoker找到目標服務的目標方法,執(zhí)行并返回結果。
解讀完Dubbo的架構圖,再來看看架構圖中體現(xiàn)的設計原則。
Dubbo秉承高內聚、低耦合的設計,這一點體現(xiàn)在架構圖中九層的清晰劃分上,并且也體現(xiàn)在依賴的方向上。黑色的線條的方向永遠是從上指向下,沒有循環(huán)依賴和反向依賴的出現(xiàn)。
Dubbo還有一個很重要的設計哲學就是平等對待第三方的擴展,即Dubbo內建的功能也是通過同樣的擴展機制提供出來的,第三方的擴展和內建功能可以相互取代。正是由于Dubbo將第三方擴展當成框架的一等公民,為未來基于這個機制建立生態(tài)帶來了可能性。
以上就是長沙達內教育java培訓機構的小編針對“java dubbo框架視頻教程”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。