[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Собственное хранилища данных
Эли4ка
Здравствуйте!Скажите,пожалуйста,кто-нибудь сталкивался с разработкой файловых хранилищ на хранение и отдачу файлов.Хотелось бы подробнее почитать все этапы создания,оптимизации таких сетей.Так нужно создать пока не очень большую,но что-то аналогичное.
Спасибо.
YVSIK
как пример:
тебе надо поставить файловый серевр wink.gif
лучшим для использования подобного, на заморачиваясь со всеми этими штуками
используй хранилище на яндексе
закинуть просто и скачать можешь, как удобней так и сделаешь

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
vagrand
http://www.google.com.ua/search?sourceid=c...D1%80%D0%B0+CDN

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Эли4ка
YVSIK
да,была подобная идея,но дело в том,что Яндекс или Google вряд ли потянут,на данный момент, 3.7тб информации,можно конечно несколько разных аккаунтов сделать,но это неудобно.А использовать akamai или ucdn не очень охота.
vagrand
А там ведь архитектура cdn,а как что-то подобное сделать не описано... sad.gif
ApuktaChehov
А что значит хранилище данных? Подробнее можно?

Или тупо комп где хранится много фалов? Если да, то для повышенной надежности необходимо серверное оборудование, парочка приблуд и все.

Вообще все зависит от того, что нужно и чем больше требуется возможностей - том сложнее и дороже результат.

_____________
vagrand
Эли4ка
Опишите подробнее стоящую перед вами задачу, тогда будет легче посоветовать что-то конкретное. Например какие типы файлов вы хотите хранить и как нужно их раздавать (статика, медиа файлы с возможностью перемотки, отдавать за оплату и т.д.)

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Эли4ка
Ну у меня есть множества медиафайлов,таких как:музыка,фото,видео.Все хранится в разных форматах,качествах.Это все нужно будет позволять скачивать(просто скачивание,без всяких там оплат и т.д.),нужно будет перекодировать некоторые файлы(не все конечно),данное хранилище еще и обновляться должно.
vagrand
Эли4ка
Ну у вас тут придется довольно много поработать. У меня есть самописная система с похожим функционалом, так что я могу примерно посоветовать что вам нужно:
1. Для конвертации вдео файлов, вам понадобиться как минимум одна утилита ffmpeg. Для нарезки скриншотов я использую mplayer. Дополнительно могут понадобится утилиты для вычитки инфы о исходном файле, например mediainfo, так же если вы будите конвертить в фрматы flv или mp4, который можно проигрывать в flash плеере, то вам понадобятся утилыты qt-faststart и yamdi.
2. Для аудио файлов так же в зависимости от формата, в который будет производится конвертация вам понадобятся утилиты: mplayer, lame, а так же утилиты из набора vorbis-tools. Возможно есть какая-то утилита, которая моэжет конвертить во все форматы сразу, го я не сталкивался.
3. Для конвертации изображений хватит и php либы gd2, но я бы рекомендовал imagick.

Это что касается конвертации, теперь по поводу хранения:
1. Я бы посоветовал сразу закладывать в архитектуру системы возможность харения файлов на разных серверах. Таким образом у вас должен быть список "хранилищь" и из парметров. Хранилища могут быть как локальными, например разные виты одного сервера, так и удаленными, например разные винты другово сервера.
2. Загрузка файлов. Если говорить о системе, которая распределена по нескольким серверам, то я бы сделал одну централизованую БД и php код на разных серверах, который будет работать как с файлами так и с БД. Таким образом пользователь заходит на сайт через одну входную точку, например на домен system.com, система смотрит в БД и находит наименее загруженное хранилище (как по дисковому пространству, так и по нагрузке load average, мониториг которого нужно будет постоянно производить), к каждому хранилищу привязывается поддомен основного домена, таким образом система может перенаправить запрос пользователя на самый свободный сервер, т.е. например server1.system.com где клиенту будет выдана форма для загрузки файлов непосредственно на тот сервер.
3. Отдача файлов. При загрузке файлов сохраняется связь между ними и "хранилищем", на которое они были зашружены. Таким образом при запросе какого-то файла на скачивание, вы сможете собрать URL для его отдачи на тот, конкретный сервер, где он хранится.
4. Если же приоритетным является доступность всех файлов при сбоях на каком-то узле (сервер), то тогда могу порекомендовать настроить сервер rsync таким образом, что бы он разносил изменения в файловой структуре хранилища, которые произошли на одном узле, на все узлы системы. Это естественно увеличит нагрузку на все узлы, но снимет проблему с доступом к файлам на вышедшем из строя узле.
5. Можно так же прикрутить какой-то CDN для снижения нагрузки на ваши сервера при раздаче файлов.

Ну вот коротко вроде бы и все.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Nikitian
Цитата (Эли4ка @ 10.08.2013 - 12:21)
YVSIK
да,была подобная идея,но дело в том,что Яндекс или Google вряд ли потянут,на данный момент, 3.7тб информации,можно конечно несколько разных аккаунтов сделать,но это неудобно.А использовать akamai или ucdn не очень охота.

А можно купить на Яндексе расширение аккаунта на месяц, залить что требуется и не продлять далее: загруженные файлы будут доступны после просрочки только на чтение.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.