2010-02-18 21 views
61

我正在將我的Java,Tomcat,Mysql服務器遷移到AWS EC2。我應該在EBS或S3上保留圖像嗎?

我已經附加了EBS卷用於存儲MySql數據。在我的web應用程序中,人們可能會上傳圖片所以我應該堅持下去。在我看來有兩種選擇:

  1. 將上傳的圖像保存到EBS卷。
  2. 使用S3服務。

以下是我的筆記,請關注他們,因爲我的專長不在服務器上,而是軟件開發。

  • EBS plus:S3存儲更昂貴。 (0.15 $/Gb> 0.1 $/Gb)

  • S3 plus:從EBS服務靜態可能會影響我的Web服務器的性能。這是真的?服務圖像顯着影響服務器性能嗎?對於S3我的服務器將不負責服務靜態。

  • S3 plus:從EBS服務靜態可能會導致I/O成本,可能會很小。

  • EBS plus:人們說EBS更快。

  • S3 plus:人們說S3對於持久性更安全。

  • EBS plus:無需學習API,直接將圖像保存到EBS卷。

即我不能決定,如果你指導,會很高興。

謝謝

+0

根據http://aws.amazon.com/s3/pricing/ – MikeNereson

回答

47

我目前使用S3作爲一個項目,它的工作非常好。

EBS意味着你需要管理一個卷+機器來連接它。你需要增加空間來填充和執行備份(不要說你不應該備份你的S3數據,只是它不重要)。

這也使得它難以擴展:當你想添加額外的機器時,你需要將圖像拖放到一臺單獨的機器上或克隆所有圖像。這也意味着你正在增加一個瓶頸:你必須管理你自己的上傳過程,這個過程可以上傳到所有機器,或者讓一臺機器管理它。

我推薦S3:它已經設置好了,忘記了。任何數量的機器都可以並行執行上傳,並且您並不需要通知其他機器上傳。

此外,您可以將Amazon Cloudfront用作圖像前的便宜CDN,而不是直接從S3下載。

+5

適用於S3 + Cloudfront的+1。我使用它來爲我們的某個物業提供Flash影片,並且效果非常好。 – devstuff

8

您已經概述了兩者的優點和缺點。

如果您計劃存儲千兆字節的圖像,並且存儲需求日益增加,S3可能是您最好的選擇,因爲它專爲這些情況而建。您可以獲得無限的存儲空間,而無需擔心在許多EBS捲上使用sharding your data

S3的經常性成本是它比EBS貴50%。您還必須學習API並在您的應用程序中實施它,但這是一次性支出,我認爲您應該能夠很快吸收。

+0

,S3現在降至0.14 GB-月是學習API不是問題。我想澄清的是,在服務器之外提供靜態服務器(即讓S3服務它們)將對我的RAM使用率產生積極影響?我預測內存(RAM)將成爲我服務器的瓶頸。 – javanes

+1

是的。來自S3的服務將免除您的EC2實例的責任,因此它絕對可以節省一些CPU和RAM資源。多少取決於您期望的流量。您可能有興趣查看以下關於此主題的Coding Horror博客文章:http://www.codinghorror.com/blog/2007/03/using-amazon-s3-as-an-image-hosting-service.html –

52

價格比較不太正確: S3費用爲每GB使用0.14美元,而EBS費用爲每GB 0.10美元PROVISIONED(您的EBS卷的大小),無論您是否使用它。因此,S3可能比EBS便宜或不便宜。

+11

非常好的一點。雖然可能應該是一個評論,而不是一個答案。 :)無論如何。 – BMiner

+0

似乎是一個有效的答案。 – Sorter

+0

我更喜歡這個答案(而不是評論),而問題是關於S3和EBS之間的決定。用戶需要考慮這一點作爲他們之間的低谷[利益](http://stackoverflow.com/a/38235022/4058484)之間的優先級。 – hyip

5

您是否期望圖像無限期地持續?

亞馬遜EBS FAQ非常清晰;年度失敗率不是「基本爲零」;他們引用0.1%至0.5%。它比桌下的磁盤好,但它需要某種備份。

12

我已經在AWS架構解決方案的股票攝影網站存儲數百萬跨越數據TB的圖像,我想和大家分享一些在AWS爲您的需求的最佳做法:

P1)存儲原始圖像在S3標準選項

P2)存儲重現的圖像就像在S3減少冗餘選項(RRS),以節省成本

P3)的元數據有關的圖像,包括S3 URL大拇指等文件可以存儲在亞馬遜RDS或Amazon DynamoDB,具體取決於查詢的複雜性。查詢Amazon RDS中的條目。如果您的查詢比較複雜,則將元數據存儲在Amazon CloudSearch或Apache Solr中也是常見做法。

P4)使用Amazon CloudFront向低延遲用戶傳遞您的大拇指。

P5)隊列圖像轉換要麼通SQS或RabbitMQ的在Amazon EC2上

P6)如果你打算使用EBS,那麼他們就不能擴展您的EC2。因此,理想情況下,您可以將GlusterFS用作所有映像的公共存儲池。 Auto Scaled模式下的多個Amazon EC2仍然可以連接到它並訪問/寫入圖像。

相關問題