問題:memcached是怎么工作的?
答:
Memcached的神奇來自兩階段哈希(two-stagehash)。Memcached就像一個巨大的、存儲了很多<key,value>對的哈希表。通過key,可以存儲或查詢?nèi)我獾臄?shù)據(jù)。
客戶端可以把數(shù)據(jù)存儲在多臺memcached上。當查詢數(shù)據(jù)時,客戶端首先參考節(jié)點列表計算出key的哈希值(階段一哈希),進而選中一個節(jié)點;客戶端將請求發(fā)送給選中的節(jié)點,然后memcached節(jié)點通過一個內(nèi)部的哈希算法(階段二哈希),查找真正的數(shù)據(jù)(item)。
舉個列子,假設有3個客服端1 23臺memcached A,B,C
Client 1想把數(shù)據(jù)"barbaz"以key“foo”存儲。Client 1首先參考節(jié)點列表(A, B, C)計算key“foo”的哈希值, 假設memcached B被選中。接著,Client 1直接connect到memcached B通過key“oo”把數(shù)據(jù)"barbaz”存儲進去。Client 2使用與Client 1相同的客戶端庫(意味著階段一的哈希算法相同),也擁有同樣的memcached列表(A, B, C)
于是,經(jīng)過相同的哈希計算(階段一),Client 2計算出key“foo”在memcachedB上,然后它直接請求memcached B,得到數(shù)據(jù)"barbaz"。各種客戶端在memcached中數(shù)據(jù)的存儲形式是不同的(perl Storable php serialize,java hibernate,JSON等)。一些客戶端實現(xiàn)的哈希算法也不一樣。但是,memcached服務器端的行為總是一致的。
最后,從實現(xiàn)的角度看,memcached 是一個非阻塞的、基于事件的服務器程序。這種架構可以很好地解決C10K problem,并具有極佳的可擴展性。
下面是傳智教育公開的幾套Java課程,您可以下載和在線觀看學習,如果想深入學習java并想找到不錯的java開發(fā)相關工作,建議報班學習傳智教育Java高級軟件工程師課程。獲取【Java視頻教程+資料】加播妞:435946716。
-
Java教程
-
Java教程
-
Java教程
-
Java教程
-
Java教程
-
Java教程