Estou tentando integrar um servidor openFire XMPP ao servidor Spring atual da minha empresa, mas tenho duas perguntas principais que não consigo encontrar a resposta para -
Vou começar com a arquitetura atual primeiro -
1. O servidor xmpp tem um servidor de banco de dados separado do banco de dados do servidor Spring. Esta é uma máquina dedicada para manter o histórico de caracteres do usuário, etc.
2. O servidor Spring possui um banco de dados próprio, onde mantém as credenciais do usuário (criptografadas por md5) e também os dados dos aplicativos clientes.
3. O servidor Spring é dedicado para atender a solicitações HTTP (um servidor REST dedicado)
Ao todo, eu tenho 2 servidores de banco de dados, uma vez que o servidor de bate-papo e um servidor de descanso
Agora para as perguntas -
1. Posso proibir o registro no servidor xmpp (ou seja, colocar na lista branca o ip restante do servidor e deixá-lo ser o único que pode criar usuários depois que um usuário se registrar nele)?
Por razões de segurança, o servidor Rest alterna a sessão para um usuário conectado a cada 2 dias, os clientes iOS e Android lidam com o gerenciamento de sessão localmente - Como posso usar essa sessão com o servidor XMPP?
Para esclarecer - eu quero que os usuários possam usar o servidor xmpp apenas para fins de bate-papo, mas somente depois de efetuar login no próprio aplicativo, uma vez que a sessão do usuário pode expirar, o cliente de chat também terá que se autenticar novamente no servidor REST. posso conseguir isso?
3. Não criará uma sobrecarga no servidor REST? (ou seja, o servidor de descanso terá agora para lidar com solicitações de cliente e também solicitações de servidor XMPP)
4. Qual é a melhor arquitetura para alcançar este tipo de sistema (servidor de chat, servidor db para servidor de chat, servidor de descanso, servidor db para servidor de descanso) para que o sistema possa ser dimensionado horizontalmente?
Eu pesquisei no Google por um artigo ou algo relacionado a descrever a arquitetura geral, mas não consegui encontrar nada relevante, já que eu não estou "inventando a roda" aqui eu adoraria ouvir um bom conselho ou ser direcionado a um artigo que explica os How-To's
Obrigado antecipadamente.