本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 DynamoDB Accelerator (DAX) 進行記憶體內加速
Amazon DynamoDB 是專為擴展與效能所設計。在大多數情況下,DynamoDB 回應時間可以測量到個位數毫秒。但是,有些使用案例需要以微秒為單位的回應時間。對於這些使用案例,DynamoDB Accelerator (DAX) 提供快速回應時間,以存取最終一致的資料。
DAX 是一種 DynamoDB 相容快取服務,可讓您受益於記憶體內快速效能,以因應高需求應用程式。 DAX解決三個核心案例:
-
做為記憶體內快取,DAX 會以十倍為單位 (從個位數毫秒到微秒) 來縮短最終一致讀取工作負載的回應時間。
-
DAX 提供與 DynamoDB API相容的受管服務,可降低操作和應用程式的複雜性。因此,它只需要極少的功能變更,便能搭配現有應用程式使用。
-
針對需要大量讀取或爆量的工作負載,DAX 會透過降低過度佈建讀取容量單位的需求來增加輸送量並可能節省操作成本。這對需要重複讀取個別索引鍵的應用程式特別有利。
DAX 支援伺服器端加密。使用待用加密時,會加密 DAX 保存在磁碟上的資料。DAX 會將資料寫入磁碟,以傳播從主要節點至讀取複本的變更。如需詳細資訊,請參閱DAX 靜態加密。
DAX 也支援傳輸中的加密,確保應用程式和叢集之間的所有請求和回應都經過傳輸層級安全 (TLS) 加密,而且叢集的連線可以透過驗證叢集 x509 憑證進行驗證。如需詳細資訊,請參閱DAX 傳輸中加密。
主題
DAX 的應用案例
DAX 提供從 DynamoDB 資料表存取最終一致資料的權限,並具有微秒延遲。多個可用區 DAX 叢集每秒可處理數百萬個請求。
DAX 適合下列應用程式類型:
-
需要盡可能最快讀取回應時間的應用程式。一些範例包括即時競價、社群遊戲與交易應用程式。DAX 為這些使用案例提供快速的記憶體內部讀取效能。
-
比其他應用程式更常讀取少量項目的應用程式。例如,假設有一部電子商務系統,正對某項熱門產品展開一日促銷。在促銷期間,與其他所有產品相比,針對該產品 (及其在 DynamoDB 中的資料) 的需求會驟增。若要減輕「熱」鍵與不一致流量分佈的影響,您可以將讀取活動卸載至 DAX 快取,直到一日促銷結束為止。
-
需要大量讀取但對成本也很敏感的應用程式。透過 DynamoDB,您可以佈建應用程式所需的每秒讀取數目。如果讀取活動增加,您可以增加資料表的佈建讀取輸送量 (需額外付費)。或者,您可以將活動從應用程式卸載至 DAX 叢集,並減少需要額外購買的讀取容量單位數。
-
需要對大型資料集重複讀取的應用程式。這類應用程式可能會從其他應用程式重新分配資料庫資源。例如,長時間執行的區域天氣資料分析可能會暫時使用 DynamoDB 資料表中的所有讀取容量。這種情況會對其他需要存取相同資料的應用程式造成負面影響。透過 DAX,可改為對快取資料執行天氣分析。
DAX「不」適合下列應用程式類型:
-
需要強烈一致讀取 (或無法容忍最終一致讀取) 的應用程式。
-
讀取回應時間不需要到微秒,或不需從基礎資料表卸載重複讀取活動的應用程式。
-
寫入密集型的應用程式。大量寫入會導致叢集中DAX節點之間的複寫增加。這會導致資源消耗增加,以及可用性問題的風險。
-
沒有許多重複讀取的應用程式。當快取命中率超過 90% 時, 會DAX執行最佳。較低的快取命中率會增加快取遺漏,這會在整個DAX叢集中消耗更多資源。
DAX 用量備註
-
如需DAX可用 AWS 的區域清單,請參閱 Amazon DynamoDB 定價
。 -
DAX 支援以 Go、Java、Node.js、Python 和 . 撰寫的應用程式NET,並使用 AWS這些程式設計語言提供的用戶端。
-
DAX 僅適用於 EC2-VPC 平台。
-
DAX 叢集服務角色政策必須允許
dynamodb:DescribeTable
動作,才能維護 DynamoDB 資料表的中繼資料。 -
DAX 叢集會維護其存放項目屬性名稱的中繼資料。它會無限期地維護該中繼資料 (即使項目過期或從快取中移出也一樣)。長期下來,使用屬性名稱未限制數量的應用程式可能會在 DAX 叢集中造成記憶體用盡。此限制僅適用於頂層屬性名稱,而非巢狀屬性名稱。有問題的頂層屬性名稱範例包括時間戳記、 UUIDs和工作階段 IDs。
此限制僅適用於屬性名稱,而非其值。與以下相似的項目則不是問題。
{ "Id": 123, "Title": "Bicycle 123", "CreationDate": "2017-10-24T01:02:03+00:00" }
但與以下相似的項目,若數量夠多且每個都具有不同的時間戳記,則可能會造成問題。
{ "Id": 123, "Title": "Bicycle 123", "2017-10-24T01:02:03+00:00": "created" }