Отдача больших файлов

Igor Sysoev is at rambler-co.ru
Wed Apr 1 11:16:49 MSD 2009


On Wed, Apr 01, 2009 at 10:26:15AM +0400, Dmitry Dedukhin wrote:

> 1. Для того, чтобы один файл отдавался более чем одним бэкендом-хранилищем 
> (особенно в случае нескольких супер-популярных файлов).
> 2. Для того, чтобы запросы с Range'ем с большей вероятностью использовали 
> разные бэкенды (т.е. в случае многопоточного скачивания скорость будет 
> выше).
> 
> Понятно, что для небольших файлов (меньше размера одного чанка) он всё 
> равно будет лежать на одном хранилище.

По идее, это должно работать, если бэкенды заняты толькоэтим популярным
файлом, но на деле к ним же ещё будут приходить куча непопулярных запросов.

> ----- Original Message ----- 
> From: "Igor Sysoev" <is at rambler-co.ru>
> To: <nginx-ru at sysoev.ru>
> 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





More information about the nginx-ru mailing list