1. 程式人生 > >Memcached特性及優缺點

Memcached特性及優缺點

集群 ext 功能 節點數據 1.5 64位 鍵值 term b2c

為了加快文件訪問速度且提供多個使用者、需要在內存中建立內存緩存數據的管理減小讀寫磁盤的次數及保證數據的更新、因為需要使用cache緩存。

1、Memcached 主要特性 a、數據僅存在於內存中,宕機或重啟數據將全部失效 b、內容數據達到啟動時設定內存指定值後、基於LRU算法刪除緩存,LAZY模式、可指定最大內存用量。 c、實際瓶頸在於網絡連接、占應較少的CPU資源 d、服務器端無分布式功能(C開發)、取決於客戶端的實現(php、C#、java)、可布署多臺服務器,訪問時做個均衡策略如根據IP分配連接負載。 e、存儲的節點數據鍵名250字節、鍵值限制在1MB、只適合普通字符串、作為小規模的數據分布式平臺是十分有效果. f、32位機器單進程使用最大內存2G、可分多個端口開啟多進程支持、64位機器可認為無上限 2、數據直接放到內存需要解決的問題: a、不能進行分布式擴展 b、缺乏一個有效的信息過期機制 c、多個並發同時使用共享使用失效機制 d、文件fd無法異步法、無法加入異步IO高速並發訪問體系中 3、分布式集群搭建 a、客戶端通過memcached私有通信協議與守護進程通信 b、nginx通過upstream協議通信、訪問服務器未命中則只能訪問memcached客戶端獲取數據並將數據主動寫入memcached服務器。 c、缺乏認證以及安全管制、放在防火墻後 d、客戶端通過一致性hash構建分布式cache系統、同時針對機器及緩存數據的key做hash、利用虛擬結點減小最小數據遷移。 技術分享圖片
4、如何添加與刪除條目 a、通過set/add/replace添加數據及設定條目失效時間及數據長度 b、delete刪除 c、信息訪問只提供簡單的緩存KV類型數據結構 d、可利用flush_all清空所有鍵值、標記所有item失效、內存可復用。 5、服務器擴容及備災 a、服務器可隨時擴容、需支持動態修改訪問策略 b、服務器宕機則緩存數據全部失敗、無法備災 6、內存效率 采用 Slab Allocator的機制分配、管理內存。按照增加因數按照預先規定的大小、將分配的總內存分割成特定的長度塊。 a、根據最小空間損失原則、分配最接近的slab空間 b、執行get才檢查時間戳、避免監控耗費cpu資源 c、新對象加入還是找最接近slab空間、而不能使用其它slab,只能重新分配page,內存浪費嚴重。 d、內存不足時則啟動LRU刪除記錄、可能刪除未過期記錄,緩存利用率下降。 幾個術語: Page:分配給Slab的內存空間,默認是1MB。分配給Slab之後根據slab的大小切分成chunk。 Chunk:用於緩存記錄的內存空間。 Slab Class:特定大小的chunk的組。 Growth Factor:增長因數,默認為1.25 技術分享圖片

Memcached特性及優缺點