#amazon-ec2 #amazon-web-services #sharding #amazon-ebs
#amazon-ec2 #amazon-веб-сервисы #сегментирование #amazon-ebs
Вопрос:
Я рассматриваю возможность использования EBS для очень большой коллекции почтовых файлов. Множество маленьких файлов разбросано по множеству каталогов. Приведет ли сегментирование моего хранилища EBS на несколько контейнеров меньшего размера к увеличению производительности при чтении / записи по сравнению с одним большим томом EBS?
Ответ №1:
Может быть, вы можете объяснить, что именно вы подразумеваете под сегментированием. В остальном, что касается производительности EBS, есть несколько недостатков:
- Это связано с сетью (например, в меньшем экземпляре, где больше экземпляров используют один хост, производительность сети ниже звездной).
- Он многопользовательский (опять же, несколько пользователей на хосте влияют на EBS)
- Его производительность варьируется (производительность никогда не бывает стабильной)
- Это не SAN!
Чтобы смягчить некоторые из этих проблем, многие люди предлагают создать raid из нескольких томов EBS, я предлагаю следующие статьи:
- http://www.mysqlperformanceblog.com/2009/08/06/ec2ebs-single-and-raid-volumes-io-bencmark/
- http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs/
В итоге, для maildir я бы, вероятно, посмотрел на реальное оборудование. Не похоже, что вам нужно увеличивать / уменьшать масштаб от одной минуты к другой. Я бы, вероятно, подготовил настройку и при необходимости использовал облачное решение в дополнение к временной обработке скачков (до установки дополнительного оборудования).
Дайте мне знать, если это поможет!
Комментарии:
1. Я прочитаю эти статьи — спасибо. То, что я подразумеваю под «сегментированием», — это разделение моего корпуса maildir, скажем, на 4 относительно равные части на основе некоторой циклической метрики. Затем я сохраняю все 4 в отдельных томах EBS. Допустим, мой общий ввод-вывод для доставки почты составляет 10 Мбит / с. Если у меня есть один том EBS, этот том EBS должен выдерживать нагрузку на запись 10 Мбит / с. Если у меня есть 4 тома, каждый должен выдерживать (приблизительно) нагрузку на запись 2,5 Мбит /с. Мой вопрос был таков: смогу ли я поддерживать более высокую среднюю пропускную способность записи, распределяя мои записи на > 1 томе EBS, чем на одном томе EBS.
2. Я предполагаю, что распределение нагрузки таким образом [c, sh] могло бы сработать. Однако я не уверен, как вы планируете справляться с ростом в будущем. Например, разные пользователи будут заставлять каждый сегмент расти по-разному. Не уверен, что она всегда распределяется равномерно.
3. Я бы предложил использовать программный RAID. Недостаток сегментирования в том, что в какой-то момент времени вам всегда приходится переносить сегментирование. Это серьезная проблема, если только ваше решение не поддерживает автоматическую повторную сортировку (например, как это делает MongoDB).
4. @j00bz Я согласен с Тиллем в том, что это не будет распределяться равномерно. Я бы не советовал пытаться масштабироваться подобным образом. На практике некоторые сегменты будут испытывать гораздо большую нагрузку при записи, чем другие, казалось бы, непредсказуемыми способами.