熱文推薦
- 醫(yī)院網(wǎng)站建設(shè)怎么做?醫(yī)療網(wǎng)站解決…
- 企業(yè)和網(wǎng)站出現(xiàn)負(fù)面信息怎么辦
- 深圳福田網(wǎng)站制作的步驟是什么,網(wǎng)…
- 酒店網(wǎng)站建設(shè)的重要性是什么?
- 市場(chǎng)營(yíng)銷網(wǎng)站相關(guān)知識(shí)介紹
- 建設(shè)網(wǎng)站必知的小技巧
- 關(guān)于改進(jìn)網(wǎng)站用戶體驗(yàn)的建議
- 內(nèi)部鏈接優(yōu)化策略,教你如何提高網(wǎng)…
- 淺析網(wǎng)站優(yōu)化中引外鏈的幾種方法
- 網(wǎng)站改版后流量如何提升?
![](/assets/images/zhaoshang.png)
大型網(wǎng)站分布式緩存架構(gòu)
3. 分布式緩存建筑
深圳網(wǎng)站建設(shè)分布式緩存是指在多臺(tái)服務(wù)器組成的集群中部署緩存,以集群方式提供緩存服務(wù)。體系結(jié)構(gòu)有兩種類型:一種是需要更新由JBoss Cache表示的同步分布式緩存,另一種是由Memcached表示的不i相通信。
JBoss Cache分布式緩存在群集中的所有服務(wù)器中保存相同的緩存數(shù)據(jù)。當(dāng)一臺(tái)服務(wù)器有緩存數(shù)據(jù)更新時(shí),它會(huì)通知集群中的其他機(jī)器更新緩存數(shù)據(jù)或清除緩存數(shù)據(jù),如圖4.9JBoss Cache所示一般來說,應(yīng)用程序和緩存部署在同一臺(tái)服務(wù)器上,應(yīng)用程序可以快速從本地獲取緩存數(shù)據(jù)。但是,問題是緩存數(shù)據(jù)的數(shù)量受到單個(gè)服務(wù)器的內(nèi)存空間的限制。當(dāng)集群很大時(shí),需要將緩存更新信息的成本同步到集群中的所有計(jì)算機(jī),這是非常昂貴的。因此,這種方案在企業(yè)應(yīng)用系統(tǒng)中比較常見,但在大型應(yīng)用系統(tǒng)中卻很少網(wǎng)站。
需要緩存的大型網(wǎng)站數(shù)據(jù)通常非常大,可能需要TB的內(nèi)存進(jìn)行緩存。此時(shí),需要另一種類型分布式緩存,如圖4.10所示Memcached采用集中式緩存集群管理,也稱為分布式架構(gòu)非通信模式。緩存和應(yīng)用程序是分開部署的。緩存系統(tǒng)部署在一組特殊的服務(wù)器上。應(yīng)用程序通過一致性Hash等路由算法選擇緩存服務(wù)器遠(yuǎn)程訪問高速緩存數(shù)據(jù),并且緩存服務(wù)器彼此不通信。緩存集群的規(guī)模易于實(shí)現(xiàn)擴(kuò)展,具有良好的可擴(kuò)展性。
Memcached關(guān)于可伸縮性設(shè)計(jì),請(qǐng)參閱本書第6章。
4. Memcached
Memcached曾經(jīng)是網(wǎng)站分布式緩存的代詞,大量用于網(wǎng)站。它的簡(jiǎn)單設(shè)計(jì)、卓越的性能、非通信服務(wù)器集群和海量數(shù)據(jù)可擴(kuò)展體系結(jié)構(gòu)吸引了架構(gòu)師。
簡(jiǎn)單通信協(xié)議
遠(yuǎn)程通信設(shè)計(jì)需要考慮兩個(gè)因素,一是通信協(xié)議,即選擇TCP協(xié)議或UDP協(xié)議或HTTp協(xié)議;一種是通信序列化協(xié)議。數(shù)據(jù)傳輸?shù)膬啥吮仨毷褂每上嗷プR(shí)別的數(shù)據(jù)序列化方法來完成通信,如XML、JSON等文本序列化協(xié)議,或者二進(jìn)制序列化協(xié)議如googleprotobufferMemcached使用TCP協(xié)議UDP也支持通信。序列化協(xié)議是一組基于文本的自定義協(xié)議。它非常簡(jiǎn)單,首先是一個(gè)command關(guān)鍵字,然后是一組命令操作數(shù)。例如,讀取數(shù)據(jù)的命令協(xié)議是get(此后,許多NoSQL產(chǎn)品已經(jīng)使用或直接支持該協(xié)議)。
客戶程序豐富
Memcached通信協(xié)議非常簡(jiǎn)單。只要支持協(xié)議的客戶端可以與Memcached服務(wù)器進(jìn)行通信,那么Memcached就開發(fā)出非常豐富的客戶端程序,幾乎支持所有主流網(wǎng)站編程語言Java、c/c++/c#Perl、Python、PHP、Ruby等。,因此,它更像是在混合使用多種編程語言網(wǎng)站和Memcached中取水。
高性能網(wǎng)絡(luò)通信
Memcached服務(wù)器的通信模塊基于支持事件觸發(fā)的網(wǎng)絡(luò)通信程序庫libevem。
無通信的服務(wù)器集群體系結(jié)構(gòu)
如上所述,正是這一特性使得Memcached在JBoss Cache、OSCache等眾多分布式緩存產(chǎn)品中脫穎而出,滿足了網(wǎng)站對(duì)海量緩存數(shù)據(jù)的需求。其客戶端路由算法一致性Hash已經(jīng)成為數(shù)據(jù)存儲(chǔ)可伸縮性架構(gòu)設(shè)計(jì)的經(jīng)典范例(參見本書第6章)。事實(shí)上,由于集群中的服務(wù)器之間沒有通信,集群可以實(shí)現(xiàn)幾乎無限的線性擴(kuò)展,這是許多流行大數(shù)據(jù)技術(shù)的基本架構(gòu)特征。
近年來,NoSQL產(chǎn)品層出不窮,很多產(chǎn)品在數(shù)據(jù)持久性、支持復(fù)雜數(shù)據(jù)結(jié)構(gòu)、甚至性能上都優(yōu)于Memcached,但Memcached以其簡(jiǎn)單、穩(wěn)定、專用的特點(diǎn),在分布式緩存領(lǐng)域仍占有重要地位。
http://m.ezekroy.com/jianzhanzhishi/1323.html 大型網(wǎng)站分布式緩存架構(gòu)