服務配置

服務擁有者如何使用服務配置來控制客戶端行為。

服務配置

服務擁有者如何使用服務配置來控制客戶端行為。

概述

服務配置指定 gRPC 客戶端在與 gRPC 伺服器互動時應如何運作。服務擁有者可以提供服務配置,其中包含所有服務客戶端的預期行為。服務配置中的設定始終適用於特定目標字串(例如「api.myapp.com」),而不是全域。

由服務配置控制的行為

服務配置中的設定會影響客戶端負載平衡、呼叫行為和健康檢查。

此頁面概述服務配置中的選項,但完整的服務配置資料結構已透過 protobuf 定義記錄。

負載平衡

一個服務可以由多個伺服器組成,而負載平衡配置指定來自客戶端的呼叫應如何在這些伺服器之間分佈。預設情況下,使用 pick_first 負載平衡策略,但可以在服務配置中指定其他策略。例如,指定 round_robin 策略將使客戶端輪流使用伺服器,而不是重複使用第一個伺服器。

呼叫行為

RPC 可以透過多種方式配置

  • 啟用 wait-for-ready 後,如果客戶端無法連線到後端,RPC 將會延遲,而不是立即失敗。
  • 可以提供呼叫逾時,指示客戶端在放棄 RPC 之前應等待的最長時間。
  • 以下其中一項
    • 重試策略(最大嘗試次數、退回設定、可重試的狀態碼)
    • 對沖策略(最大嘗試次數、延遲、非致命狀態碼)

健康檢查

可以透過提供健康檢查名稱,將客戶端設定為執行健康檢查。然後,客戶端將使用標準 gRPC 健康檢查服務。

取得服務配置

可以透過名稱解析或由客戶端應用程式以程式設計方式將服務配置提供給客戶端。

名稱解析

gRPC 名稱解析機制允許可插拔的名稱解析器實作。這些實作會傳回與名稱相關聯的位址以及相關聯的服務配置。這是服務擁有者可以將其服務配置分發到大量 gRPC 客戶端機群的機制。

以程式設計方式

gRPC 客戶端 API 提供了一種以 JSON 格式指定服務配置的方法。這用於提供預設服務配置,該配置將用於名稱解析器未提供服務配置的情況下。在某些測試情況下也可能很有用。

服務配置範例

以下範例執行以下操作

  • 啟用 round_robin 負載平衡策略。
  • 設定適用於所有服務中所有方法的 1 秒預設呼叫逾時。
  • 將該逾時覆寫為 foo 服務中的 bar 方法以及 baz 服務中的所有方法的 2 秒。
{
  "loadBalancingConfig": [ { "round_robin": {} } ],
  "methodConfig": [
    {
      "name": [{}],
      "timeout": "1s"
    },
    {
      "name": [
        { "service": "foo", "method": "bar" },
        { "service": "baz" }
      ],
      "timeout": "2s"
    }
  ]
}
上次修改時間為 2024 年 2 月 29 日:使用絕對路徑取代絕對 URL (#1268) (4f733b4)