日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
當(dāng)云服務(wù)融入分布式緩存系統(tǒng)架構(gòu),會擦出怎樣的火花?

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

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

服務(wù)器

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

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

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

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

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

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

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

云服務(wù)的優(yōu)勢

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EVCache 是一個縮寫,包括:

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

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

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

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

EVCache 具有如下的特性:

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

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ù)。圖2展示了EVCache 的典型部署結(jié)構(gòu)和單節(jié)點客戶端實例與服務(wù)器的關(guān)系。

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

一個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ū)之間進(jìn)行失敗恢復(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ū)的用戶能夠快速可靠地訪問。

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

這張圖說明復(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ù)制主要是通過消息隊列進(jìn)行,一個地區(qū)的EVCache客戶端不會注意到其它地區(qū)的復(fù)制情況,讀寫都是只使用本區(qū)域緩存,不會和其它地區(qū)緩存耦合,通過消息系統(tǒng)來解耦合。

3EVCache 的高可用性

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

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

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

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

隱藏在需求后面的是數(shù)據(jù)或狀態(tài)所需要的每個請求服務(wù),必須是跨地區(qū)可用的。高可靠性數(shù)據(jù)庫和高性能緩存是支持分布式架構(gòu)的基礎(chǔ)設(shè)施,一個典型場景是將緩存架構(gòu)于數(shù)據(jù)庫前面或其它持久存儲前面。如果沒有緩存的全局復(fù)制,一個地區(qū)的的會員切換到另外一個地區(qū)時,會在新的地區(qū)緩存中沒有原地區(qū)的數(shù)據(jù),這種情況稱為冷緩存。處理這種緩存數(shù)據(jù)丟失的辦法只有重新從數(shù)據(jù)庫加載,但是這種方式會延長響應(yīng)時間并對數(shù)據(jù)庫形成巨大沖擊,EVCache 除了跨可用區(qū)復(fù)制之外,還提供了跨區(qū)域復(fù)制,對基于AWS的高可用性進(jìn)行了增強(qiáng)。

4EVCache的典型應(yīng)用場景

Netflix的用戶體驗重度依賴于大容量、低時延、全球可用的緩存數(shù)據(jù)層。例如,用戶坐在沙發(fā)上看電影或者電視節(jié)目,在用戶的每一次交互中都有緩存的身影,從會話存儲到視頻歷史,到用戶狀態(tài),都得益于EVCache的穩(wěn)定和高容錯性。

這里介紹一個典型的用例——向用戶推薦與已看歷史中節(jié)目類似的電影或者電視節(jié)目。圖4 介紹了推薦相似性內(nèi)容的服務(wù)流程以及EVCache在其中的作用。

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

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

一個客戶向Web應(yīng)用發(fā)了一個頁面請求,處理這一請求需要得到一個電影或電視節(jié)目的相似性列表

Web應(yīng)用查詢 EVCache 來得到這些數(shù)據(jù),這樣場景的典型緩存***率高于99.9%

如果緩存沒有***, Web應(yīng)用將調(diào)用相似性計算服務(wù)來計算這些數(shù)據(jù)

如果已經(jīng)計算過的數(shù)據(jù)也沒有***的話, 相似性計算服務(wù)將從 SimpleDB中讀取數(shù)據(jù)。如果在SimpleDB 沒有,相似性計算服務(wù)根據(jù)給出的電影或電視節(jié)目重新計算相似性

相似性計算服務(wù)在計算出電影或電視節(jié)目的數(shù)據(jù)后,將數(shù)據(jù)寫入到 EVCache中

***,相似性計算服務(wù)生成客戶端所需要的響應(yīng)并返回給客戶端

EVCache 是線性擴(kuò)展的,通過容量監(jiān)控,可以在一分鐘內(nèi)擴(kuò)容,在幾分鐘內(nèi)完成重新均衡和數(shù)據(jù)預(yù)熱。


網(wǎng)站欄目:當(dāng)云服務(wù)融入分布式緩存系統(tǒng)架構(gòu),會擦出怎樣的火花?
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/cdgjocp.html