黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Dubbo原理和機制詳解

Dubbo原理和機制詳解

更新時間:2022-07-21 10:39:45 來源:動力節點 瀏覽2067次

Dubbo原理是什么?動力節點小編來為大家解答。Dubbo 框架是用來處理分布式系統中,服務發現與注冊以及調用問題的,并且管理調用過程。

工作流程:

服務提供者在啟動的時候,會通過讀取一些配置將服務實例化。

Proxy 封裝服務調用接口,方便調用者調用。客戶端獲取 Proxy 時,可以像調用本地服務一樣,調用遠程服務。

Proxy 在封裝時,需要調用 Protocol 定義協議格式,例如:Dubbo Protocol。

將 Proxy 封裝成 Invoker,它是真實服務調用的實例。

將 Invoker 轉化成 Exporter,Exporter 只是把 Invoker包裝了一層,是為了在注冊中心中暴露自己,方便消費者使用。

將包裝好的 Exporter 注冊到注冊中心。

服務消費者建立好實例,會到服務注冊中心訂閱服務提供者的元數據。元數據包括服務 IP 和端口以及調用方式(Proxy)。

消費者會通過獲取的 Proxy 進行調用。通過服務提供方包裝過程可以知道,Proxy 實際包裝了 Invoker 實體,因此需要使用Invoker 進行調用。

在 Invoker 調用之前,通過 Directory 獲取服務提供者的 Invoker列表。在分布式的服務中有可能出現同一個服務,分布在不同的節點上。

通過路由規則了解,服務需要從哪些節點獲取。

Invoker 調用過程中,通過 Cluster 進行容錯,如果遇到失敗策略進行重試。

調用中,由于多個服務可能會分布到不同的節點,就要通過 LoadBalance 來實現負載均衡。

Invoker 調用之前還需要經過 Filter,它是一個過濾鏈,用來處理上下文,限流和計數的工作。

生成過濾以后的 Invoker。

用 Client 進行數據傳輸。

Codec 會根據 Protocol 定義的協議,進行協議的構造。

構造完成的數據,通過序列化 Serialization 傳輸給服務提供者。

Request 已經到達了服務提供者,它會被分配到線程池(ThreadPool)中進行處理。

Server 拿到請求以后查找對應的 Exporter(包含有 Invoker)。

由于 Export 也會被 Filter 層層包裹

通過 Filter 以后獲得 Invoker

最后,對服務提供者實體進行調用。

各個部分整體機制

1.提供者暴露服務的整體機制:

在服務提供者初始化的時候,會通過 Config 組件中的 ServiceConfig 讀取服務的配置信息。這個配置信息有三種形式,分別是 XML 文件,注解(Annoation)和屬性文件(Properties 和 yaml)。

在讀取配置文件生成服務實體以后,會通過 ProxyFactory 將 Proxy 轉換成 Invoker。

此時,Invoker 會被定義 Protocol,之后會被包裝成 Exporter。

最后,Exporter 會發送到注冊中心,作為服務的注冊信息

2.注冊中心

其主要作用如下:

動態載入服務

動態發現服務

參數動態調整

服務統一配置管理

提供者(Provider)啟動時,會向注冊中心寫入自己的元數據信息(調用方式)。

消費者(Consumer)啟動時,也會在注冊中心寫入自己的元數據信息,并且訂閱服務提供者,路由和配置元數據的信息。

服務治理中心(duubo-admin)啟動時,會同時訂閱所有消費者,提供者,路由和配置元數據的信息。

當提供者離開或者新提供者加入時,注冊中心發現變化會通知消費者和服務治理中心。

Dubbo 有四種注冊中心的實現,分別是 ZooKeeper,Redis,Simple 和 Multicast。

ZooKeeper 是負責協調服務式應用的。通過樹形文件存儲的 ZNode 在 /dubbo/Service 目錄下面建立了四個目錄,分別是:

Providers 目錄下面,存放服務提供者 URL 和元數據。

Consumers 目錄下面,存放消費者的 URL 和元數據。

Routers 目錄下面,存放消費者的路由策略。

Configurators 目錄下面,存放多個用于服務提供者動態配置 URL 元數據信息。

客戶端第一次連接注冊中心的時候,會獲取全量的服務元數據,包括服務提供者和服務消費者以及路由和配置的信息。

根據 ZooKeeper 客戶端的特性,會在對應 ZNode 的目錄上注冊一個 Watcher,同時讓客戶端和注冊中心保持 TCP 長連接。

如果服務的元數據信息發生變化,客戶端會接受到變更通知,然后去注冊中心更新元數據信息。變更時根據 ZNode 節點中版本變化進行。

3.服務消費者

服務消費者首先持有遠程服務實例生成的 Invoker,然后把 Invoker 轉換成用戶接口的動態代理引用,服務引用的入口點在 ReferenceBean

4.Dubbo 集群容錯

分布式服務多以集群形式出現,在消費服務發起調用的時候,會涉及到 Cluster,Directory,Router,LoadBalance 幾個核心組件。

cluster生成 Invoker 對象后就獲取可調用的服務列表,在 Directory 獲取所有 Invoker 列表之后,會調用路由接口(Router)。其會根據用戶配置的不同策略對 Invoker 列表進行過濾,只返回符合規則的 Invoker。生成的 Invoker服務有可能分布在不同的節點上面。所以,需要經過 LoadBalance。

5.Dubbo 遠程調用

服務消費者經過容錯,Invoker 列表,路由和負載均衡以后,會對 Invoker 進行過濾,之后通過 Client 編碼,序列化發給服務提供者。

以上就是關于“Dubbo原理和機制詳解”的介紹,大家如果對此比較感興趣,想了解更多相關知識,可以關注一下動力節點的Dubbo教程,里面的課程內容由淺到深,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩专区亚洲综合久久 | 波多野结衣资源在线 | 国产在线精品观看 | 欧美激情视频免费 | 亚洲三级国产 | 天天操天天插 | 亚洲久操 | 日本在线网 | 在线综合视频 | 日韩欧美在线观看 | 国内福利视频 | 一级做a爱过程免费视频高清 | 影音先锋国产 | 国内不卡一二三四区 | 97久久人人| 欧美人视频在线观看视频 | 成人看片黄a毛片 | 一区二区高清在线观看 | 天堂中文在线免费观看 | 日韩大片免费观看视频播放 | a毛片免费 | 欧美激情视频一区二区 | 久久久青草青青亚洲国产免观 | 亚洲一区浅井舞香在线播放 | 黄色片中文字幕 | 日韩在线一区二区三区 | 天天爱天天干天天操 | 成年人视频黄色 | 欧美videosex性欧美成人 | 欧美精品中文 | 天天天干| 护士在线观看 | a久久久久一级毛片护士免费 | 色综合色狠狠天天久久婷婷基地 | 波多野结衣资源在线观看 | 成人免费小视频 | 精品亚洲成a人在线观看 | 国产二区视频在线观看 | 影音先锋日韩 | 日本午夜精品 | 成人午夜视频网站 |