本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PERF03-BP05 實作使用快取的資料存取模式
實作可受益於快取資料的存取模式,以便快速擷取經常存取的資料。
常見的反模式:
-
快取頻繁變更的資料。
-
您依賴快取資料,就好像它是持久存儲並始終可用一樣。
-
您不考慮快取資料的一致性。
-
您不監控快取實作的效率。
建立此最佳實務的優勢:將資料儲存在快取中可改善讀取延遲、讀取輸送量、使用者體驗和整體效率,並降低成本。
未建立此最佳實務時的風險暴露等級:中
實作指引
快取是旨在存儲資料的軟體或硬體組件,以便更快或更有效地滿足未來對相同資料的請求。如果存儲在快取中的資料丟失,可以透過重複之前的計算或從另一個資料存放區中擷取來進行重建。
資料快取可能是改善整體應用程式效能並減輕基礎主要資料來源負擔的最有效策略之一。可以在應用程式的多個層級快取資料,例如在進行遠端呼叫的應用程式內 (稱為用戶端快取),或使用快速次要服務來儲存資料 (稱為遠端快取)。
用戶端快取
透過用戶端快取,每個用戶端 (查詢後端資料儲存的應用程式或服務) 都可以在指定的時間內,在本機儲存其唯一查詢的結果。這可以先檢查本機用戶端快取,來減少網路對資料儲存的請求數量。如果結果不存在,則應用程式便可查詢資料儲存,並將這些結果儲存在本機。此模式允許每個用戶端將資料儲存在最接近的位置 (用戶端本身),從而達到最低的延遲。當後端資料儲存無法使用時,用戶端也可以繼續提供某些查詢,從而提高整體系統的可用性。
這種方法的一個缺點是,當涉及多個用戶端時,它們可能會在本地存儲相同的快取資料。這會導致這些用戶端之間的重複儲存使用量和資料不一致。一個用戶端可能會快取查詢結果,一分鐘後,另一個用戶端可以執行相同查詢並獲得不同結果。
遠端快取
為了解決用戶端之間的重複資料問題,可以使用快速外部服務或遠端緩存來存儲查詢的資料。每個用戶端都會在查詢後端資料儲存之前檢查遠端快取,而非檢查本機資料存放區。此策略可實現用戶端之間更一致的回應、更好的儲存資料效率以及更高的快取資料量,因為儲存空間會獨立於用戶端進行擴展。
遠端快取的缺點是整個系統可能會遇到較高延遲,因為需要額外的網路跳轉來檢查遠端快取。用戶端快取可以與遠端快取一起用於多層級快取,以改善延遲。
實作步驟
-
識別可能受益於快取的資料庫APIs和網路服務。具有繁重讀取工作負載、比率高 read-to-write或規模昂貴的服務是快取的候選者。
-
找出最適合您的存取模式的適當快取策略類型。
-
遵循資料存放區的快取最佳實務
。 -
針對平衡資料新鮮度和降低後端資料存放區壓力的所有資料,設定快取失效策略,例如 time-to-live(TTL)。
-
在用戶端中啟用自動連線重試、指數退避、用戶端逾時和連線集區等功能 (如果可用),因為它們可以改善效能和可靠性。
-
監控快取命中率,目標為 80% 或更高。較低的值可能表示快取大小不足,或者無法從快取中受益的存取模式。
-
實作資料複寫,將讀取卸載至多個執行個體,並提高資料讀取效能和可用性。
資源
相關文件:
相關影片:
相關範例: