2017-06-29 56 views
1

我有一個多服務器設置,其中所有服務器運行相同的代碼,並需要共享相同的緩存。緩存的數據量很大,並且位於單獨的memcached服務器中。中央+本地緩存與PHP

這是行得通的,但memcached服務器速度很慢。慢,這意味着最好的情況下需要大約0.3毫秒。這聽起來很快,但APC速度更快,而且我的經驗更可靠。

構建一個只在本地存儲所需數據的緩存,首先從APC讀取數據並回退到memcached並不重要。難題是刪除密鑰並清除緩存。我曾想過在每個節點中創建一個守護進程,並向所有節點廣播刪除和清除命令,但這非常複雜。特別是因爲APC不在CLI和FPM之間共享。所以我的問題是這個問題已經解決了嗎?

回答

0

我們有一個類似的設置。但我們的情況更多是隻讀數據。但偶爾我們會將數據刷新到兩級緩存中。

我們有一個腳本來刷新2級緩存@中的選定鍵一次。我們刪除了memcache中的密鑰,然後刪除了羣集的所有apc緩存(通過寫入方法)。由於我們的案例更多的是緩存只讀數據 - 它運行良好。

可能是你想試試這個!

沖洗有2個組件:

  1. 否則在內存緩存的刪除(刪除內存緩存API調用)
  2. 用於刪除從APC緩存給定的密鑰A的PHP組件。

由於php組件存在於我們的服務器集羣的所有節點中,並且我們知道服務器列表@任何給定的實例。我們觸發一組APC刪除組件的curl調用。

+0

一般來說,是的。你能分享一下如何完成這種沖洗的技術細節嗎?是手動完成還是有腳本?如果有,它是什麼樣子?你將如何運行腳本?如何將腳本縮放到X個服務器? – rinu

+0

增加更多細節.. – arunk2