Memcache相關

原理:

許多 cache 工具類似,Memcached 的原理並不複雜。它採用了C/S的模式,在 server 端啓動服務進程,在啓動時可以指定監聽的 ip,自己的端口號,所使用的內存大小等幾個關鍵參數。一旦啓動,服務就一直處於可用狀態。Memcached 的目前版本是通過C實現,採用了單進程,單線程,異步I/O,基於事件 (event_based) 的服務方式.使用 libevent 作爲事件通知實現。多個 Server 可以協同工作,但這些 Server 之間是沒有任何通訊聯繫的,每個 Server 只是對自己的數據進行管理。Client 端通過指定 Server 端的 ip 地址(通過域名應該也可以)。需要緩存的對象或數據是以 key->value 對的形式保存在Server端。key 的值通過 hash 進行轉換,根據 hash 值把 value 傳遞到對應的具體的某個 Server 上。當需要獲取對象數據時,也根據 key 進行。首先對 key 進行 hash,通過獲得的值可以確定它被保存在了哪臺 Server 上,然後再向該 Server 發出請求。Client 端只需要知道保存 hash(key) 的值在哪臺服務器上就可以了。

其實說到底,memcache 的工作就是在專門的機器的內存裏維護一張巨大的 hash 表,來存儲經常被讀寫的一些數組與文件,從而極大的提高網站的運行效率。


Memcache使用一致性哈希算法實現分佈式緩存


注意點:

傳輸採用單進程,非阻塞的網絡IO,LIBEVENT


基於libevent的事件處理
libevent是一套跨平臺的事件處理接口的封裝,能夠兼容包括這些操作系統:Windows/Linux/BSD/Solaris 等操作系統的的事件處理。
包裝的接口包括:
poll、select(Windows)、epoll(Linux)、kqueue(BSD)、/dev/pool(Solaris)Memcached 使用libevent來進行網絡併發連接的處理,能夠保持在很大併發情況下,仍舊能夠保持快速的響應能力。
libevent: http://www.monkey.org/~provos/libevent/


參考資料:

http://wenku.baidu.com/view/13e51c2de2bd960590c6770c

http://blog.csdn.net/shagoo/article/details/1845625

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章