在互聯(lián)網(wǎng)技術(shù)中有兩大支點(diǎn),其中一個(gè)就是緩存,而分布式緩存系統(tǒng)更是大型互聯(lián)網(wǎng)應(yīng)用的利器。面對不斷增長的海量數(shù)據(jù)、不可預(yù)知的流量模式以及快速響應(yīng)時(shí)間的需求,這正是云計(jì)算服務(wù)的動(dòng)態(tài)性之關(guān)鍵優(yōu)勢。
在互聯(lián)網(wǎng)技術(shù)中有兩大支點(diǎn),其中一個(gè)就是緩存,而分布式緩存系統(tǒng)更是大型互聯(lián)網(wǎng)應(yīng)用的利器。面對不斷增長的海量數(shù)據(jù)、不可預(yù)知的流量模式以及快速響應(yīng)時(shí)間的需求,這正是云計(jì)算服務(wù)的動(dòng)態(tài)性之關(guān)鍵優(yōu)勢。
那么,當(dāng)
云服務(wù)融入分布式緩存系統(tǒng)架構(gòu),會(huì)碰撞出怎樣的火花呢?
大型互聯(lián)網(wǎng)應(yīng)用中的緩存
先回顧一下緩存在大型互聯(lián)網(wǎng)應(yīng)用的架構(gòu),網(wǎng)站在發(fā)展的歷程中,業(yè)務(wù)量的增長是幸福的煩惱,而緩存技術(shù)就是解除煩惱的靈丹妙藥,能夠再次理解為什么是緩存為王。
實(shí)際上,這時(shí)的系統(tǒng)進(jìn)入了無級縮放的大型網(wǎng)站階段,當(dāng)網(wǎng)站流量增加時(shí),應(yīng)對的解決方案就是不斷地添加Web
服務(wù)器、數(shù)據(jù)庫服務(wù)器以及緩存服務(wù)器了。如何動(dòng)態(tài)的增減服務(wù)器,這正是云服務(wù)的用武之地。
云服務(wù)的優(yōu)勢
對企業(yè)而言,云服務(wù)有著諸多的商業(yè)優(yōu)勢。
首先,企業(yè)的前期基礎(chǔ)設(shè)施投資幾乎為零。如果要建立一個(gè)大型的系統(tǒng),可能需要大量的投資用于于機(jī)房、硬件(機(jī)架、服務(wù)器、路由器、備用電源)、硬件管理(電源管理、散熱)和運(yùn)維人員。由于高昂的前期成本,該項(xiàng)目通常在開始之前需要多輪的管理審批和論證。而采用公有云服務(wù),幾乎沒有固定成本或啟動(dòng)成本。
其次,云服務(wù)提供了基礎(chǔ)設(shè)施即時(shí)性。在過去,當(dāng)互聯(lián)網(wǎng)應(yīng)用開始大規(guī)模上量時(shí),如果基礎(chǔ)設(shè)施跟不上規(guī)模的增長,將會(huì)極大地影響應(yīng)用的成功。但如果前期投入了大量資金,而應(yīng)用沒有得到普及,基礎(chǔ)設(shè)施又將成為失敗的犧牲品。云服務(wù)增加了靈活性,降低了風(fēng)險(xiǎn)和運(yùn)營成本,可以根據(jù)用于成長的規(guī)模而按需付費(fèi)。
最后,云服務(wù)可以更有效地利用資源,根據(jù)使用狀況來計(jì)算成本,同時(shí)縮短產(chǎn)品的上市時(shí)間。
云服務(wù)的技術(shù)優(yōu)勢同樣明顯,主要的特點(diǎn)如下:
自動(dòng)化:基礎(chǔ)設(shè)施的腳本化可以通過充分利用API對基礎(chǔ)設(shè)施編程,完成構(gòu)建和系統(tǒng)部署的可重復(fù)性。
自動(dòng)擴(kuò)展:無需任何人工干預(yù),就可以根據(jù)需求對應(yīng)用進(jìn)行雙向擴(kuò)展。自動(dòng)縮放提高了自動(dòng)化程度從而更加高效。
主動(dòng)擴(kuò)展:基于需求預(yù)期和流量模式的合理規(guī)劃,可以對應(yīng)用進(jìn)行雙向擴(kuò)展讓從而保持低成本運(yùn)營。
更有效的開發(fā)周期:可以很容易將開發(fā)和測試環(huán)境復(fù)制到生產(chǎn)系統(tǒng),不同階段的環(huán)境可以很容易地推廣到生產(chǎn)系統(tǒng)。
改進(jìn)的可測性:不需要進(jìn)行硬件過載的測試,注入和自動(dòng)化測試能夠持續(xù)于開發(fā)過程的各個(gè)階段。
災(zāi)難恢復(fù)和業(yè)務(wù)連續(xù)性: 云服務(wù)為維護(hù)一系列應(yīng)用服務(wù)器和數(shù)據(jù)存儲(chǔ)提供了低成本選擇。使用云服務(wù),可以在幾分鐘內(nèi)完成將某一地點(diǎn)的環(huán)境復(fù)制到其他地域的云環(huán)境中。
云服務(wù)的選擇有很多,如
阿里云、百度云、騰訊云等,但AWS作為云服務(wù)的商用鼻祖,有著很多獨(dú)特的特性和廣泛的應(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ù)方案,一個(gè)典型的案例是Netflix的EVCache。
EVCache 是一個(gè)開源、快速的分布式緩存,基于 Memcached的內(nèi)存存儲(chǔ)和 Spymemcached 客戶端實(shí)現(xiàn)的解決方案,主要用在亞馬遜彈性計(jì)算云服務(wù) (AWS EC2)的基礎(chǔ)設(shè)施上,為
云計(jì)算做了優(yōu)化,能夠順暢而高效地提供數(shù)據(jù)層服務(wù)。
EVCache 是一個(gè)縮寫,包括:
EVCache實(shí)現(xiàn)的主要功能包括分布式鍵值對存儲(chǔ)、AWS的跨區(qū)域數(shù)據(jù)復(fù)制以及注冊和自動(dòng)發(fā)現(xiàn)新節(jié)點(diǎn)或新服務(wù)。EVCache典型的應(yīng)用是對上下文一致性要求不高的場景,其可擴(kuò)展性已經(jīng)可以處理非常大的流量,同時(shí)提供了健壯的API。
Netflix 是微服務(wù)架構(gòu)領(lǐng)域的實(shí)踐者,在系統(tǒng)中布署了上百個(gè)微服務(wù),每一個(gè)微服務(wù)只專注做一件事情。這使得Netflix所提供的軟件系統(tǒng)能夠做到高度均衡和松耦合。由于狀態(tài)都存儲(chǔ)在緩存或持久存儲(chǔ)中,所以這些微服務(wù)大多數(shù)是無狀態(tài)的,易于自動(dòng)擴(kuò)展。
EVCache在Netflix內(nèi)部是一個(gè)被廣泛使用的數(shù)據(jù)緩存服務(wù),所提供的低延遲且高可用的緩存方案可以很好地滿足Netflix微服務(wù)架構(gòu)需要,也用來做一般數(shù)據(jù)的存儲(chǔ)。EVCache 能夠使面向終端用戶的應(yīng)用,個(gè)性化算法和各種微服務(wù)都具備優(yōu)良的性能。