AWS的每個區(qū)域一般由多個可用區(qū)(AZ)組成,而可用區(qū)一般是由多個
數(shù)據(jù)中心組成。AWS引入可用區(qū)設(shè)計主要是為了提升用戶應用程序的高可用性。因為可用區(qū)與可用區(qū)之間在設(shè)計上是相互獨立的,也就是說它們會有獨立的供電、獨立的網(wǎng)絡(luò)等,這樣假如一個可用區(qū)出現(xiàn)問題時也不會影響另外的可用區(qū)。在一個區(qū)域內(nèi),可用區(qū)與可用區(qū)之間是通過高速網(wǎng)絡(luò)連接,從而保證很低的延時。
EVCache實例通過將Amazon EC2放到多個可用區(qū), 能夠預防應用的單點故障。無論在相同的物理區(qū)域內(nèi)還是在不同的物理區(qū)域之間,在多個AZ上運行獨立的應用都是非常重要的。如果一個可用區(qū)失效了,在其它可用區(qū)上的應用可以繼續(xù)運行,從而實現(xiàn)高可用性。
由于跨越了多個亞馬遜
云服務可用區(qū),EVCache集群是不會掛掉的。當其中的實例偶然掛掉時,通過一致性哈??缂悍制瑏硎咕彺娴挠绊懡档阶畹汀?/div>
在保持高可用性的同時,操作EVCache集群的總體成本很低,因為緩存沒有命中時訪問亞馬遜云服務服務的成本較高,如訪問SimpleDB、AWS S3、EC2上的Cassandra等等。EVCache 集群的總體成本在高穩(wěn)定,線性擴展的條件下還是令人滿意的。
隱藏在需求后面的是數(shù)據(jù)或狀態(tài)所需要的每個請求服務,必須是跨地區(qū)可用的。高可靠性
數(shù)據(jù)庫和高性能緩存是支持分布式架構(gòu)的基礎(chǔ)設(shè)施,一個典型場景是將緩存架構(gòu)于數(shù)據(jù)庫前面或其它持久存儲前面。如果沒有緩存的全局復制,一個地區(qū)的的會員切換到另外一個地區(qū)時,會在新的地區(qū)緩存中沒有原地區(qū)的數(shù)據(jù),這種情況稱為冷緩存。處理這種緩存數(shù)據(jù)丟失的辦法只有重新從數(shù)據(jù)庫加載,但是這種方式會延長響應時間并對數(shù)據(jù)庫形成巨大沖擊,EVCache 除了跨可用區(qū)復制之外,還提供了跨區(qū)域復制,對基于AWS的高可用性進行了增強。
4EVCache的典型應用場景
Netflix的用戶體驗重度依賴于大容量、低時延、全球可用的緩存數(shù)據(jù)層。例如,用戶坐在沙發(fā)上看電影或者電視節(jié)目,在用戶的每一次交互中都有緩存的身影,從會話存儲到視頻歷史,到用戶狀態(tài),都得益于EVCache的穩(wěn)定和高容錯性。
這里介紹一個典型的用例——向用戶推薦與已看歷史中節(jié)目類似的電影或者電視節(jié)目。
內(nèi)容相似性推薦服務給出了與已看歷史中節(jié)目類似的電影或者電視節(jié)目的相似性列表。一旦計算出了相似性,就存儲在SimpleDB/S3 中,前端使用EVCache。當任何應用或者算法需要這些數(shù)據(jù)的時候,可以從 EVCache提取數(shù)據(jù),并返回結(jié)果。具體過程如下:
一個客戶向Web應用發(fā)了一個頁面請求,處理這一請求需要得到一個電影或電視節(jié)目的相似性列表
Web應用查詢 EVCache 來得到這些數(shù)據(jù),這樣場景的典型緩存命中率高于99.9%
如果緩存沒有命中, Web應用將調(diào)用相似性計算服務來計算這些數(shù)據(jù)
如果已經(jīng)計算過的數(shù)據(jù)也沒有命中的話, 相似性計算服務將從 SimpleDB中讀取數(shù)據(jù)。如果在SimpleDB 沒有,相似性計算服務根據(jù)給出的電影或電視節(jié)目重新計算相似性
相似性計算服務在計算出電影或電視節(jié)目的數(shù)據(jù)后,將數(shù)據(jù)寫入到 EVCache中
最后,相似性計算服務生成客戶端所需要的響應并返回給客戶端
EVCache 是線性擴展的,通過容量監(jiān)控,可以在一分鐘內(nèi)擴容,在幾分鐘內(nèi)完成重新均衡和數(shù)據(jù)預熱。