Должен ли я сохранять изображения на EBS или S3?
Я перевожу свой сервер Java,Tomcat, Mysql на AWS EC2.
Я уже подключил том EBS для хранения данных MySql. В моем веб-приложении люди могут загружать изображения. Так что я должен их упорствовать. На мой взгляд, есть 2 варианта:
- Сохраните загруженные изображения в том EBS.
- Воспользуйтесь услугой S3.
Ниже приведены мои заметки, пожалуйста, скептически относитесь к ним, так как я разбираюсь не в серверах, а в разработке программного обеспечения.
EBS plus: S3 хранилище дороже. (0,15 $/ Гб> 0,1$/ Гб)
S3 plus: Обслуживание статики из EBS может отрицательно повлиять на производительность моего веб-сервера. Это правда? Влияет ли показ изображений на производительность сервера? Для S3 мой сервер не будет отвечать за обслуживание статики.
S3 plus: Обслуживание статики из EBS может привести к затратам на ввод-вывод, возможно, будет незначительным.
EBS plus: Люди говорят, что EBS быстрее.
S3 plus: Люди говорят, что S3 более безопасен для настойчивости.
EBS plus: не нужно изучать API, просто сохранить изображения в томе EBS.
А именно я не могу определиться, буду рад, если вы будете гидом.
Спасибо
5 ответов
В настоящее время я использую S3 для проекта, и он работает очень хорошо.
EBS означает, что вам нужно управлять томом + машинами, чтобы подключить его. Вам нужно добавить пространство по мере его заполнения и выполнять резервное копирование (не говоря уже о том, что вы не должны выполнять резервное копирование данных S3, просто это не так критично).
Это также усложняет масштабирование: когда вы хотите добавить дополнительные машины, вам нужно либо извлечь изображения на отдельную машину, либо клонировать изображения на всех. Это также означает, что вы добавляете узкое место: вам придется управлять собственным процессом загрузки, который будет либо загружаться на все машины, либо иметь один компьютер, управляющий им.
Я рекомендую S3: он установлен и забыт. Любое количество машин может выполнять загрузку параллельно, и вам не нужно уведомлять другие машины о загрузке.
Кроме того, вы можете использовать Amazon Cloudfront в качестве дешевого CDN перед образами вместо прямой загрузки с S3.
Сравнение цен не совсем верно: плата S3 составляет 0,14 долл. США за ГБ ИСПОЛЬЗОВАНА, тогда как плата EBS составляет 0,10 долл. США за ГБ ПРЕДОСТАВЛЕНО (размер вашего тома EBS), независимо от того, используете ли вы его или нет. В результате S3 может быть или не быть дешевле, чем EBS.
У меня есть архитектурные решения на сайтах AWS для стоковой фотографии, на которых хранятся миллионы изображений, охватывающих данные о туберкулезе, и я хотел бы поделиться некоторыми лучшими практиками в AWS для ваших требований:
P1) Сохраните файл оригинального изображения в опции S3 Standard
P2) Сохраняйте воспроизводимые изображения, такие как большие пальцы и т. Д., В опции S3 Reduced Redundancy (RRS) для экономии затрат.
P3) Метаданные об изображениях, включая URL-адрес S3, могут храниться в Amazon RDS или Amazon DynamoDB в зависимости от сложности запроса. Запросите записи из Amazon RDS. Если ваш запрос сложный, то обычной практикой является хранение метаданных в Amazon CloudSearch или Apache Solr.
P4) Доставьте свои пальцы пользователям с низкой задержкой, используя Amazon CloudFront.
P5) Поставьте в очередь преобразование вашего изображения через SQS или RabbitMQ в Amazon EC2.
P6) Если вы планируете использовать EBS, то они не масштабируются с вашим EC2. Поэтому в идеале вы можете использовать GlusterFS в качестве общего пула хранения для всех ваших образов. Несколько Amazon EC2 в режиме Auto Scaled все еще могут подключаться к нему и получать доступ / записывать изображения.
Вы уже изложили преимущества и недостатки обоих.
Если вы планируете хранить терабайты изображений, а требования к хранилищу растут день ото дня, S3, вероятно, будет вашим лучшим выбором, поскольку он создан специально для подобных ситуаций. Вы получаете неограниченное пространство для хранения, не беспокоясь о том, чтобы защитить ваши данные на многих томах EBS.
Текущие расходы S3 заключаются в том, что он на 50% дороже, чем EBS. Вам также придется изучить API и внедрить его в свое приложение, но это единовременные расходы, которые, я думаю, вы сможете быстро освоить.
Ожидаете ли вы, что изображения будут длиться бесконечно?
Часто задаваемые вопросы по Amazon EBS довольно понятны; годовая частота отказов не является "практически нулевой"; они указывают от 0,1% до 0,5%. Это лучше, чем диск под вашим столом, но для этого потребуется какая-то резервная копия.