Назад | Перейти на главную страницу

Интегрируйте сервер мгновенного чата в существующий сервер Spring

Я пытаюсь интегрировать сервер openFire XMPP с моим текущим сервером Spring компании, но у меня есть два основных вопроса, на которые я не могу найти ответ:

Сначала я начну с моей текущей архитектуры -
1. Сервер xmpp имеет собственный БД-сервер, отделенный от БД сервера Spring. Это выделенная машина для хранения истории пользовательских символов и т. Д.
2. Сервер Spring имеет собственную базу данных, в которой хранятся учетные данные пользователя (в зашифрованном виде md5), а также данные клиентских приложений.
3. Сервер Spring предназначен для обслуживания HTTP-запросов (выделенный сервер REST).

В целом у меня есть 2 сервера БД, один сервер чата и один сервер отдыха

Теперь вопросы -
1. Могу ли я запретить регистрацию на сервере xmpp (т.е. занести в белый список IP-адрес остального сервера, и пусть он будет единственным, кто может создавать пользователей после того, как пользователь зарегистрируется на нем)?
2. По соображениям безопасности сервер Rest переключает сеанс для вошедшего в систему пользователя каждые 2 дня, клиенты iOS и Android обрабатывают управление сеансом локально - как я могу использовать этот сеанс с сервером XMPP?
Чтобы уточнить - я хочу, чтобы пользователи могли использовать сервер xmpp только для целей чата, но только после того, как они вошли в само приложение, так как сеанс пользователя может истечь, клиент чата также должен будет повторно пройти аутентификацию на сервере REST, как я могу этого добиться?
3. Не приведет ли это к перегрузке REST-сервера? (т.е. серверу Rest теперь придется обрабатывать запросы клиентов, а также запросы сервера XMPP)
4. Какая архитектура лучше всего подходит для создания такой системы (сервер чата, сервер базы данных для сервера чата, сервер отдыха, сервер базы данных для сервера отдыха), чтобы система могла масштабироваться по горизонтали?

Я искал в Google статью или что-то связанное с описанием общей архитектуры, но не нашел ничего подходящего, так как я здесь не «изобретаю колесо». Я хотел бы услышать хороший совет или перенаправить к статье, объясняющей Как сделать

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