Pull to refresh
0
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Разработка сервиса БД на базе графов: от прототипа к надежному и масштабируемому решению в облаке

Reading time 3 min
Views 5.2K
Сервис databoom – это облачный backend для Web и мобильных приложений. Он сокращает время и снижает стоимость прототипирования и разработки приложений за счет упрощения доступа к данным. На следующих видео показано, как легко с помощью databoom строится прототип Web приложения.



Microsoft Azure позволяет удивительно легко создавать надежные масштабируемые приложения. Если еще пару лет назад Azure означал Windows, то сегодня Microsoft Azure является прекрасной средой и для Linux разработчиков.

Серверная часть databoom работает под управлением Linux, использует Node.js и native модули, написанные на C++. Простота развертывания виртуальных машин, балансировщиков и других сервисов под Azure позволила нам достаточно легко развернуть облачное решение.

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



Наиболее важными для нас достоинствами Azure явились следующие:

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

Для разворачивания решения databoom на Azure мы выбрали простую схему (рисунок 1).


Рис. 1. – Схема архитектуры облачной инфраструктуры Databoom

Здесь цифрами обозначены различные уровни системы:

  1. Балансировщик нагрузки с возможностью масштабирования;
  2. Одноядерные виртуальные машины с Node.js приложением, которое принимает HTTP запросы, ведет обработку буферов приема ответа, ведет простые логи, ведет частичную обработку JSON данных, ведет разбор OData запросов, и т.д;
  3. Специализированная очередь для больших потоков сообщений.
  4. Машины, управляющие базами данных.
  5. Надежное дисковое хранилище.

Балансировщик нагрузки распределяет нагрузку между виртуальными машинами и в случае увеличения нагрузки запускает новые виртуальные машины, обеспечивая автоматическое масштабирование.

Для обработки HTTP запросов используются одноядерные виртуальные машины с Node.js приложением. Node.js по умолчанию использует одно ядро. Можно было бы использовать многоядерные компьютеры с несколькими экземплярами Node.js на каждом, но в этом случае нам бы пришлось подключить модуль Cluster на каждой машине. При этом функции модуля Cluster дублируются функциями балансировщика, что означает еще один лишний слой в процессе прохождения запроса. С другой стороны, скажем, четыре одноядерные машины работают не хуже, чем одна четырехъядерная (на наших тестах получилось, что по количеству запросов в секунду, даже лучше).

Для взаимодействия множества Node.js приложений с базой данных была реализована специализированная очередь для больших потоков сообщений. Каждый компьютер имеет несколько постоянных TCP соединений и асинхронно шлет и принимает потоки сообщений. Каждое TCP соединение на каждом из компьютеров способно передавать сотни тысяч запросов в секунду. Это позволяет масштабировать решение до любого требуемого количества запросов в секунду.

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

Балансировка нагрузки, возможность поднятия компьютеров на лету, многократное дублирование данных в хранилище, возможность обнаружения сбоев и перенос нагрузки на другие компьютеры и многие другие возможности MS Azure позволили нам создать надежное масштабируемое решение.

Об авторах




Андрей Портнов, Виктор Чернов, Владислав Головков

Выпускники ведущих московских технических ВУЗ-ов (МФТИ и МИФИ).

Проблемами обработки данных занимаемся с начала 90х годов XX века, когда все трое были сотрудниками вычислительного центра института атомной энергии им. И.В.Курчатова (филиал в г. Троицке). Разработали свою технологию обработки данных NitrosBase, получившую несколько призов всероссийских и международных выставок и форумов. На основе этой технологии были разработаны СУБД класса InMemory "NitrosBase InMemory DB" и графовая СУБД "NitrosBase RDF Storage". На основе NitrosBase RDF Storage мы построили сервис databoom — BaaS решение, значительно облегчающее разработку Web и мобильных приложений.
Tags:
Hubs:
+5
Comments 0
Comments Leave a comment

Articles

Information

Website
www.microsoft.com
Registered
Founded
Employees
Unknown
Location
США