----- Original Message -----
From: "Igor Sysoev" <is@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
Sent: Wednesday, April 01, 2009 11:16 AM
Subject: Re: Re[5]: Отдача больших файлов
On Wed, Apr 01, 2009 at 10:26:15AM +0400, Dmitry Dedukhin wrote:
>1. Для того, чтобы один файл отдавался более чем одним
>бэкендом-хранилищем
>(особенно в случае нескольких супер-популярных файлов).
>2. Для того, чтобы запросы с Range'ем с большей вероятностью использовали
>разные бэкенды (т.е. в случае многопоточного скачивания скорость будет
>выше).
>
>Понятно, что для небольших файлов (меньше размера одного чанка) он всё
>равно будет лежать на одном хранилище.
По идее, это должно работать, если бэкенды заняты толькоэтим популярным
файлом, но на деле к ним же ещё будут приходить куча непопулярных
запросов.
>----- Original Message -----
>From: "Igor Sysoev" <is@xxxxxxxxxxxxx>
>To: <nginx-ru@xxxxxxxxx>
>Sent: Wednesday, April 01, 2009 9:24 AM
>Subject: Re: Re[5]: Отдача больших файлов
>
>
>On Wed, Apr 01, 2009 at 08:05:18AM +0400, Dmitry Dedukhin wrote:
>
>>Как вариант эффективной раздачи больших файлов можно использовать схему
>>бэкенд(хранилище, рэйд-массив)+фронтенд(сервер, с которым "общается"
>>пользователь).
>>После загрузки на фронтенд каждый файл разбивается на небольшие куски
>>(2-5МБ), каждый кусок кладется на случайно выбранный бэкенд,
>>идентификатором файла является его хэш (md5 например). Информация о
>>расположении кусков хранится в простейшем случае в центральной базе (для
>>высоконагруженного проекта имеет смысл использовать распределенную БД
>>или
>>её аналог).
>>При скачивании файла nginx запрашивает информацию о расположении всех
>>кусков (или части в случае запроса с заголовком Range) и начинает
>>отдавать
>>файл, запрашивая каждый кусок с демона, висящего на каждом бэкенде.
>
>А зачем файл разбивать ?
>
>
>--
>Игорь Сысоев
>http://sysoev.ru
>
--
Игорь Сысоев
http://sysoev.ru