Memcached

如果分佈式 memcached 進行網路呼叫,它應該如何提高性能?

  • April 9, 2011

http://memcached.org/about

大家好,我喜歡 memcached,但迄今為止只在單機設置中使用它作為本地記憶體。我已經廣泛閱讀了有關 memcached 的分佈式特性以及客戶端如何確定要寫入和讀取的 memcached 伺服器列表中的哪些內容。據我了解,通過選擇確定性雜湊算法,我們可以確保數據始終寫入和讀取正確的伺服器,無論請求來自何處。

所以,我的問題是,考慮以下情況:

伺服器 A 在紐約,伺服器 B 在洛杉磯。兩者都是彼此的鏡子。兩者都在執行具有複製功能的 mysql 數據庫。在只讀的情況下並不重要,但可以說 A 是主機,B 是從機。兩者都在執行 memcached,並且它們的客戶端有一個 memcached 伺服器列表(在本例中為伺服器 A 和 B)。

從伺服器 A 上的數據庫中讀取某條數據,例如部落格文章的正文,並因此儲存在 A 的 memcached 中。該國家不同地區的不同使用者訪問伺服器 B 並請求相同的部落格文章。伺服器 B 的 memcached 客戶端檢查並看到該數據確實已被記憶體,因此它通過網路從伺服器 A 的 memcached 中獲取該數據。

現在,首先,我的理解到目前為止是否正確?請指出我所做的任何錯誤或不正確的假設:)。

所以,我的問題是,這應該如何提高性能?在這種情況下,一個更好的計劃似乎是讓伺服器 A 和伺服器 B 都執行自己單獨的 memcached 實例作為本地記憶體(http://memcached.org/about中的頂部數字),但這與分佈式設計的整體思想。那麼分佈式有什麼好處呢?從伺服器 B 到伺服器 A 的網路操作比伺服器 B 從其自己的本地數據庫讀取要慢得多。

請幫我理解。我覺得關於 memcached 的工作原理,我從根本上缺少一些東西。

謝謝!ķ

對您的問題的簡短回答是:不是。

分佈式 memcached 使您的系統能夠從記憶體中檢索有效答案,而不是進行昂貴的查找/計算以獲得正確答案。

在 memcached 的情況下,在網際網路上以可能 60-100 毫秒或更長的延遲進行交談,真的沒有什麼可收穫的。您的系統查找/計算正確答案的速度可能比它在網際網路中途的記憶體中找到正確答案的速度要快得多。

您需要 memcached 節點之間的千兆(或更快)網路才能獲得任何性能優勢。您的設置專為故障轉移和基於地理的性能而設計。如果您的伺服器 A 和 B 真的是 A1、A2 和 B1,那麼 B2 memcached 可能適合您。

引用自:https://serverfault.com/questions/257662