![Memcached 伺服器:將兩個伺服器 URL 指向同一伺服器是一個好習慣嗎?](https://rvso.com/image/567607/Memcached%20%E4%BC%BA%E6%9C%8D%E5%99%A8%EF%BC%9A%E5%B0%87%E5%85%A9%E5%80%8B%E4%BC%BA%E6%9C%8D%E5%99%A8%20URL%20%E6%8C%87%E5%90%91%E5%90%8C%E4%B8%80%E4%BC%BA%E6%9C%8D%E5%99%A8%E6%98%AF%E4%B8%80%E5%80%8B%E5%A5%BD%E7%BF%92%E6%85%A3%E5%97%8E%EF%BC%9F.png)
我有一個系統,其中多個不同的檔案和伺服器連接到記憶體快取伺服器。
我想保留一台伺服器,但保留增加記憶體快取伺服器數量的選項(在高流量期間)。
我的想法是告訴 memcache 有兩個伺服器,而兩個 url 將(透過 DNS)指向單一伺服器。將來,如果我願意,我可以添加伺服器並更改 DNS,而無需更改許多地方的程式碼。
這是一個好的做法嗎?如果有兩個伺服器連接但它們都指向同一台伺服器,是否會產生效能成本?
還有其他想法如何在無需更改程式碼和部署的情況下實現記憶體快取容量的即時擴展性嗎?
答案1
這取決於您使用的 memcached 用戶端以及它如何確定跨多個伺服器雜湊金鑰。您不應該期望透過指定兩台伺服器而不是一台伺服器來獲得更高的效能,因為單一 memcached 伺服器將提供比單一 Web 伺服器可以處理的更多連線(很可能)。事實上,讓客戶端嘗試跨兩個不同的伺服器(實際上是相同的)雜湊金鑰可能弊大於利。
如果您不想再次部署,那麼我會在伺服器上拉入的環境變數中列出您的伺服器作為配置選項。例如,ENV['MEMCACHE_SERVERS'] 並且只需在伺服器端配置它而無需再次部署。
Memcache 的優點是它並不意味著冗餘或故障轉移,它不是持久性儲存。它甚至可能完全死機,您的網站的快取命中率僅為 0%,但至少它仍然可以運行。