2018年7月11日 星期三

應用資料快取的演變: 自 RAM 到 SSD

在 Netflix 僅服務歐美地區的時候, 實作了基於 memcachedEVCache 來提供低延遲,高可靠性的服務.除了與 AWS與 EC2良好地整合外, Netflix 也將其成為在 Github 上的開源專案.
然而隨著 Netflix 的服務範圍的拓展, 需要存放在各地區的備份與快取資料量增加為三倍. 因此需要一個兼顧快速與經濟效益的全球性方案. 由於將資料全部存放在 RAM 上是成本高昂的. 而現今基於 SSD 的儲存技術提供了快速且相較 RAM 較低的成本. Netflix 觀察與實驗後發現使用 SSD 的 throughput 與 latency 依然可以維持其服務的 SLA (Service Level Agreement).
EVCache Moneta 為 Netflix 首次嘗試使用 SSD作為資料儲存媒介. 選擇了將所有資料存放在 SSD (RocksDB) 上並將熱區資料放在 RAM (Memcached) 中. 相較於僅存放在 RAM 中, 這個方式降低了多數基於 Moneta clusters 上超過 60% 的資料.然而這樣的作法會遭遇到 throught 與 latency 的問題.
正當 Netflix 嘗試解決這問題的同時, 採用不同方式使用 NVMe 儲存裝置的 Memcached External Storage (extstore)發表了. Memcached 提供了一個稱為 extstore 的外部儲存場 (external storage shim), 其支援了將資料存放在 SSD (I2) 與 NVMe (I3). extstore 在成本與儲存裝置有著高效率而無需犧牲速度與吞吐量. 所有的 metadata (key & other metadata) 存放在 RAM 上,而實際的資料存放在快閃記憶體中.
而 Netflix 還提供了相關的使用上的 throughput 與 latency 數據. 值得一讀

沒有留言:

Chisel 學習筆記 - Scala 與 Chisel 基礎語法

標題為筆記, 但這篇比較屬於心得 延續 上一篇 的環境建立, 這次計劃藉由 Jserv 最新的 課程安排 來學習 Chisel, 當然個人目標是能夠按照 Jserv 的課程規劃在 期限之內 完成 Lab 3, 由於個人並非 digital designer (現在這年紀也算老貓學...