大型網站分布式緩存架構
3. 分布式緩存建筑
深圳網站建設分布式緩存是指在多臺服務器組成的集群中部署緩存,以集群方式提供緩存服務。體系結構有兩種類型:一種是需要更新由JBoss Cache表示的同步分布式緩存,另一種是由Memcached表示的不i相通信。
JBoss Cache分布式緩存在群集中的所有服務器中保存相同的緩存數據。當一臺服務器有緩存數據更新時,它會通知集群中的其他機器更新緩存數據或清除緩存數據,如圖4.9JBoss Cache所示一般來說,應用程序和緩存部署在同一臺服務器上,應用程序可以快速從本地獲取緩存數據。但是,問題是緩存數據的數量受到單個服務器的內存空間的限制。當集群很大時,需要將緩存更新信息的成本同步到集群中的所有計算機,這是非常昂貴的。因此,這種方案在企業應用系統中比較常見,但在大型應用系統中卻很少網站。
需要緩存的大型網站數據通常非常大,可能需要TB的內存進行緩存。此時,需要另一種類型分布式緩存,如圖4.10所示Memcached采用集中式緩存集群管理,也稱為分布式架構非通信模式。緩存和應用程序是分開部署的。緩存系統部署在一組特殊的服務器上。應用程序通過一致性Hash等路由算法選擇緩存服務器遠程訪問高速緩存數據,并且緩存服務器彼此不通信。緩存集群的規模易于實現擴展,具有良好的可擴展性。
Memcached關于可伸縮性設計,請參閱本書第6章。
4. Memcached
Memcached曾經是網站分布式緩存的代詞,大量用于網站。它的簡單設計、卓越的性能、非通信服務器集群和海量數據可擴展體系結構吸引了架構師。
簡單通信協議
遠程通信設計需要考慮兩個因素,一是通信協議,即選擇TCP協議或UDP協議或HTTp協議;一種是通信序列化協議。數據傳輸的兩端必須使用可相互識別的數據序列化方法來完成通信,如XML、JSON等文本序列化協議,或者二進制序列化協議如googleprotobufferMemcached使用TCP協議UDP也支持通信。序列化協議是一組基于文本的自定義協議。它非常簡單,首先是一個command關鍵字,然后是一組命令操作數。例如,讀取數據的命令協議是get(此后,許多NoSQL產品已經使用或直接支持該協議)。
客戶程序豐富
Memcached通信協議非常簡單。只要支持協議的客戶端可以與Memcached服務器進行通信,那么Memcached就開發出非常豐富的客戶端程序,幾乎支持所有主流網站編程語言Java、c/c++/c#Perl、Python、PHP、Ruby等。,因此,它更像是在混合使用多種編程語言網站和Memcached中取水。
高性能網絡通信
Memcached服務器的通信模塊基于支持事件觸發的網絡通信程序庫libevem。
無通信的服務器集群體系結構
如上所述,正是這一特性使得Memcached在JBoss Cache、OSCache等眾多分布式緩存產品中脫穎而出,滿足了網站對海量緩存數據的需求。其客戶端路由算法一致性Hash已經成為數據存儲可伸縮性架構設計的經典范例(參見本書第6章)。事實上,由于集群中的服務器之間沒有通信,集群可以實現幾乎無限的線性擴展,這是許多流行大數據技術的基本架構特征。
近年來,NoSQL產品層出不窮,很多產品在數據持久性、支持復雜數據結構、甚至性能上都優于Memcached,但Memcached以其簡單、穩定、專用的特點,在分布式緩存領域仍占有重要地位。
http://www.dgzxsm168.com/jianzhanzhishi/1323.html 大型網站分布式緩存架構