雲環境中的 Memcached:專用伺服器還是本地主機?
我是個菜鳥,如果我遺漏了一些明顯的東西,我深表歉意,因為我的研究並沒有讓我與我們有些獨特的情況有太多關係。
我打算將一個 php 應用程序轉換到基於雲的伺服器,該伺服器目前在單個伺服器上執行,使用本地主機上的 memcached 來儲存每個使用者的極少量數據(不是會話數據,只是使用者的高可訪問性過渡數據-具體的)。我們正在嘗試使其具有可擴展性,因為我們目前的 Web 伺服器開始在高峰負載的罕見時間限制並發 apache 連接。
我們將通過具有會話粘性的負載均衡器執行雲 Web 伺服器,但我在決定是否調整應用程序以連接到獨立專用伺服器上的 memcached 以便記憶體池可以由所有Web 伺服器,或者為 memcached 維護每個雲伺服器的一部分記憶體,並使應用程序指向 localhost,信任會話粘性以確保維護會話的伺服器也將在其記憶體中維護使用者數據。
我目前的想法是,專用的 memcached 伺服器將是一個更清潔的實現,但如果我們最終將 memcached 的使用擴展到更複雜的數據,那麼從長遠來看,擴展可能會更複雜。而維護在每個雲伺服器上執行的 memcached 實例會在需要額外伺服器時引入更多資源(再次假設維護使用者會話的伺服器可以可靠地查找記憶體的使用者數據)。
我會重視任何人的意見、見解,或指出我理解中的任何缺陷。
我想說這兩種方法都是正確的,但我稍微傾向於使用每伺服器的 memcached。只要您在 memcached 中沒有共享數據。
使用共享的 memcached,您可以獲得:
更高的延遲
更高的 LAN 流量
在 Web 伺服器故障的情況下記憶體數據穩定性(接管的伺服器仍然擁有所有資訊)
如果 memcache 伺服器出現故障,您會失去所有記憶體的數據(這可能是我看到的唯一問題)
- 你可以執行兩個,但這會削減預算
使用每個伺服器 memcached 你得到
- 低延遲
- 較低的流量
- 在故障轉移到另一台伺服器的情況下,沒有舊數據
- 但萬一一台伺服器出現故障,其他伺服器不會失去任何東西
- 而且更便宜