服務註冊與發現
1. Dubbo 的註冊中心
註冊中心負責在 RPC 情境下儲存伺服器應用程式的資訊。
伺服器會將介面資訊註冊並將自己的地址發送到註冊中心,而客戶端則從註冊中心讀取和訂閱需要呼叫的地址列表。 整體結構如圖所示
有關 Dubbo 服務發現的詳細資訊,請參閱 Dubbo 官方網站概念介紹
2. 服務發現概念
在 Dubbo 生態系統中,服務發現具有以下主要概念
應用程式
應用程式是一個 dubbo 服務行程,對應一個應用程式名稱。
介面(服務)
介面是一個 RPC 介面類別,例如 proto 定義的服務,或 Java 介面類別。 一個 dubbo 行程可以包含多個服務/介面。
方法
方法在介面中定義,一個介面可以包含多個方法。
參數列表
參數列表在方法中定義。 由於 Java 支援多載,因此一個方法可以包含多個參數列表。 對於 Go 來說,這是一對一的關係。
註冊訊息
在「介面級服務發現」情境中,註冊資訊主要包括應用程式名稱、介面列表、中繼資料資訊和伺服器的 IP 地址。 它以 URL 的形式儲存在註冊中心,供客戶端在發起呼叫之前查詢。
在「應用程式級服務發現」情境中,註冊資訊僅包含少量應用程式級資訊,例如應用程式名稱以及應用程式名稱到介面的映射,而介面級資訊則作為中繼資料儲存在中繼資料中心。
中繼資料
中繼資料(Metadata)指的是介面資訊,例如介面名稱、包含的方法、方法對應的參數、序列化方法、協議以及其他資訊。
註冊中心
註冊中心用於儲存伺服器的資訊。
中繼資料中心
中繼資料中心用於儲存伺服器的中繼資料資訊,在「應用層級服務發現」場景下,它是「服務自省」階段的依賴項。
Dubbo-go 最先進的服務網格功能引入了以下概念:
CPU 名稱
主機名稱 (Hostname) 目前應用於在 k8s 上註冊的服務名稱。其他應用程式可以透過主機名稱存取此應用程式執行個體。
端點 (Endpoint)
端點包含執行個體的 IP 位址和埠號。
叢集 (Cluster)
叢集 ID 保存來自 {hostname, cluster_subset_name, port} 的資料。
一個叢集維護叢集 ID 到其包含的所有端點的映射。
服務網格中繼資料
服務網格中繼資料是一個介面名稱到主機名稱的映射,客户端用它來查詢所需介面的主機名稱資訊。
3. Dubbo-go 註冊中心
Dubbo-go 支援的註冊中心類型如下:
註冊中心 | 註冊中心名稱(用於配置) |
---|---|
Zookeeper | ZooKeeper |
Nacos | Nacos |
Etcd | etcd |
Consul | consul |
相關閱讀:[應用層級服務發現的分析]