Интегрировать чат-сервер в существующий Spring-сервер
Я пытаюсь интегрировать сервер OpenFire XMPP в сервер Spring моей компании, но у меня есть два основных вопроса, на которые я не могу найти ответ:
Сначала я начну с моей текущей архитектуры -
1. Сервер xmpp имеет свой собственный DB-сервер, отделенный от DB-сервера Spring. Это выделенный компьютер для хранения истории символов пользователей и т. Д.
2. У сервера Spring есть собственная БД, в которой хранятся учетные данные пользователя (зашифрованные md5), а также данные клиентских приложений.
3. Сервер Spring предназначен для обслуживания HTTP-запросов (выделенный REST-сервер).
Всего у меня есть 2 сервера БД, один сервер чата и один сервер отдыха.
Теперь по вопросам -
1. Могу ли я запретить регистрацию на сервере xmpp (т. Е. Внести в белый список ip остального сервера и позволить ему быть единственным, кто может создавать пользователей после того, как пользователь на нем зарегистрировался)?
2. По соображениям безопасности сервер Rest переключает сеанс для вошедшего в систему пользователя каждые 2 дня, клиенты iOS и Android локально управляют сеансами. Как я могу использовать этот сеанс с сервером XMPP?
Чтобы уточнить - я хочу, чтобы пользователи могли использовать сервер xmpp только в целях чата, но только после того, как они вошли в само приложение, так как сеанс пользователя может истечь, клиент чата также должен будет повторно пройти аутентификацию на сервере REST, как могу ли я достичь этого?
3. Не создаст ли это перегрузку на сервере REST? (т. е. сервер отдыха теперь должен будет обрабатывать запросы клиентов, а также запросы серверов XMPP)
4. Какова лучшая архитектура для создания системы такого типа (сервер чата, сервер БД для сервера чата, сервер отдыха, сервер БД для сервера отдыха), чтобы система могла масштабироваться горизонтально?
Я искал в Google статью или что-то связанное, чтобы описать общую архитектуру, но не смог найти ничего релевантного, так как здесь я не "изобретаю колесо", я хотел бы услышать хороший совет или обратиться к статье, которая объясняет How-To
Заранее спасибо.