AWS發行了Amazon DynamoDB Accelerator(DAX)的公開預覽版,它是一種完全受托管的write-through緩存服務,在邏輯上位于DynamoDB數據表的前面,提高讀密集型負載的性能。DAX與DynamoDB是API兼容的,也就是說,現有的應用程序可以直接使用DAX,而不用被重寫。該預覽版目前只支持Java SDK。
Amazon DynamoDB是一種完全受托管的、可擴展的NoSQL數據庫服務,它既支持文檔模型也支持鍵值存儲模型。據AWS 博客所稱, DynamoDB可被用于廣告技術、物聯網、游戲、電子商務和金融,有些用戶在一張DynamoDB表中存儲超過100TB的數據而且每秒提交上百萬個讀寫請求。有些高要求的應用程序有著最終一致的讀密集型負載,開發DAX的目的就是為這些應用程序提供快速的內存性能。
DAX可處理下面三種應用場景:
作為內存緩存,DAX將最終一致的讀負載的延時降低了一個數量級,從幾毫秒降到微妙級。
DAX提供了一種可管理的服務來降低運營上和應用上的復雜度,該服務與Amazon DynamoDB是API兼容的,因此在現有應用程序中實現它的時候只要求最小的功能更改。
對于讀取繁重或突發性的負載,DAX降低對過度分配讀容量單元(read capacity units)的需求,從而提高吞吐量和降低運營成本。這一點對遭遇熱鍵(hot keys)的應用程序很有用,對大型DynamoDB數據集(其中,不同分區內的讀容量單元是均等分布的)的讀吞吐量也很有用。
作為一個可管理的服務,DAX集群可通過AWS UI來創建,運營任務如軟件打補丁、集群維護、復制或故障管理是自動處理的(可指定一個維護窗口)。每一個DAX集群可包含1到10個節點,可以通過增加節點來提高整體的讀取吞吐量。緩存的大小基于節點的大小,范圍從dax.r3.large到dax.r3.8xlarge,在集群被初始化的時候指定這個值。集群在VPC中運行,節點可以分布在整個可用區域。
DAX的預覽版目前只支持DynamoDB Java SDK的API,而且必須用一種新的用于Java的DAX SDK來與DAX進行交互。AWS文檔表明,這是因為SDK與集群發生交互時使用了一個低級TCP接口,該接口被調優后用于低延遲和高吞吐量。產品的路線圖中已經包含了支持用其他語言來訪問DAX。
根據DAX開發者指南,這類緩存技術的正面的應用案例包括:
對讀取需要最快的可能響應時間的應用程序。 對一小部分項目讀取更頻繁的應用程序。譬如,為了轉移“熱”鍵和非均勻數據分布的影響,可將讀取活動放在DAX緩存中。 讀密集型和代價敏感型的應用程序。DAX允許將讀取活動從DynamoDB表轉移到DAX集群,從而降低所需要的讀容量單元。 需要反復讀取大量數據的應用程序。譬如,一個長時間運行的數據云的分析程序暫時消耗了一個DynamoDB表的所有讀容量,這將會影響需要訪問同一個數據的其他應用程序。借用DAX,該分析可針對緩存數據進行。對下列應用程序而言,DAX并不是理想的選擇:
需要很強的一致的讀取,或者不能忍受最終一致的讀取的應用程序(然而,當處理一致的讀取時,可配置DAX來讓其引用回DynamoDB表)。 不需要微秒級讀取響應時間的應用程序。 寫密集型或者沒有太多的讀取活動的應用程序。 已經使用了DynamoDB的其他緩存解決方案并相應地使用了自己的客戶端邏輯的應用程序。Amazon DAX的公開預覽版在美國東部(弗吉尼亞州北部)、美國西部(俄勒岡州)和歐洲(愛爾蘭)等地區可免費使用。其他信息可參見DAX開發者指南。
查看英文原文:Amazon DynamoDB Accelerator (DAX) Released in Preview: In-Memory Cache for Read-Intensive Workloads