Быстро ли GRIDF и достаточно надежна для производства?

StackOverflow https://stackoverflow.com/questions/3413115

  •  26-09-2019
  •  | 
  •  

Вопрос

Я разработаю новый веб-сайт, и я хочу использовать GRIDFS в качестве хранения для всех загруженных пользователей, потому что он предлагает много преимуществ по сравнению с обычным хранением файловой системы.

Тесты с GRIDFS, обслуживаемые Nginx, указывают, что он не так быстро, как обычная файловая система, обслуживаемая Nginx.

Тест с nginx.

Кто-нибудь там, кто использует GRIDFS уже в производственной среде, или будет использовать его для нового проекта?

Это было полезно?

Решение

Я использую GRIDFS на работе на одном из наших серверов, которые являются частью веб-сайта сравнения цен с почетной статистикой трафика (Gronound 25K посетителей в день). Сервер имеет не так много RAM, 2GIGS, и даже ЦП не очень быстро (Core 2 Duo 1,8 ГГц), но сервер имеет много места для хранения: 10TB (SATA) в конфигурации RAID 0. Работа, которую делает сервер, очень просто:

Каждый продукт на нашем цене-компакторе имеет изображение (есть около 10 миллионов продуктов в соответствии с нашим продуктом DB), а рабочие серверы состоит в том, чтобы загрузить изображение, разместить его, сохранить его на GRIDFS и доставьте его в браузер посетителей. .. Если он не присутствует в сетке ... или ... доставить его в браузер посетителей, если он уже хранится в сетке. Итак, это можно назвать как «традиционная схема CDN».

Мы сохранили и обработали 4 миллиона изображений на этом сервере, так как он работает и работает. Изменение размера и хранения веществ выполняется простым сценарием PHP ... Но наверняка, сценарий Python или что-то вроде Java может быть быстрее.

Текущий размер данных: 11,23 г

Текущий размер хранения: 12,5 г

Индексы: 5.

Размер индекса: 849,65 м

О надежности: это очень надежно. Сервер не загружается, размер индекса в порядке, запросы быстро

О скорости: Конечно, это не быстро, как локальное хранилище файлов, возможно, на 10% медленнее, но достаточно быстро, чтобы его использоваться в реальном времени, даже если изображение необходимо обрабатывать, который находится в нашем случае, очень зависимый от PHP. Техническое обслуживание и время разработки также были уменьшены: он стал таким простым удалением одного или нескольких изображений: просто запрашивайте DB с помощью простой команды удаления. Еще одна интересная вещь: когда мы перезагрузили наш старый сервер, с локальным хранилищем файлов (так миллионом файлов в тысячах папок), иногда висит на часы, потому что система выполняет проверку целостности файлов (это действительно заняло часы ...). У нас нет этой проблемы больше с GRIDFs, наши изображения теперь хранятся в больших кусках Mongodb (2 ГБ файлы)

Итак ... На мой взгляд ... Да, Gridfs быстро и надежно для производства.

Другие советы

Как уже упоминалось, это может быть не так быстро, как обычная файловая система, но тогда это дает вам преимущества человека Обычные файловые системы Что я думаю, стоит отказаться от немного скорости.

В конечном итоге, с капюшоном, вы можете достичь точки, однако, когда хранение GRIDF на самом деле становится более быстрой опцией, а не обычной файловой системой и одним узлом.

Модуль NGINX-GRIDFS MDIROLF является отличным и довольно легко получить настройку. Мы используем его в производстве в рисовать Подавать все картины, и там не было проблем.

Heads-up На ремонте для более крупных DBS - новая система, которую мы разрабатываем, Mongo не выходила, и ремонтируя Gridfs 7TB выглядит так, как будто она займет 130 часов.

Из-за этого я думаю, что я посмотрю на переход на переход на openStack Swift или Ceph. Тем не менее, до тех пор это было хорошо. И модуль NGINX-GRIDFS сладкий.

Я не рекомендую использовать GRIDF, если вы не знаете, что вы делаете. GRIDFS - это просто слой абстракции, который разбивает файлы для кусков и хранит файлы в двух коллекциях. Больше файлов - больше накладных расходов. Если вы ожидаете, что файлы будут довольно одинаковым размером, не более 32 м или около того - вы находитесь в правильном пути. Не пытайтесь хранить большие файлы на GRIDFS. Почему?

  1. Драйверы на разных языках могут прочитать весь файл. (Например, куски) при чтении небольшой части файла.
  2. Изменение файла может повлиять на все куски и увеличить нагрузку базы данных, если ваша файловая система растет, вам придется решить ощутить GRIDF. Будь осторожен! Консистенция не гарантируется, когда Sharding инициализируется!

Если вы думаете о нагруженном проекте по чтению - рассмотрите загрузку файлов в документы напрямую (если 16 м или меньше размера) или выберите другие кластеры и ссылку имени файла / inode к вашей логике.

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top