服務註冊與發現

服務註冊與發現

1. Dubbo 的註冊中心

註冊中心負責在 RPC 情境下儲存伺服器應用程式的資訊。

伺服器會將介面資訊註冊並將自己的地址發送到註冊中心,而客戶端則從註冊中心讀取和訂閱需要呼叫的地址列表。 整體結構如圖所示

img

有關 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 支援的註冊中心類型如下:

註冊中心註冊中心名稱(用於配置)
ZookeeperZooKeeper
NacosNacos
Etcdetcd
Consulconsul

相關閱讀:[應用層級服務發現的分析]


最後修改日期:2023 年 2 月 9 日:更新 docsy 至 0.6.0 (#2141) (20081578326)