新聞中心
Memcached 是一個高性能、分布式內存對象緩存系統(tǒng),本質上是通用的,但目的是為了通過減輕數(shù)據庫負載來加快動態(tài)網絡應用的速度,下面為大家分享一下Memcached的性能、優(yōu)點和限制。

10年積累的網站建設、做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有永平免費網站建設讓你可以放心的選擇與我們合作。
1. 節(jié)點均衡的網狀( JBoss Tree Cache ),利用 JGroup 的多播通信機制來同步數(shù)據。
2.Master-Slaves 模式(分布式文件系統(tǒng)),由 Master 來管理 Slave ,如何選擇 Slave ,如何遷移數(shù)據,都是由 Master 來完成,但是 Master 本身也存在單點問題。
特性、優(yōu)點和限制
Memory :
內存存儲,速度快,對于內存的要求高,所緩存的內容非持久化。對于 CPU 要求很低,所以常常采用將 Memcached 服務端和一些 CPU 高消耗 Memory 低消耗應用部屬在一起 。(否則會互相擠占資源)
集中式 Cache :
避開了分布式 Cache 的傳播問題,但是需要非單點保證其可靠性,這需要 cluster 的工作,可以將多個 Memcached 作為一個虛擬的 cluster ,同時對于 cluster 的讀寫和普通的 memcached 的讀寫性能沒有差別。
分布式擴展:
Memcached 很突出的一個優(yōu)點,就是采用了可分布式擴展的模式??梢詫⒉繉僭谝慌_機器上的多個 Memcached 服務端或者部署在多個機器上的 Memcached 服務端組成一個虛擬的服務端,對于調用者來說完全屏蔽和透明。提高的單機器的內存利用率 。
Socket 通信:
傳輸內容的大小以及序列化的問題需要注意,雖然 Memcached 通常會被放置到內網作為 Cache, Socket 傳輸速率應該比較高(當前支持 Tcp 和 udp 兩種模式,同時根據客戶端的不同可以選擇使用 nio 的同步或者異步調用方式),但是序列化成本和帶寬成本還是需要注意。這里也提一下序列化,對于對象序列化的性能往往讓大家頭痛,但是如果對于同一類的 Class 對象序列化傳輸,第一次序列化時間比較長,后續(xù)就會優(yōu)化,其實也就是說序列化最大的消耗不是對象序列化,而是類的序列化。如果穿過去的只是字符串,那么是最好的,省去了序列化的操作,因此在 Memcached 中保存的往往是較小的內容 。
特殊的內存分配機制:
首先要說明的是 Memcached 支持最大的存儲對象為 1M (page)。它的內存分配比較特殊,但是這樣的分配方式其實也是對于性能考慮的,簡單的分配機制可以更容易回收再分配,節(jié)省對于 CPU 的使用(前面的文章中有描述) 。
Cache 機制簡單:
首先它沒有什么同步,消息分發(fā),兩階段提交等等,它就是一個很簡單的 Cache ,把東西放進去,然后可以取出來,如果發(fā)現(xiàn)所提供的 Key 沒有命中,那么就很直白的告訴你,你這個 key 沒有任何對應的東西在緩存里,去數(shù)據庫或者其他地方取,當你在外部數(shù)據源取到的時候,可以直接將內容置入到 Cache 中,這樣下次就可以命中了 。這里會提到怎么去同步這些數(shù)據,兩種方式,一種就是在你修改了以后立刻更新 Cache內容,這樣就會即時生效。另一種是說容許有失效時間,到了失效時間,自然就會將內容刪除,此時再去去的時候就會命中不了,然后再次將內容置入 Cache ,用來更新內容。后者用在一些時時性要求不高,寫入不頻繁的情況。
客戶端的重要性:
客戶端設計的合理十分重要,同時也給使用者提供了很大的空間去擴展和設計客戶端來滿足各種場景的需要,包括容錯,權重,效率,特殊的功能性需求,嵌入框架等等。
幾個應用點:
小對象的緩存(用戶的 token ,權限信息,資源信息)。小的靜態(tài)資源緩存。 Sql 結果的緩存(這部分用的好,性能提高相當大。)
本文名稱:詳解Memcached的性能、優(yōu)點和限制
路徑分享:http://www.dlmjj.cn/article/djhihee.html


咨詢
建站咨詢
