【Memcashed0】學習小結

Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap


特徵:1.協議簡單 2.基於libevent的事件處理內置 3.內存存儲方式 4.memcached不互相通信的分佈式

memcached服務器端並沒有分佈式功能。各個memcached不會互相通信以共享信息。分佈式取決於客戶端的實現。客戶端維護路由表。


hash環(一致性哈希算法):

解決單調性:在採用一致性哈希算法的分佈式集羣中將新的機器加入,其原理是通過使用與對象存儲一樣的Hash算法將機器也映射到環中(一般情況下對機器的hash計算是採用機器的IP或者機器唯一的別名作爲輸入值),然後以順時針的方向計算,將所有對象存儲到離自己最近的機器中。

解決平衡性:引入“虛擬節點”(實際節點的複製)

“虛擬節點”的hash計算可以採用對應節點的IP地址加數字後綴的方式。例如假設NODE1的IP地址爲192.168.1.100。引入“虛擬節點”前,計算 cache A 的 hash 值:
Hash(“192.168.1.100”);
引入“虛擬節點”後,計算“虛擬節”點NODE1-1和NODE1-2的hash值:
Hash(“192.168.1.100#1”); // NODE1-1
Hash(“192.168.1.100#2”); // NODE1-2


其他hash:取餘


slab,page,chunk:Slab Allocation的原理——將分配的內存分割成各種尺寸的塊(chunk), 並把尺寸相同的塊分成組(chunk的集合),每個chunk集合被稱爲slab。Memcached的內存分配以Page爲單位,Page默認值爲1M,可以在啓動時通過-I參數來指定。Slab是由多個Page組成的,Page按照指定大小切割成多個chunk。

發佈了19 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章