У моего друга есть популярный сайт по конвертации Youtube в GIF. Прямо сейчас он преобразовал 250 000 видеороликов Youtube в GIF (каждое видео имеет 6 миниатюр для 1,5 млн файлов GIF) и обслуживает около 80 ТБ полосы пропускания в месяц.
Его сервер блокирует ввод-вывод - я не админ-гуру, но, похоже, это время поиска жесткого диска для непоследовательных GIF-файлов, которые засоряют все. У него есть сервер с 100 ТБ. Com за 300 долларов в месяц, и он имеет бесплатную пропускную способность 100 ТБ. Сначала я посоветовал ему получить CDN для решения его проблем, потому что тогда GIF-файлы обслуживаются без использования ресурсов его сервера, а его основной блок может просто обрабатывать кодирование - мы нашли один CDN за 600 долларов в месяц, который был слишком медленным. / unreliable, а остальные хотели как минимум 2000 долларов в месяц за 80 ТБ полосы пропускания. Сейчас мы стараемся, чтобы весь проект не превышал 900 долларов в месяц.
Таким образом, самая дешевая пропускная способность, которую мы можем найти, составляет 100 ТБ, но мы перерастаем один сервер. Мы могли бы добавить еще один сервер, но я действительно не знаю, как разделить хранилище GIF, чтобы нагрузка распределялась равномерно между двумя блоками. Наш хост рекомендовал использовать такое программное обеспечение, как Aflexi.net, но я уверен, что должно быть более дешевое решение.
Кто-нибудь может помочь? Я программист по профессии, а не системный администратор, но пытаюсь научиться чему-то новому. Спасибо!
S3 не является альтернативой, только счет за 80 ТБ будет более 8 тысяч долларов в месяц.
Похоже, вы подаете гифки прямо из файловой системы. Почему бы вам не поместить все GIF-файлы на 2 машины, использовать хэш-алгоритм, сопоставив имя с одной из 2 машин и доставить их таким образом? Это можно легко масштабировать на большее количество машин, пока ваш балансировщик нагрузки выдерживает ...
Выгрузите файлы в S3 и обслуживайте их оттуда. CDN бедняги :)
Если вам нужна большая вычислительная мощность, вы можете выполнять преобразование из экземпляров EC2 и делать дамп непосредственно в свою «CDN».
Я не могу комментировать другие комментарии, но они звучат хорошо. Я бы попытался снять часть нагрузки с файловых серверов, сохранив ваши наиболее часто используемые (т.е. самые популярные) файлы в кеше памяти, то есть иметь обработчик http, который делает что-то вроде этого:
Если вы можете получить машину с дерьмовой загрузкой оперативной памяти, вы смеетесь, поскольку вполне вероятно, что вы сможете уместить большой процент своих популярных файлов в памяти.
И когда вы насытите это, добавьте еще один сервер обработки изображений и выполните циклический перебор. Продолжайте делать это, пока что-то не сломается, например, производительность, масштабируемость, экономичность.
Я делал что-то подобное раньше, чтобы добиться хорошего эффекта.
Если это всего 2 машины, вы можете рассмотреть возможность использования DRBD для синхронизации между ними. Затем просто используйте PHP, чтобы случайным образом или алгоритмически решить, с какого сервера извлекать данные во время запроса. Простое, но работоспособное решение.