Приснилась мне сегодня под утро такая система раздачи файлов (неопределенно большому количеству потребителей).
Берем файл, разрезаем его на последовательные куски, скажем по мегабайту.
От каждого куска берем хэш, например, MD5.
В качестве имени каждому такому файлу-куску присваиваем его MD5.
А исходный файл "изображаем" последовательностью значений MD5 его файлов-кусков. Так и будем это называть: MD5-изображение (исходного) файла.
Имеем сколько-то, на сколько хватит мощи, серверов - 1000 или 10 тысяч, или мильен.
Первые биты каждого значения MD5 (читай - имени файла-куска) задают место (сервер) его хранения. Сколько это битов - определяется количеством "мобилизованных" нами серверов.
Таблица веб-адресов серверов с указанием, какие MD5 где хранятся, - общедоступна. Будем называть их "MD5-сервера".
Раскладываем файлы-куски по MD5-серверам.
Раздаем пользователям сервиса MD5-изображение интересующего их файла.
Пользователь запрашивает файлы-куски с MD5-серверов и очень быстро их получает, поскольку MD5-серверов много.
Кроме того, файлы-куски могут "кэшироваться" на любых "промежуточных" серверах, поскольку "назначение" такого файла однозначно определяется его названием.
Получив все файлы-куски, пользователь "склеивает" их в последовательности, определяемой MD5-изображением, и получает исходный файл. Ву-аля!
Кроме того, если пользователь начнет запрашивать файлы-куски в последовательности их появления в MD5-изображении, то он сможет обрабатывать их (скажем, просматривать - если это видео) по мере поступления, не дожидаясь, пока они придут все до последнего.
Боже мой! Вы только что придумали осла! Скорее патентуйте!