Я создал веб-систему 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 архитектура.
Заранее спасибо.