×

簡析云服務(wù)融入分布式緩存系統(tǒng)架構(gòu)(二)

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-08 10:59:31

EVCache 具有如下的特性: 1EVCache 的CS架構(gòu) EVCache客戶端是一個Java的客戶端,用于發(fā)現(xiàn)EVCache服務(wù)器并管理所有的增刪改查(CRUD)操作,由客戶端處理在集群中添加/刪除服務(wù)器?;趤嗰R遜云服務(wù)可用區(qū),客戶端在執(zhí)行創(chuàng)建、更新和刪除操作的時候復(fù)制數(shù)據(jù)。 另一方面,客戶端的讀操作直接從同一可用區(qū)的服務(wù)器讀取數(shù)據(jù)。

 EVCache 具有如下的特性:

 
1EVCache 的CS架構(gòu)
timg.jpg
 
EVCache客戶端是一個Java的客戶端,用于發(fā)現(xiàn)EVCache服務(wù)器并管理所有的增刪改查(CRUD)操作,由客戶端處理在集群中添加/刪除服務(wù)器?;趤嗰R遜服務(wù)可用區(qū),客戶端在執(zhí)行創(chuàng)建、更新和刪除操作的時候復(fù)制數(shù)據(jù)。
 
另一方面,客戶端的讀操作直接從同一可用區(qū)的服務(wù)器讀取數(shù)據(jù)。
 
一個EVCache客戶端連接了多個EVCache的服務(wù)器集群。 在一個區(qū)域內(nèi),Netflix有多個全數(shù)據(jù)集的拷貝,由亞馬遜云服務(wù)的可用區(qū)隔離開來。虛線框描述了區(qū)域內(nèi)的副本,每個擁有數(shù)據(jù)的全量鏡像,作為AWS的自動伸縮組來管理這些鏡像。某些緩存在一個區(qū)域內(nèi)有兩個鏡像,有的擁有更多。這種高層架構(gòu)長期來看是有效的,不會改變,每個客戶端連接自己區(qū)域內(nèi)所有可用區(qū)的所有服務(wù)器。寫操作被發(fā)往所有實例,讀操作優(yōu)先選擇離讀請求近的服務(wù)器。
 
2EVCache 跨區(qū)域復(fù)制
 
Netflix的全球云服務(wù)遍布AWS各個服務(wù)區(qū)域,例如北弗吉尼亞、俄勒岡州和愛爾蘭,為這些地區(qū)的會員提高就近服務(wù),但網(wǎng)絡(luò)流量會因為各種原因改變,比如關(guān)鍵基礎(chǔ)設(shè)施出了問題故障,或者地區(qū)之間進行失敗恢復(fù)的練習(xí)等,因此Netflix采用無態(tài)應(yīng)用服務(wù)器服務(wù)于來自任何地區(qū)的會員。
 
這些數(shù)據(jù)如果從持久層存儲獲得將會非常昂貴(造成頻繁的數(shù)據(jù)庫訪問),Netflix需要將這種數(shù)據(jù)寫入到本地緩存,而且必須復(fù)制到所有地區(qū)的緩存中,以便服務(wù)于各個地區(qū)的用戶請求。
 
微服務(wù)是依賴于緩存的,必須快速可靠地訪問多種類型的數(shù)據(jù),比如會員的觀影歷史、排行榜和個性化推薦等,這些數(shù)據(jù)的更新與改變都必須復(fù)制到全世界各個地區(qū),以便這些地區(qū)的用戶能夠快速可靠地訪問。
 
這張圖說明復(fù)制操作是在SET操作以后實現(xiàn),應(yīng)用程序調(diào)用EVCache客戶端庫的set方法,之后復(fù)制路徑對于調(diào)用者是透明的:
 
EVCache客戶端庫發(fā)送SET到緩存系統(tǒng)的本地地區(qū)的一個實例服務(wù)器中
 
EVCache客戶端庫同時也將寫入元數(shù)據(jù)(包括key,但不包括要緩存的數(shù)據(jù)本身)到復(fù)制消息隊列(Kafka)
 
本地區(qū)的復(fù)制中繼服務(wù)將會從這個消息隊列中讀取消息
 
中繼服務(wù)會從本地緩存中抓取符合key的數(shù)據(jù)
 
中繼服務(wù)會發(fā)送一個SET請求到另一個地域的復(fù)制中繼服務(wù)
 
在另一個區(qū)域中,復(fù)制中繼服務(wù)會接受請求,然后執(zhí)行SET操作到它的本地緩存,完成復(fù)制
 
在接受地區(qū)的本地應(yīng)用當(dāng)通過GET操作以后會在本地緩存上看到這個已經(jīng)更新的數(shù)據(jù)值
 
這是一個簡單描述,需要注意的是,它只會對SET操作有效,對于其它DELETE TOUCH或批mutation等操作不會復(fù)制,DELETE和TOUCH是非常類似的,只有一點不同:它們不從本地緩存中讀取已經(jīng)存在的值。
 
跨區(qū)域復(fù)制主要是通過消息隊列進行,一個地區(qū)的EVCache客戶端不會注意到其它地區(qū)的復(fù)制情況,讀寫都是只使用本區(qū)域緩存,不會和其它地區(qū)緩存耦合,通過消息系統(tǒng)來解耦合。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費咨詢獲取折扣

Loading