2010-07-22 102 views
2

我預先生成了超過2000萬個壓縮的html頁面,將它們存儲在磁盤上,並通過Web服務器提供。現在我需要這些數據可以被多個Web服務器訪問。 Rsync文件需要很長時間。 NFS似乎可能需要很長時間。緩存二進制數據的最佳方式是什麼?

我考慮過使用像Redis這樣的鍵/值存儲,但Redis僅將字符串存儲爲值,並且我懷疑它會壓縮gzip文件。

我目前的想法是使用帶有字符串鍵和二進制值的簡單MySQL/Postgres表。在我實施這個解決方案之前,我想看看是否有其他人在這方面有經驗並能提供建議。

回答

2

我已經對Redis很好了,那就是其中之一。

我也聽說過關於memcached的非常積極的事情。它也適用於二進制數據。
以Facebook爲例:這些人使用memcached,也爲圖像!
如您所知,圖像是二進制的。

因此,得到memcached,獲得一臺機器來利用它,一個綁定的PHP或任何你用於您的網站,並離開你去!祝你好運!

+0

我的memcached問題是,如果電源熄滅,我會丟失我的數據。因此,除了從停電恢復之外,我還得重新構建緩存。 – Scott 2010-07-23 19:48:52

+0

這取決於你在找什麼,確切地說,預算是多少。考慮有「鏡像」或數據,即使一臺機器出現故障,其他機器也可以使用。此外,如果服務器出現故障並且是唯一的服務器,那麼您可以編寫腳本以在啓動時重新上傳hdisk中的數據或其他內容。有很多選擇。我不會去一個ACID數據庫,因爲它有很多開銷,這是不需要的。它也不像我所知的那樣緩存memcached所做的數據,後者是專門爲您的目的而設計的,因此針對該數據庫進行了優化 – Poni 2010-07-23 20:45:34

+0

我同意關於數據庫,但我已經給出了探索一些選擇的豪華,所以我想到了什麼。 – Scott 2010-07-24 16:52:15

1

首先,爲什麼要緩存gzips?網絡等待時間和傳輸時間比壓縮文件所花的CPU時間高几個數量級,因此動態執行它可能是最簡單的解決方案。但是,如果你肯定有需要,那麼我不確定中央數據庫會比文件共享更快(當然,你應該測量不會猜測這些東西!)。一個簡單的方法可能是將原始文件託管在NFS共享上,並讓每個Web服務器按需在本地進行gzip和緩存。 memcached(正如Poni所建議的)也是一個很好的選擇,但增加了一層複雜性。

+0

我正在對文件系統,postgres和東京內閣進行基準測試。我會用結果更新我的問題。 – Scott 2010-07-23 19:49:46

相關問題