我正在将我的Java,Tomcat,MySQL服务器迁移到AWS EC2。
我已经附加了一个EBS卷用于存储MySQL数据。 在我的Web应用程序中,人们可以上传图片,我应该坚持。
我脑海中有两种select:
以下是我的笔记,请对他们持怀疑态度,因为我的专长不在服务器上,而在软件开发上。
EBS plus :S3存储更贵。 (0.15 $ / Gb> 0.1 $ / Gb)
S3 plus :从EBS提供静态文件可能会影响我的Web服务器的性能。 这是真的? 服务图像是否会显着影响服务器性能? 对于S3,我的服务器将不负责提供静态文件。
S3 plus :从EBS提供静态文件可能会导致I / O成本,尽pipe它可能很小。
EBS加上 :人们说EBS更快。
S3 plus :人们说S3对于持久性更安全。
EBS plus :不需要学习API:将图像保存到EBS卷很简单。
我不能决定,而是在寻求指导。
在成本方面,S3不一定会比EBS成本高。 如果您拥有15 GB的EBS卷,则无论是否包含1 GB的数据,或者甚至没有数据,都需要为所有存储进行支付。 使用S3,您只需支付实际存储的数据。
您的策略应该是使用EBS进行安装,但总是将EBS备份到S3。 过去有一种方法可以使用S3加载caching来装载卷(称为PersistentFS),但现在已经不存在了。 因此,安装EBS卷,然后将其备份到S3。
以下是支持该build议的一些事实以及EBS和S3的一般比较:
S3是多余的(我认为是6份),而EBS不是。 http://www-differencebetween.net/technology/internet/difference-between-amazon-s3-and-amazon-ebs/
在性能方面,S3具有更高的延迟,并且延迟也更高。 S3写入延迟也可能高于读取延迟。 另一方面,EBS具有较低的延迟和较小的变化。 它还具有非常低的写入延迟的写回caching。 http://www-cloudiquity.com/2009/03/differences-between-s3-and-ebs/
EBS(具有20 GB的修改数据)的预期年度故障率为0.1%至0.5%。
使用S3,您可以为快照支付每GB每月0.15美元的费用 – 仅适用于数据实际存储。
EBS的可靠性取决于维护最近的快照。 如Amazon在http://www-amazon.com/b/ref=sc_fe_c_0_201590011_1?node=689343011中所述,EBS的可靠性取决于存储在尚未使用快照备份到S3的卷上的数据量。 因此,为了实现EBS的持久性,重要的是通过频繁的快照保持备份到S3的卷上的数据。
您将为EBS卷的大小每月支付每GB 0.10美元,S3快照每GB每GB 0.15美元。 但多个快照是增量存储的。 如果您的设备具有100 GB的数据,但自上次快照以来只有5 GB的数据发生了更改,则只有5个额外的快照数据将被存储回Amazon S3。 http://aws.amazon.com/ebs/
成本:在S3上保存图像会花费更多,尤其是在使用CloudFront的情况下。 亚马逊对stream量和GET / PUT请求收取费用,GET / PUT请求的成本甚至可能高于小文件的stream量成本。
什么更安全? 根据亚马逊,S3是比EBS更安全的存储,但我认为这不是什么大问题,因为您可以定期将EBS备份到S3上。
API:S3 API非常简单,将文件保存到S3上并不是什么大问题。
安全。 将用户上传的文件从Web应用程序中分离出来更安全 – 难以将黑客内容上传到您的Web应用程序服务器上。
速度。 我不认为由tomcat服务的EBS托pipe文件可能比在S3上托pipe的文件更快,特别是在使用CloudFrond(CDN)时。
我build议的另一个select是设置一个单独的轻量级web服务器(nginx适用于这样的任务)来提供来自EBS的静态内容。 这个解决scheme将是相当快速,安全(如果从一个单独的实例提供)和成本效益。
从EBS服务静态可能会影响我的Web服务器的性能
那么,你的静态数据量是多less? 如果它低于1Gb,它很可能会粘在caching中,因此不会影响性能。
你的stream量是多less? 是否值得使用S3作为内容分发networking,还是使用普通的S3?
使用EBS的驱动器使用S3而不是本地存储器会复杂多less? 静态数据传输可能是一个取决于您的应用程序的因素。
如果你将有一些严重的stream量和用户,你可能想要使用S3,因为它允许使用CDN。 如果您需要大量的用户数据,则可能需要考虑成本。 对于S3你必须支付每个GET / PUT,所以很多小文件将花费你。 EBS上的EC2图像,你只会支付带宽。
我build议你运行数字。 另请参阅您的应用程序要做什么更容易。