快取面面觀

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本主題說明政策底下的快取運作方式,例如 PopulateCache 政策LookupCache 政策InvalidateCache 政策ResponseCache 政策

關於快取

快取政策執行時,系統會建立短暫的 L1 快取。在 1 秒後,如果未存取快取項目,系統會將該項目保留在資料庫中,供在環境中部署的所有訊息處理程序使用,直到快取內容到期為止。您可以直接在快取政策中設定到期時間。

記憶體內和永久快取層級

共用快取和環境快取都是以雙層系統建構,其中包含內存層和持久層,如下圖所示。政策會以結合的架構與這兩個層級互動。Apigee 會管理各層之間的關係。

快取政策會與第 1 層訊息處理工具互動,而第 1 層訊息處理工具會與第 2 層永久儲存空間互動
  • 第 1 級是記憶體快取 (L1),可快速存取資料。每個訊息處理 (MP) 節點都有自己的記憶體快取,可快速回應要求。
    • L1 是短期 (1 秒) 的記憶體快取。
    • 當記憶體達到限制時,Apigee 會從記憶體中移除快取項目 (但仍保留在 L2 持續性快取中),確保其他程序仍可使用記憶體。
    • L1 提供短暫的 1 秒快取,可針對具有相同快取鍵的並行要求,執行更快速的查詢。
  • 第 2 層是記憶體快取下方的永久快取 (L2)。所有訊息處理節點都會共用快取資料儲存庫 (Cassandra),以便儲存快取項目。
    • 即使快取項目已從 L1 快取移除 (例如達到記憶體內限制),仍會保留在此處。
    • 由於持久快取會在訊息處理器之間共用 (即使位於不同區域),因此無論哪個節點收到快取資料的要求,快取項目都會可用。
    • 只有特定大小的項目可快取,且適用其他快取限制。 請參閱「管理快取限制」。
    • L2 中的快取內容會使用 AES-256 演算法加密。資料會在執行階段使用前解密,並在寫入 L2 之前加密。因此使用者不會看到加密程序。

政策如何使用快取

以下說明 Apigee 如何在快取政策執行時處理快取項目。

  • 當政策將新項目寫入快取 (PopulateCache 或 ResponseCache 政策):
    1. Apigee 只會將項目寫入記憶體中的 L1 快取,且只寫入處理要求的訊息處理器。如果訊息處理器的記憶體限制在項目到期前達到上限,Apigee 就會從 L1 快取中移除該項目。
    2. Apigee 也會將項目寫入 L2 快取。
  • 政策從快取中讀取資料時 (LookupCache 或 ResponseCache 政策):
    1. Apigee 會先在處理要求的訊息處理器中,查看記憶體內 L1 快取中的項目。
    2. 如果沒有對應的記憶體中項目,Apigee 會在 L2 永久快取中尋找該項目。
    3. 如果項目不在永久快取中:
      • LookupCache 政策:系統不會從快取中擷取任何值。
      • ResponseCache 政策:Apigee 會將目標的實際回應傳回給用戶端,並將項目儲存在快取中,直到過期或失效為止。
  • 當政策更新使現有快取項目失效時 (InvalidateCache 政策PopulateCache 政策ResponseCache 政策):
    1. 接收要求的訊息處理器會從一秒內的記憶體內 L1 快取中刪除項目,並從 L2 快取中刪除項目。
    2. 更新或失效後,其他訊息處理器可能仍會保留記憶體內的 L1 快取。
    3. 由於 L1 已設定為在 1 秒內過期,因此不需要刪除/更新事件來從 L1 移除項目。

管理快取限制

您可以透過設定管理快取的部分層面。記憶體快取的可用空間受到系統資源的限制,無法設定。快取有下列限制:

  • 快取限制:適用各種快取限制,例如名稱和值大小、快取總數、快取中的項目數量和到期日。
  • 記憶體內 (L1) 快取。您無法設定快取的記憶體限制。Apigee 會為每個訊息處理器設定限制,這些處理器會為多位客戶代管快取。

    在代管雲端環境中,所有客戶部署的記憶體快取都會跨多個共用訊息處理器代管,每個處理器都具有可透過 Apigee 設定的記憶體百分比閾值,確保快取不會耗用應用程式的所有記憶體。當特定訊息處理器的閾值超過時,快取項目會根據最近最少使用的原則從記憶體中撤銷。從記憶體中淘汰的項目會保留在 L2 快取中,直到項目過期或失效為止。

  • 持續性 (L2) 快取。從記憶體快取中淘汰的項目會根據可設定的存留時間設定,保留在永久快取中。

可設定的最佳化設定

下表列出可用來改善快取效能的設定。

設定 說明 附註
有效期限 指定快取項目的存留時間。