反模式:停用 HTTP 永久 (可重複使用的保持運作) 連線

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

API Proxy 是用戶端應用程式介面,用於連線至後端服務。 Apigee Edge 提供多種透過 API Proxy 連線至後端服務的方法:

持續連線

HTTP 永久連線, HTTP 保持運作或 HTTP 連線重複使用的概念 使用 TCP 連線傳送及傳送 接收多個 HTTP 要求/回應, 而不是針對每個要求/回應組合開啟新的連線。

Apigee Edge 使用永久連線與後端服務進行通訊。連線保持不變 會預設為 60 秒也就是說,如果連線集區內的連線閒置中 超過 60 秒,此時連線就會關閉。

您可以透過名為 keepalive.timeout.millis 的屬性設定保持運作逾時期限。 API Proxy 的 TargetEndpoint 設定中指定的。例如,保持運作 您可以針對 TargetEndpoint 中的特定後端服務,將時間範圍設為 30 秒。

在以下範例中,keepalive.timeout.millis 已在 TargetEndpoint 中設為 30 秒 設定:

<!-- /antipatterns/examples/disable-persistent-connections-1.xml -->
<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>
  </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections
</TargetEndpoint>

在上例中,keepalive.timeout.millis 控制了 與特定後端服務相互通訊還有一個屬性控制保持運作 適用於所有 Proxy 的所有後端服務HTTPTransport.keepalive.timeout.millis 可在「訊息處理者」元件中設定。這個屬性的預設值是 60 秒內請求驗證碼。修改這個屬性會影響到 Apigee Edge 和所有 API Proxy 中的所有後端服務。

反模式

透過設定屬性 keepalive.timeout.millis 停用永久 (保持運作) 連線 特定 API Proxy 的 TargetEndpoint 設定中的 0 或 不建議在訊息處理器中使用 HTTPTransport.keepalive.timeout.millis 到 0,因為 這會影響效能

在以下範例中,TargetEndpoint 設定會停用永久 (保持運作) 連線 將 keepalive.timeout.millis 設為 0,藉此查看特定後端服務的監控狀態:

<!-- /antipatterns/examples/disable-persistent-connections-2.xml -->
<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="keepalive.timeout.millis">0</Property>
     </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

如果一或多項後端服務的持續連線已停用,Edge 必須開啟 每次向目標後端服務發出新要求時都會有新的連線。如果後端是 HTTPS Edge 也會針對每個新要求執行 SSL 握手,增加 API 要求的延遲時間

影響

  • 縮短 API 要求的整體回應時間,因為 Apigee Edge 必須開啟新連線,並 針對每個新要求執行 SSL 握手。
  • 在高流量情況下,連線可能會用盡,因為系統需要一些時間才能釋出連線 返回系統。

最佳做法

  • 後端服務應根據 HTTP 1.1 遵循並處理 HTTP 持續連線。 標準。
  • 如果後端服務具有 Connection:keep-alive 標頭,應透過標頭回應 處理持續 (保持運作) 連線。
  • 如果後端服務無法回應,應透過 Connection:close 標頭回應 持續處理連線

透過這個模式,即可確保 Apigee Edge 可自動處理永久或非永久性 與後端服務保持連線,完全不需要變更 API Proxy。

延伸閱讀