• <strike id="mem0a"><s id="mem0a"></s></strike>
    
    
  • <kbd id="mem0a"></kbd>
    <ul id="mem0a"></ul>
     
    深圳網(wǎng)站建設(shè)設(shè)計

    將想法與焦點和您一起共享

    深圳網(wǎng)站建設(shè)設(shè)計 深圳網(wǎng)站優(yōu)化排名 深圳網(wǎng)站設(shè)計制作欣賞

    大型網(wǎng)站分布式緩存架構(gòu)

    2018-01-14  閱讀: 深圳網(wǎng)站建設(shè)設(shè)計

    3.分布式緩存架構(gòu)

    深圳網(wǎng)站建設(shè)分布式緩存指緩存部署在多個服務(wù)器組成的集群中,以集群方式提供緩存服務(wù),其架構(gòu)方式有兩種,一種是以JBoss Cache為代表的需要更新同步的分布式緩存,一種是以Memcached為代表的不i相通信的分布式緩存。

    JBoss Cache的分布式緩存在集群中所有服務(wù)器中保存相同的緩存數(shù)據(jù),當(dāng)某臺服務(wù)器有緩存數(shù)據(jù)更新的時候,會通知集群中其他機器更新緩存數(shù)據(jù)或清除緩存數(shù)據(jù),如圖4.9所示。JBoss Cache通常將應(yīng)用程序和緩存部署在同一臺服務(wù)器上,應(yīng)用程序可從本地快速獲取緩存數(shù)據(jù),但是這種方式帶來的問題是緩存數(shù)據(jù)的數(shù)量受限于單一服務(wù)器的內(nèi)存空間,而且當(dāng)集群規(guī)模較大的時候,緩存更新信息需要同步到集群所有機器,其代價驚人。因而這種方案更多見于企業(yè)應(yīng)用系統(tǒng)中,而很少在大型網(wǎng)站使用。

    大型網(wǎng)站分布式緩存架構(gòu)

    大型網(wǎng)站需要緩存的數(shù)據(jù)量一般都很龐大,可能會需要數(shù)TB的內(nèi)存做緩存,這時候就需要另一種分布式緩存,如圖4.10所示。Memcached采用一種集中式的緩存集群管理,也被稱作互不通信的分布式架構(gòu)方式。緩存與應(yīng)用分離部署,緩存系統(tǒng)部署在一組專門的服務(wù)器上,應(yīng)用程序通過一致性Hash等路由算法選擇緩存服務(wù)器遠程訪問緩存數(shù)據(jù),緩存服務(wù)器之間不通信,緩存集群的規(guī)模可以很容易地實現(xiàn)擴容,具有良好的可伸縮性。

    Memcached的伸縮性設(shè)計參考本書第6章內(nèi)容。

    4. Memcached

    Memcached曾一度是網(wǎng)站分布式緩存的代名詞,被大量網(wǎng)站使用。其簡單的設(shè)計、優(yōu)異的性能、互不通信的服務(wù)器集群、海量數(shù)據(jù)可伸縮的架構(gòu)令網(wǎng)站架構(gòu)師們趨之若鶩。

    大型網(wǎng)站分布式緩存架構(gòu)

    簡單的通信協(xié)議

    遠程通信設(shè)計需要考慮兩方面的要素,一是通信協(xié)議,即選擇TCP協(xié)議還是UDP協(xié)議,抑或HTTP協(xié)議;一是通信序列化協(xié)議,數(shù)據(jù)傳輸?shù)膬啥耍仨毷褂帽舜丝勺R別的數(shù)據(jù)序列化方式才能使通信得以完成,如XML、JSON等文本序列化協(xié)議,或者GoogleProtobuffer等二進制序列化協(xié)議。Memcached使用TCP協(xié)議(UDP也支持)通信,其序列化協(xié)議則是一套基于文本的自定義協(xié)議,非常簡單,以一個命令關(guān)鍵字開頭,后面是
    一組命令操作數(shù)。例如讀取一個數(shù)據(jù)的命令協(xié)議是get 。Memcached以后,許多NoSQL產(chǎn)品都借鑒了或直接支持這套協(xié)議。

    豐富的客戶端程序

    Memcached通信協(xié)議非常簡單,只要支持該協(xié)議的客戶端都可以和Memcached服務(wù)器通信,因此Memcached發(fā)展出非常豐富的客戶端程序,幾乎支持所有主流的網(wǎng)站編程語言,Java、C/C++/C#、Perl、Python、PHP、Ruby等,因此在混合使用多種編程語言的網(wǎng)站,Memcached更是如魚得水。

    高性能的網(wǎng)絡(luò)通信

    Memcached服務(wù)端通信模塊基于Libevem,一個支持事件觸發(fā)的網(wǎng)絡(luò)通信程序庫。

    互不通信的服務(wù)器集群架構(gòu)

    如上所述,正是這個特性使得Memcached從JBoss Cache、OSCache等眾多分布式緩存產(chǎn)品中脫穎而出,滿足網(wǎng)站對海量緩存數(shù)據(jù)的需求。而其客戶端路由算法一致性Hash更成為數(shù)據(jù)存儲伸縮性架構(gòu)設(shè)計的經(jīng)典范式(參考本書第6章)。事實上,正是集群內(nèi)服務(wù)器互不通信使得集群可以做到幾乎無限制的線性伸縮,這也正是目前流行的許多大數(shù)據(jù)技術(shù)的基本架構(gòu)特點。

    雖然近些年許多NoSQL產(chǎn)品層出不窮,在數(shù)據(jù)持久化、支持復(fù)雜數(shù)據(jù)結(jié)構(gòu)、甚至性能方面有許多產(chǎn)品優(yōu)于Memcached,但Memcached由于其簡單、穩(wěn)定、專注的特點,仍然在分布式緩存領(lǐng)域占據(jù)著重要地位。

    將文章分享到..