ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[5]: Отдача больших файлов



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




 




Copyright © Lexa Software, 1996-2009.