Service Directory 總覽

Service Directory 服務受《Cloud 資料處理附加條款》中規定的 Google 義務規範。

Service Directory 提供單一平台,讓您以一致且可靠的方式發布、探索及連結服務,不受環境限制。Service Directory 支援 Google Cloud、多雲端和地端部署環境中的服務,單一專案最多可擴充至數千項服務和端點。

Service Directory 具有下列功能:

選擇 Service Directory 的理由

應用程式採用服務時,隨著這些服務的端點變更,解析服務位置會變得更加困難。部署在混合式環境中的服務會帶來額外的障礙,因為兩者可能不會共用相同的命名系統,導致服務解析和連線變得困難。為說明這個問題,請參考以下範例。

假設您要建構簡單的 API,而程式碼需要呼叫其他應用程式。如果端點資訊保持靜態,您可以將這些位置硬式編碼到程式碼中,或儲存在小型設定檔中。不過,隨著微服務和多雲端環境的出現,執行個體、服務和環境都可能發生變化,因此這個問題變得更加難以解決。

沒有負載平衡器的 Service Directory (按一下可放大)
不同變更服務 (按一下即可放大)

有了 Service Directory,您就能在單一位置註冊所有服務,並使用 HTTP、gRPC 和 DNS 解析這些服務。

讓我們再次查看先前的圖表,但這次要加入服務目錄。在下圖中,每個服務執行個體都會向 Service Directory 註冊。這些註冊作業會立即反映在 DNS 中,且無論實作方式和環境為何,都可以使用 HTTP/gRPC 查詢。

搭配負載平衡器的 Service Directory (按一下可放大)
搭配負載平衡器的 Service Directory (按一下即可放大)

您可以建立適用於各種 Google Cloud產品 (例如 App Engine 和 GKE) 的通用服務名稱。您可以透過 DNS 提供這些服務。您可以根據服務帳戶的網路、專案和 IAM 角色,對服務套用存取權控管。

Service Directory 可解決下列問題:

  1. 互通性:Service Directory 是通用的命名服務,適用於 Google Cloud、多雲端和地端部署環境。您可以在這些環境之間遷移服務,並繼續使用相同的服務名稱來註冊及解析端點。
  2. 服務管理:Service Directory 是代管服務。貴機構不必擔心維護自有服務登錄檔的高可用性、備援、擴充或維護問題。
  3. 存取權控管:您可以使用 IAM,控管哪些人可以註冊及解析服務。將 Service Directory 角色指派給團隊、服務帳戶和機構。
  4. 純 DNS 的限制:DNS 解析器在遵守 TTL 和快取方面可能不可靠,無法處理較大的記錄大小,且無法輕鬆地向使用者提供中繼資料。除了支援 DNS 之外,Service Directory 也提供 HTTP 和 gRPC API,可查詢及解析服務。

搭配使用 Cloud DNS 和 Service Directory

Cloud DNS 是一項快速、可擴充且穩定的網域名稱系統 (DNS) 服務,採用 Google 基礎架構。

除了公開 DNS 區域,Cloud DNS 也為Google Cloud上的私人網路提供代管內部 DNS 解決方案。私人 DNS 區域可讓您在內部命名虛擬機器 (VM) 執行個體、負載平衡器或其他資源。這些私人 DNS 區域的 DNS 查詢僅限於您的私人網路。

下圖說明如何使用 Service Directory 區域,透過 DNS 查詢取得服務名稱。

搭配使用 Cloud DNS 和 Service Directory (按一下可放大)
搭配服務目錄使用 Cloud DNS (按一下即可放大)

個別元件總覽:

  1. 端點會使用 Service Directory API 直接向 Service Directory 註冊。您可以使用 Service Directory 註冊Google Cloud 和非Google Cloud 服務。
  2. 外部和內部用戶端都可以在 https://servicedirectory.googleapis.com 查詢這些服務
  3. 如要啟用 DNS 要求,請在 Cloud DNS 中建立 Service Directory 區域,並將其與 Service Directory 命名空間建立關聯。
  4. 內部用戶端可透過 DNS、HTTP 和 gRPC 解析這項服務。外部用戶端 (不在私有網路上的用戶端) 必須使用 HTTP 或 gRPC 解析服務名稱。

範例設定

如何透過 DNS 公開服務

下圖說明如何在服務目錄中建立微服務架構模型,並透過 DNS 提供服務。請注意,Service Directory 會維護服務和端點,但私人區域位於 Cloud DNS 中。

透過 DNS 公開服務 (按一下可放大)
透過 DNS 公開服務 (按一下可放大)

在這張圖 (左側) 中,payments 服務已向命名空間註冊,名稱為 backend-namespace、區域為 us-east1,專案為 gcp-project。命名空間已連結至私人區域 example.com

如要進行 DNS 查詢,用戶端會要求網域名稱 _payments._tcp.payments.example.comSRV 記錄,這會解析為付款服務端點的通訊埠號碼和位址記錄。

後續步驟

  • 如要瞭解如何設定 Service Directory 命名空間、在命名空間中建立服務,以及將端點指派給服務,請參閱「設定 Service Directory」。
  • 如要瞭解如何建立可運用現有命名空間的 Service Directory 區域,請參閱「設定 Service Directory DNS 區域」。
  • 如要瞭解如何使用 DNS 查詢現有的 Service Directory 區域,請參閱「使用 DNS 查詢」。
  • 如要瞭解使用 Service Directory 時可能遇到的常見問題解決方案,請參閱這篇文章