av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

當云服務融入分布式緩存系統(tǒng)架構,會擦出怎樣的火花?

當云服務融入分布式緩存系統(tǒng)架構,會擦出怎樣的火花?

作者:曹洪偉 2018-03-23 10:42:14

服務器

分布式 在互聯(lián)網(wǎng)技術中有兩大支點,其中一個就是緩存,而分布式緩存系統(tǒng)更是大型互聯(lián)網(wǎng)應用的利器。面對不斷增長的海量數(shù)據(jù)、不可預知的流量模式以及快速響應時間的需求,這正是云計算服務的動態(tài)性之關鍵優(yōu)勢。

 在互聯(lián)網(wǎng)技術中有兩大支點,其中一個就是緩存,而分布式緩存系統(tǒng)更是大型互聯(lián)網(wǎng)應用的利器。面對不斷增長的海量數(shù)據(jù)、不可預知的流量模式以及快速響應時間的需求,這正是云計算服務的動態(tài)性之關鍵優(yōu)勢。

那么,當云服務融入分布式緩存系統(tǒng)架構,會碰撞出怎樣的火花呢?

大型互聯(lián)網(wǎng)應用中的緩存

先回顧一下緩存在大型互聯(lián)網(wǎng)應用的架構(如圖1),網(wǎng)站在發(fā)展的歷程中,業(yè)務量的增長是幸福的煩惱,而緩存技術就是解除煩惱的靈丹妙藥,能夠再次理解為什么是緩存為王。

圖1 緩存在大型網(wǎng)站系統(tǒng)中的應用

實際上,這時的系統(tǒng)進入了無級縮放的大型網(wǎng)站階段,當網(wǎng)站流量增加時,應對的解決方案就是不斷地添加Web 服務器、數(shù)據(jù)庫服務器以及緩存服務器了。如何動態(tài)的增減服務器,這正是云服務的用武之地。

云服務的優(yōu)勢

對企業(yè)而言,云服務有著諸多的商業(yè)優(yōu)勢。

首先,企業(yè)的前期基礎設施投資幾乎為零。如果要建立一個大型的系統(tǒng),可能需要大量的投資用于于機房、硬件(機架、服務器、路由器、備用電源)、硬件管理(電源管理、散熱)和運維人員。由于高昂的前期成本,該項目通常在開始之前需要多輪的管理審批和論證。而采用公有云服務,幾乎沒有固定成本或啟動成本。

其次,云服務提供了基礎設施即時性。在過去,當互聯(lián)網(wǎng)應用開始大規(guī)模上量時,如果基礎設施跟不上規(guī)模的增長,將會極大地影響應用的成功。但如果前期投入了大量資金,而應用沒有得到普及,基礎設施又將成為失敗的犧牲品。云服務增加了靈活性,降低了風險和運營成本,可以根據(jù)用于成長的規(guī)模而按需付費。

***,云服務可以更有效地利用資源,根據(jù)使用狀況來計算成本,同時縮短產(chǎn)品的上市時間。

云服務的技術優(yōu)勢同樣明顯,主要的特點如下:

自動化:基礎設施的腳本化可以通過充分利用API對基礎設施編程,完成構建和系統(tǒng)部署的可重復性。

自動擴展:無需任何人工干預,就可以根據(jù)需求對應用進行雙向擴展。自動縮放提高了自動化程度從而更加高效。

主動擴展:基于需求預期和流量模式的合理規(guī)劃,可以對應用進行雙向擴展讓從而保持低成本運營。

更有效的開發(fā)周期:可以很容易將開發(fā)和測試環(huán)境復制到生產(chǎn)系統(tǒng),不同階段的環(huán)境可以很容易地推廣到生產(chǎn)系統(tǒng)。

改進的可測性:不需要進行硬件過載的測試,注入和自動化測試能夠持續(xù)于開發(fā)過程的各個階段。

災難恢復和業(yè)務連續(xù)性: 云服務為維護一系列應用服務器和數(shù)據(jù)存儲提供了低成本選擇。使用云服務,可以在幾分鐘內(nèi)完成將某一地點的環(huán)境復制到其他地域的云環(huán)境中。

云服務的選擇有很多,如阿里云、百度云、騰訊云等,但AWS作為云服務的商用鼻祖,有著很多獨特的特性和廣泛的應用。AWS云服務以最小的支持和管理成本,通過高度可靠和可擴展的基礎設施,提供了Web應用部署的解決方案,其靈活性遠高于自建的基礎設施,無論這些設施是企業(yè)內(nèi)部的部署環(huán)境還是在數(shù)據(jù)中心設施。

EVCache:基于云服務的分布式緩存系統(tǒng)

云服務不僅為軟件系統(tǒng)的開發(fā)和部署帶來了更多的敏捷性,而且提供了更多創(chuàng)新的可能性。AWS云服務與分布式緩存服務系統(tǒng)相結合就產(chǎn)生了一些杰出的技術方案,一個典型的案例是Netflix的EVCache。

EVCache 是一個開源、快速的分布式緩存,基于 Memcached的內(nèi)存存儲和 Spymemcached 客戶端實現(xiàn)的解決方案,主要用在亞馬遜彈性計算云服務 (AWS EC2)的基礎設施上,為云計算做了優(yōu)化,能夠順暢而高效地提供數(shù)據(jù)層服務。

EVCache 是一個縮寫,包括:

  • Ephemeral: 數(shù)據(jù)存儲是短暫的,有自身的存活時間。
  • Volatile: 數(shù)據(jù)可以在任何時候消失。
  • Cache:一個內(nèi)存型的鍵值對存儲系統(tǒng)。

EVCache實現(xiàn)的主要功能包括分布式鍵值對存儲、AWS的跨區(qū)域數(shù)據(jù)復制以及注冊和自動發(fā)現(xiàn)新節(jié)點或新服務。EVCache典型的應用是對上下文一致性要求不高的場景,其可擴展性已經(jīng)可以處理非常大的流量,同時提供了健壯的API。

Netflix 是微服務架構領域的實踐者,在系統(tǒng)中布署了上百個微服務,每一個微服務只專注做一件事情。這使得Netflix所提供的軟件系統(tǒng)能夠做到高度均衡和松耦合。由于狀態(tài)都存儲在緩存或持久存儲中,所以這些微服務大多數(shù)是無狀態(tài)的,易于自動擴展。

EVCache在Netflix內(nèi)部是一個被廣泛使用的數(shù)據(jù)緩存服務,所提供的低延遲且高可用的緩存方案可以很好地滿足Netflix微服務架構需要,也用來做一般數(shù)據(jù)的存儲。EVCache 能夠使面向終端用戶的應用,個性化算法和各種微服務都具備優(yōu)良的性能。

EVCache 具有如下的特性:

  • 分布式的鍵值對存儲, 緩存可以跨越多個實例
  • 數(shù)據(jù)可以跨越亞馬遜云服務的可用區(qū)進行復制
  • 通過Netflix內(nèi)部的命名服務進行注冊,自動發(fā)現(xiàn)新節(jié)點和服務
  • 為了存儲數(shù)據(jù),鍵是非空字符串,值可以是非空的字節(jié)數(shù)組、基本類型或者序列化對象,且小于 1 MB
  • 作為通用的緩存集群被各種應用使用,支持可選的緩存名稱,以命名空間避免主鍵沖突
  • 一般的緩存***率在 99%以上
  • 與Netflix 駐留數(shù)據(jù)框架能夠良好協(xié)作,典型的訪問次序: 內(nèi)存 ->EVCache -> Cassandra/SimpleDB/S3

1EVCache 的CS架構

EVCache客戶端是一個Java的客戶端,用于發(fā)現(xiàn)EVCache服務器并管理所有的增刪改查(CRUD)操作,由客戶端處理在集群中添加/刪除服務器?;趤嗰R遜云服務可用區(qū),客戶端在執(zhí)行創(chuàng)建、更新和刪除操作的時候復制數(shù)據(jù)。

另一方面,客戶端的讀操作直接從同一可用區(qū)的服務器讀取數(shù)據(jù)。圖2展示了EVCache 的典型部署結構和單節(jié)點客戶端實例與服務器的關系。

圖2 EVCache單節(jié)點客戶端實例與服務器的關系

一個EVCache客戶端連接了多個EVCache的服務器集群。 在一個區(qū)域內(nèi),Netflix有多個全數(shù)據(jù)集的拷貝,由亞馬遜云服務的可用區(qū)隔離開來。虛線框描述了區(qū)域內(nèi)的副本,每個擁有數(shù)據(jù)的全量鏡像,作為AWS的自動伸縮組來管理這些鏡像。某些緩存在一個區(qū)域內(nèi)有兩個鏡像,有的擁有更多。這種高層架構長期來看是有效的,不會改變,每個客戶端連接自己區(qū)域內(nèi)所有可用區(qū)的所有服務器。寫操作被發(fā)往所有實例,讀操作優(yōu)先選擇離讀請求近的服務器。

2EVCache 跨區(qū)域復制

Netflix的全球云服務遍布AWS各個服務區(qū)域,例如北弗吉尼亞、俄勒岡州和愛爾蘭,為這些地區(qū)的會員提高就近服務,但網(wǎng)絡流量會因為各種原因改變,比如關鍵基礎設施出了問題故障,或者地區(qū)之間進行失敗恢復的練習等,因此Netflix采用無態(tài)應用服務器服務于來自任何地區(qū)的會員。

這些數(shù)據(jù)如果從持久層存儲獲得將會非常昂貴(造成頻繁的數(shù)據(jù)庫訪問),Netflix需要將這種數(shù)據(jù)寫入到本地緩存,而且必須復制到所有地區(qū)的緩存中,以便服務于各個地區(qū)的用戶請求。

微服務是依賴于緩存的,必須快速可靠地訪問多種類型的數(shù)據(jù),比如會員的觀影歷史、排行榜和個性化推薦等,這些數(shù)據(jù)的更新與改變都必須復制到全世界各個地區(qū),以便這些地區(qū)的用戶能夠快速可靠地訪問。

圖3 EVCache 跨地域的數(shù)據(jù)復制

這張圖說明復制操作是在SET操作以后實現(xiàn),應用程序調(diào)用EVCache客戶端庫的set方法,之后復制路徑對于調(diào)用者是透明的:

EVCache客戶端庫發(fā)送SET到緩存系統(tǒng)的本地地區(qū)的一個實例服務器中

EVCache客戶端庫同時也將寫入元數(shù)據(jù)(包括key,但不包括要緩存的數(shù)據(jù)本身)到復制消息隊列(Kafka)

本地區(qū)的復制中繼服務將會從這個消息隊列中讀取消息

中繼服務會從本地緩存中抓取符合key的數(shù)據(jù)

中繼服務會發(fā)送一個SET請求到另一個地域的復制中繼服務

在另一個區(qū)域中,復制中繼服務會接受請求,然后執(zhí)行SET操作到它的本地緩存,完成復制

在接受地區(qū)的本地應用當通過GET操作以后會在本地緩存上看到這個已經(jīng)更新的數(shù)據(jù)值

這是一個簡單描述,需要注意的是,它只會對SET操作有效,對于其它DELETE TOUCH或批mutation等操作不會復制,DELETE和TOUCH是非常類似的,只有一點不同:它們不從本地緩存中讀取已經(jīng)存在的值。

跨區(qū)域復制主要是通過消息隊列進行,一個地區(qū)的EVCache客戶端不會注意到其它地區(qū)的復制情況,讀寫都是只使用本區(qū)域緩存,不會和其它地區(qū)緩存耦合,通過消息系統(tǒng)來解耦合。

3EVCache 的高可用性

AWS的每個區(qū)域一般由多個可用區(qū)(AZ)組成,而可用區(qū)一般是由多個數(shù)據(jù)中心組成。AWS引入可用區(qū)設計主要是為了提升用戶應用程序的高可用性。因為可用區(qū)與可用區(qū)之間在設計上是相互獨立的,也就是說它們會有獨立的供電、獨立的網(wǎng)絡等,這樣假如一個可用區(qū)出現(xiàn)問題時也不會影響另外的可用區(qū)。在一個區(qū)域內(nèi),可用區(qū)與可用區(qū)之間是通過高速網(wǎng)絡連接,從而保證很低的延時。

EVCache實例通過將Amazon EC2放到多個可用區(qū), 能夠預防應用的單點故障。無論在相同的物理區(qū)域內(nèi)還是在不同的物理區(qū)域之間,在多個AZ上運行獨立的應用都是非常重要的。如果一個可用區(qū)失效了,在其它可用區(qū)上的應用可以繼續(xù)運行,從而實現(xiàn)高可用性。

由于跨越了多個亞馬遜云服務可用區(qū),EVCache集群是不會掛掉的。當其中的實例偶然掛掉時,通過一致性哈??缂悍制瑏硎咕彺娴挠绊懡档?**。

在保持高可用性的同時,操作EVCache集群的總體成本很低,因為緩存沒有***時訪問亞馬遜云服務服務的成本較高,如訪問SimpleDB、AWS S3、EC2上的Cassandra等等。EVCache 集群的總體成本在高穩(wěn)定,線性擴展的條件下還是令人滿意的。

隱藏在需求后面的是數(shù)據(jù)或狀態(tài)所需要的每個請求服務,必須是跨地區(qū)可用的。高可靠性數(shù)據(jù)庫和高性能緩存是支持分布式架構的基礎設施,一個典型場景是將緩存架構于數(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é)目。圖4 介紹了推薦相似性內(nèi)容的服務流程以及EVCache在其中的作用。

圖4 使用EVCache推薦相似內(nèi)容的典型用例

內(nèi)容相似性推薦服務給出了與已看歷史中節(jié)目類似的電影或者電視節(jié)目的相似性列表。一旦計算出了相似性,就存儲在SimpleDB/S3 中,前端使用EVCache。當任何應用或者算法需要這些數(shù)據(jù)的時候,可以從 EVCache提取數(shù)據(jù),并返回結果。具體過程如下:

一個客戶向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ù)預熱。


新聞標題:當云服務融入分布式緩存系統(tǒng)架構,會擦出怎樣的火花?
瀏覽路徑:http://uogjgqi.cn/article/cdgjocp.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流