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

Сен. 11, 2015

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

В жизни сервера BaseRide много событий. Мы так и планировали.

А что вы понимаете под “событием”?

Ну, сразу скажу, что что-то важное происходит на нашем сервере ежесекундно. Происходит с транспортными средствами и мобильными сотрудниками, подключенными к нашим сервисам. Кто-то вошел в определенную гео-зону, кто-то обновил координаты и тут же нам сообщил: “А я тут” или “А я уже там”. Или датчик зафиксировал удар и посылает грустное уведомление в поисках моральной и технической поддержки. И поскольку к платформе BaseRide подключены более 40 тысяч движущихся объектов, нашему серверу некогда скучать.

И конечно, главная задача - обрабатывать все поступающие данные правильно. Правильно значит эффективно и продуктивно. Мы эту задачу выполнили.

И как вам это удалось?

Как вы помните, наш сервер состоит из 3 блоков и платформа BaseRide была создана средствами асинхронного программирования. Все три блока выстроены в единую систему обработки данных.

Как выглядит процесс обработки?

Нет, здесь должен быть другой вопрос.

Ок, что такое “сервлеты” и “серванты”?

Это части третьего блока сервера BaseRide.

Сервлет - это запись и процесс на сервере. А сервант - это специализированный процесс, сфокусированный на выполнении конкретной задачи в рамках этого сервлета.

У BaseRide несколько типов сервантов. И они вполне себе монофункциональны.

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

Так как выглядит процесс обработки данных?

Сначала все события отправляются к сервантам. Некоторые из них контролируют параметры датчиков. Сервант создает событие “Датчик вышел за заданные пределы”.

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

Каким образом генерируются нотификации?

Все события проходят через систему ZeroMQ. И все нотификации формируются с помощью библиотек JS. Если конкретно, через WebSockets или Sock JS. И поэтому если вам, к примеру, нужно знать, когда кто-то из водителей превышает допустимое время простоя или допускает сход с маршрута, - вы можете подписаться на этот тип событий. Мы интегрировали наши сервисы с мессенджером Slack, так что вы сможете получать соответствующие уведомления через нашего бота.