Tecnologia para aplicações Real Time com muitos usuários

Qual tecnologia utilizar quando se precisa fazer uma aplicação real time(mais precisamente uma API e um aplicativo mobile) como a Uber. No caso da Uber, nós temos um aplicativo de motorista e um aplicativo de passageiro que estão sempre com o estado mais atual de suas entidades. O Motorista sempre com sua corrida em andamento e o passageiro também.

Quais tecnologias utilizar pra conseguir essa característica real time?

Caso saiba o direcionamento especificamente em Java ou mais especificamente Spring Boot, seria interessante…

1 - Usar um banco de dados RealTime (Firebase),
2 - A cada ação você chamar o método para preencher os dados novamente,
3 - Usar um WebSocket…

NÃO é um passo a passo, são 3 alternativas

Obrigado pela resposta.

No caso, nós já utilizamos Firebase na nossa solução, mas está ficando muito caro e de uma forma que está complicado de acompanhar. Ai queremos migrar para uma estrutura nossa mesmo.

Essa questão do WebSocket, aparentemente é o que parece mais atender nossos requisitos. Acontece que estou com umas dúvidas que não estou conseguindo saná-las. No caso, as dúvidas são quanto a escala. Existe algum problema de termos dezenas de milhares de usuários conectados? É criado somente um web socket pra todos os usuários ou seria um web socket pra cada? Existe a possibilidade de enviar a informação somente para um usuário em específico? Como funciona? :thinking:

Cara, essa parte de websocket eu só fiz no NodeJS, no Java não sei como funcionaria… Dá uma olhada nesse site:

Usando Netty SocketIO

Recomendo ASP.NET Core com SignalR ou Nodejs conforme o colega acima já indicou.