Компания
94,59
рейтинг
16 июля 2012 в 18:04

Разное → Ivideon запустил облачное хранение видео

Некоторые художники не выносят вида своих творений когда они закончены. А я свой самый большой поклонник. O.W. Grant (Interstate 60)



Команда Ivideon больше года работала над сервисом удаленного хранения архивных видео записей в собственном облаке (как мне не нравится это слово). Почему так долго, технические подробности и как бесплатно получить к нему доступ для читателей Хабра — вы узнаете под катом.

Почему нельзя использовать существующее облачное хранение?





Существует несколько известных платформ для создания облачного хранения данных. Например, тот же OpenStack, который, к слову, мы также поддержали. И тем не менее для себя реализовали полностью свое решение. Почему мы так поступили? Чтобы ответить на этот вопрос нужно понять специфику хранения удаленного архива видеонаблюдения. Дело в том, что почти все облачные платформы рассчитаны преимущественно на преобладание операций чтения над записью. Отчасти поэтому входящий трафик в облака бесплатный, а исходящий стоит денег. Для такой платформы в большинстве случаев не так уж и важно, в каком порядке на дисках хранятся записанные файлы. Хотя работа над оптимизацией безусловно ведется.

По-другому обстоят дела с хранением видео системы наблюдения. Прежде всего, здесь есть очевидное существенное преобладание операций записи над операциями чтения. Люди просматривают не более 1 — 2 % всех архивных записей. А иногда и того меньше.

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

Представьте, средний пользователь по нашей статистике за сутки может сформировать около 1200 записей видео наблюдения разной длительности с одной камеры. Чтобы видео было доступно пользователю не после окончания всей записи, а, например, через минуту, требуется каждую запись разбивать на на небольшие порции, которые должны сохраняться в облаке. То есть файлов может быть не 1200, а существенно больше. Предположим, что их 2500.



А теперь представьте, что на одном физическом жестком диске, находятся файлы за неделю от 200 пользователей. И в какой-то момент, запускается процедура ротации архива — удаления самых старых файлов, записанных за три дня. Необходимо разом удалить порядка 1,5 млн. файлов! Безусловно — облако это отработает. Медленно, но отработает. Только жесткие диски долго такую нагрузку не выдержат, а как известно, в облачном хранении это один из самых дорогих элементов. И мы получим, что облачное хранение будет очень дорогой услугой для обычного пользователя. А мы всегда стремились дать людям не только самый качественный, но и доступный сервис из всего того, что есть на рынке.

Как мы реализовали наше хранение


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

В качестве frontend’ов мы используем группу серверов с большим объемом оперативной памяти. На текущий момент каждый из таких серверов содержит порядка 96 Гбайт памяти.

Задача данного сервера — аккумуляция готовых фрагментов от камер по несколько минут. Все эти фрагменты пишутся исключительно в оперативную память.
На каждую камеру выделяется около 80 — 100 Мбайт. На сервер поступает множество видео кадров от разных камер. Как только фрагмент завершается — он тут же ставится в очередь на отправку в backend хранения. Памяти специально выделяется больше, чем размер одного фрагмента, чтобы во время отправки завершенного фрагмента было место для записи нового.

Что же представляют из себя backend’ы? Это группа серверов с 36 дисками каждый, которая может находиться как в одном датацентре, так и в нескольких, в зависимости от требуемой степени надежности хранения. Назовем такие сервера нодами. Каждый фрагмент может быть продублирован на заданном количестве нод в зависимости от настройки тарифного плана пользователя. А для распределения нагрузки на ноды используются механизмы шардинга. Рассчитывается максимальная скорость физической записи в ноду и контролируется, чтобы количество передаваемых данных за единицу времени не превышало этого параметра.



С программной точки зрения мы поддерживаем ноды OpenStack, web-dav, nfs и т.д. Но для хранения архива в наших датацентрах мы используем собственную реализацию программного обеспечения ноды. В этом случае связь с ней осуществляется по внутреннему HTTP-base протоколу. Фактически производится почти мгновенная передача уже готового фрагмента и его запись в ноду. А также внесение данных о фрагменте во внутреннюю базу. Базой является mongoDB, установленая на отдельных серверах.

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

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

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

Резюме


Здесь я не рассказал о многих тонкостях работы нашей платформы, связанных, например, с разными тарифными планами. Кто-то хранит неделю архива, а кто-то месяц. Также я не стал заострять внимания на конкретных деталях работы с широко известными элементами, используемыми в нашей платформе. Например, MongoDB. И это уже тема для следующей статьи.

Надеюсь, благодаря этому, изложение получилось понятным и в то же время полезным.
Хочу лишь добавить, что как и всегда, в своих датацентрах мы используем исключительно Linux и наше серверное ПО оптимизируем для него.

И напоследок. Мы очень постарались провести комплексное и нагрузочное тестирование нашей платформы удаленного хранения. И тем не менее запускаем её в режиме Beta и устанавливаем “сдерживающий” тариф, чтобы рост нагрузки был контролируемым с нашей стороны. Но если кто-то из читателй Хабра хочет помочь нам, приняв участие в тестировании, пишите в личку, указывайте e-mail вашего личного кабинета и мы положим на ваш счет требуемую сумму денег, чтобы использование облачного хранения Ivideon было для вас бесплатным.
Автор: @ivideon
Ivideon
рейтинг 94,59

Комментарии (18)

  • +2
    Очень хочу поучаствовать в тестировании! Логин отправил в личку! Готов даже по результатам написать собственный обзор!
    • +1
      Удаленный архив подключен к вашему аккаунту. Ждем обзор)
  • +4
    Готов рассказать, как можно построить собственно хранилищную часть вашего облака на уже обкатанных большими объёмами open source технологиях.
    • +3
      Расскажите здесь, в комментариях! Думаю, многим будет интересно.
      • +3
        Раз интересно многим, и четыре плюса на два камента — придётся писать пост из многобукв :)
        • +1
          Очень интересно.
        • 0
          также интересно
        • 0
          Очень интересно, ждем)
        • +1
          >Раз интересно многим, и четыре плюса на два камента — придётся писать пост из многобукв :)

          Информация о пользователе
          2 подписчика
          нет постов

          все как всегда.
          • 0
            Скоро сказка сказывается, да не скоро дело делается.пока осилил только первую часть написать.
            • 0
              ну хорошооооо, обождем! (с) старый анекдот

              ЗЫ А может — по частям? Народ оценит — мотивация возрастет.
              • 0
                Приходите на YaC, расскажем и покажем :)
                • +1
                  Лучше потренироваться перед YaC и написать хороший, годный пост на Хабре. Обожаю такие посты. У самого писать такие не очень получается)
  • 0
    Попробовал сервис на двух камерах. Очень хорошее качество картинки. Но не пойму как получить архив. Папка архива почему то пуста.
    Видел на вашем сайте один раз сервер для линукс, а сейчас не могу найти.
    • 0
      было бы очень интересно (и о-о-очень полезно) попробовать облачное хранилище
      • 0
        Дело в том, что мы уже закрыли прием заявок на тестирование ввиду того, что уже собрали очень большое количество желающих. В скором времени мы будем запускать обновленную версию нашей платформы и скорей всего предусмотрим какие-нибудь акции для читателей Хабра.
    • 0
      По умолчанию видео архив пишется по детектору движения, если вы указали корректно папку для записи. Проверьте Настройки Ivideon Server (предварительно его требуется остановить).

      Просмотреть архив можно в вашем личном кабинете (таймлайн в окне самой камеры) или в мобильных клиентах для iOS или Android:



      Для экспорта записи в AVI воспользуйтесь функцией экспорта, которая также есть в нашем личном кабинете.

      Инструкция по установке Ivideon Server для Linux доступна на нашем сайте вот здесь: www.ivideon.ru/ivideon-dlya-linux/

      Обратите внимание, что полноценно мы тестировали пока только для Debian. В Ubuntu (в последних версиях) могут быть проблемы с подключением веб-камер, которые мы постараемся исправить уже в следующих версиях нашего ПО.

  • 0
    О mongoDB можете рассказать более подробно? Какие возникали трудности в процессе установки и настройки, как с ними боролись?
    Заранее благодарю за ответ :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное