Базовая инфраструктура на основе JavaEE для отслеживания в реальном времени - PullRequest
0 голосов
/ 17 января 2020

Я создал веб-систему GPS-слежения в реальном времени, используя Java сервлеты в качестве серверного решения, тогда как интерфейс использует javascript с ajax запросами и WebSockets. (И фронт, и бэкэнд работают вместе как веб-приложение)

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

Так что в настоящее время все находится на одном бэкэнде - логи c реального времени и логи c отчетов (в настоящее время есть) более 50 отчетов, которые может выбрать пользователь)

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

Однако время от времени (два раза в день) необходимо вносить улучшения и / или исправлять некоторые ошибки (например, нужно немного изменить логи отчета c, или нужно исправить интерфейс пользователя, или способ отправки электронных писем должен быть изменен для некоторых клиентов), поэтому я должен убить сеансы пользователей и развернуть исправление, но все это приводит к простою.

Вот почему я рассматриваю возможность разделения системы на несколько служб, каждая из которых должна находиться на независимом сервере:

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

и т. д.

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

(Пожалуйста, Имейте в виду, что есть ежедневные требования изменить или ввести некоторые логики c в некоторых из сервисов из-за тысяч частных клиентов, которые дергают за ниточки и говорят, что нужно сделать)

Однако, У меня есть некоторые объекты, такие как CustomDateTime, Vehicle, MarkedArea, DynamicPOI, ClosedGeoCurve, FuelFlowMeter, Canbus, GPSDeviceFirmware, UserSerializationPermissions, DistanceCalculationMethod и т. Д., Которые интенсивно используются в системе, так что если я делю систему на систему и делю систему на систему каждый из них размещен на независимом физическом серверном компьютере. Мне понадобятся эти Java объекты на каждом из них, и каждый раз, когда я представляю новое поле, метод и / или бизнес-логи c некоторым из имеющихся у меня классов развернуть их снова на каждом из серверов.

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

Заранее спасибо.

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