Hosting

在 Amazon Web Services 上託管圖像託管網站

  • April 29, 2011

我正在製作圖像託管服務。這是我第一次建構大型站點,因此我對創建可靠的 Web 服務了解不多,但我認為我已經弄清楚了。

我應該如何設置我的網站託管以容納大量流量?這就是我的想法。告訴我這是否是個好主意:

  1. 選擇任何具有 php 和 mySQL 的廉價提供商。
  2. 只將後端的東西儲存在那個便宜的提供商上(php 腳本、伺服器配置文件、sql 數據庫)。
  3. 使用 Amazon S3 儲存所有前端的東西,例如 css、js、圖像,當然還有使用者上傳的所有儲存圖像(這是一個圖像託管網站)。

那樣有用嗎?這意味著大量流量的成本都是通過 Amazon S3 完成的,對嗎?便宜的供應商不應該受到任何重大成本的打擊,因為它所做的只是執行腳本和更新數據庫?或者這也會加起來(並且執行緩慢)?

我應該將數據庫移動到 Amazon SimpleDB 嗎?我還聽說我可以使用 Amazon EC2 執行該站點,但看起來這需要大量的工作來設置(而且很昂貴)。我想我的問題可以概括為:可靠地執行圖像託管網站的最具成本效益的方法是什麼?

謝謝。

所以,這裡有幾點可以幫助你。

  1. 提供商:對於大多數前端方面的事情,如果成本是您的主要因素,那麼您可以自行決定哪些提供商適合您的需求。可靠性、成本和擴展性都是您需要考慮的因素。
  2. 請注意,除非您讓使用者下載某種客戶端程序(Flash、JS 等),否則您的伺服器將必須接收文件,然後將其上傳到 S3。這將導致大量負載以及頻寬成本。但是,它還可以讓您更好地控制“什麼”可以上傳以及如何上傳。一旦您將控制權交給客戶端,您將無法真正控制上傳的內容。
  3. S3 非常適合儲存靜態內容,它將是創建這樣一個站點並保持成本一致的關鍵。確保您正確控制誰擁有對哪些儲存桶的上傳權限。例如,如果您在一個儲存桶中有 css 和 javascript,則應該只有您可以上傳到該位置,否則惡意使用者可能會上傳一些討厭的文件來替換您的內容。另一方面,如果您要允許使用者直接上傳內容以節省頻寬,則必須確保這是一個單獨的儲存桶,最好是每個使用者。這並非易事,如果您為客戶端提供直接上傳訪問權限,這幾乎是不可能的。

根據您的上傳配置(客戶端客戶端與伺服器端客戶端),您的需求會有所不同。客戶端的伺服器成本會更便宜,但請注意,有人可能會找到一種方法來儲存任何類型的文件,而您將負責審核該內容。對於伺服器端模型,準備好隨著使用者流量增加伺服器成本,因為您需要建構更多伺服器來處理上傳請求。

託管內容後,您還需要查看 CDN(內容傳遞網路),例如 Amazon 的 CloudFront(如果您想留在 Amazon 堆棧上)或 Akamai Networks。這些首先會增加您的成本,但會為您節省高使用率內容的費用。

Amazon SimpleDB 是一種有趣的數據庫風格。它是“最終一致的”,這意味著發送到數據庫的數據可能無法立即訪問,類似於 Amazon S3。如果您打算使用數據庫作為在多個節點之間為許多實時事務保持數據同步的一種方式,我不推薦它。

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