Хранить большое количество изображений на нескольких серверах - PullRequest
6 голосов
/ 25 марта 2012

Хотелось бы узнать, как лучше всего хранить большое количество изображений на нескольких серверах, таких как Google, Facebook.

Кажется, что хранение в файловой системе лучше, чем в базе данных, но как насчет использования базы данных noSQL, такой как cassandra.

Google / Facebooke хранит одно и то же изображение на нескольких серверах для балансировки нагрузки. Как это работает? Какое лучшее решение?

Большое спасибо

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Нет ничего плохого в подходе, который вы используете.Как уже упоминалось, есть предостережения, однако возможности существуют, и многие люди и компании успешно хранят файлы в Apache Cassandra.

  • zjffdu / cassandra-fs - первое решение, которое я рассмотрю.Теперь, в последний раз это разрабатывалось 2 года назад, поэтому я буду немного осторожнее, когда он будет работать в первый раз, из коробки. Apache Cassandra сейчас находится в версии 1.0.x, с 1.1.x в пути.2 года назад это была версия 0.6.x может быть?За 24 месяца многое изменилось и улучшилось.
  • semantico / cassandra-fs a fork ... последнее касание 7 месяцев назад
  • favourite37 / cassandra-fs еще один форк ... последний раз был затронут 3 месяца назад и указывает на совместимость с веткой Cassandra 1.0.5

Основное назначение - взять файл, разбить его на наборкуски и хранить эти куски как столбцы в ряд.При извлечении вытяните каждый столбец, соберите файл и вуаля.

Часто задаваемые вопросы Cassandra: большое хранилище файлов и блогов

... файлы размером около 64 МБ и меньше можно легко сохранить в базе данных, не разбивая их на меньшиекуски ...

индексы Lucene в Кассандре

... его файлы разбиты на блоки (чьи размеры ограничены), гдекаждый блок (см. FileBlock) сохраняется в качестве значения столбца в соответствующей строке ...

Вы получите больше положительных отзывов в списке рассылки Cassandra и на канале IRC.

Наконец, это с 2009 года, написанное людьми из Facebook, которое должно помочь вам ответить на более фундаментальные вопросы, которые у вас есть: Cassandra - Децентрализованная структурированная система хранения .

1 голос
/ 18 декабря 2012

Заметьте, я знаю, что это старый вопрос, я просто хочу уравновесить некоторые неправильные представления о стоимости, поскольку я делаю это прямо сейчас в качестве теста.

В отличие от того, что думает DavidB, это не стоит миллионов - даже если бы вы работали на выделенном размещенном оборудовании, у вас было бы меньше пары тысяч в месяц (BTDT, один из моих клиентов работает с кластером из 8 узлов примерно $ 800 / месяц). Тем не менее, вы хотите избежать головной боли при обслуживании, а с Cassandra на EC2 гораздо проще справиться.

Вы можете легко запустить существенное производственное облако на EC2 менее чем за 1000 долларов в месяц, а вы можете заниматься исследованиями и разработками менее чем за 100 долларов в месяц (в прошлом месяце я потратил около 52 долларов на кластер из 10 машин). Я настоятельно рекомендую использовать TurnKey Linux для управления и обеспечения вашей R & D-фермы, поскольку их инструменты позволят вам перенести экземпляры с вашего рабочего стола на практически любую виртуализированную платформу хостинга за несколько минут (и наоборот). Плюс у них действительно гладкая интеграция с EC2.

Что касается действительно серьезных уровней трафика, Пинтрест однажды заявил, что они тратят от 15 до 50 долларов в час в зависимости от нагрузки на сервер, автоматическое масштабирование для удовлетворения потребностей в трафике, см. http://www.theregister.co.uk/2012/04/30/inside_pinterest_virtual_data_center/ для получения подробной информации

Реальные затраты на настройку и управление вашим распределенным экземпляром Cassandra. К счастью, только что для этого NetFlix выпустила массу инструментов управления. Вы можете найти их здесь: https://github.com/netflix - есть также множество интересных видео об использовании AWS компанией NetFlix, в частности о перемещении материалов с Cassandra на S3 - см. Их блог здесь http://techblog.netflix.com/2012/12/videos-of-netflix-talks-at-aws-reinvent.html

0 голосов
/ 25 марта 2012

Если вы хотите хранить в «облачной» среде, вам лучше всего использовать облачное решение с такими ресурсами, как Google App Engine или Amazon Web Services. Вы не сможете настроить свой собственный, если это вопрос. Это будет стоить миллионы долларов и ресурсов для управления ими. И да, Google и Facebook используют тысячи серверов для распространения своих данных в «облаках».

...