Como é que a uber app track cabs em tempo real em andróide?
Esta é apenas a minha suposição :)
1.) Todos os táxis continuam a enviar os detalhes de localização (lat/lon) em alguns intervalos curtos para o servidor.
2.) Quando um usuário abre o aplicativo Uber, então um pedido HTTP é feito junto com a localização geográfica do usuário e o servidor envia de volta apenas as informações das cabines que estão dentro de algum raio da localização do usuário (Isto pode ser alcançado criando dinamicamente uma Geo-fence em torno das localizações do usuário e encontrando todas as cabines cujas coordenadas geográficas se cruzam com as coordenadas geográficas. Tudo isto pode acontecer enquanto o aplicativo está lançando OU Geo-fence baseado no tempo mais baixo para chegar ao usuário ). Com base nesses dados, o usuário pode ver algumas cabines se movendo.
3). O usuário faz um pedido de reserva para um determinado destino ao servidor.
4.) O servidor tenta contatar todos os motoristas disponíveis / um motorista (depende de vários fatores como a preferência do motorista, se houver algum desses recursos).
5.) Uma vez que o driver aceita o pedido, então outro pedido HTTP é feito junto com DriverId e detalhes de localização do geo.
6.) O servidor recupera os detalhes do driver como Imagem, Número da placa de carro e empurra para o aplicativo do usuário, que é onde você pode ver esses detalhes. O servidor também calcula o tempo aproximado para chegar com base na distância da localização da cabine, dados de tráfego, qualquer outro usuário a ser pego se o pool de carros.
NOTE: Os pontos 5 e 6 também podem ser alcançados enviando detalhes do motorista (Nome, Imagem, Número etc) do aplicativo do motorista diretamente para o servidor de cache (In-Memory) e esses detalhes podem ser enviados para a leitura do aplicativo do usuário a partir do cache In-Memory. Um melhor desempenho pode ser alcançado. Basicamente, o aplicativo do driver Uber também atua como Key-Value store. Portanto, isto pode ser possível. Para que não haja necessidade de recuperar os detalhes do driver do Data Store (NoSQL / RDBMS que é sempre aplicável). Algum serviço de fundo pode sincronizar do cache para o armazenamento de dados simultaneamente com base em alguma notificação de eventos, se necessário.
7). O aplicativo do usuário é bloqueado para uma cabine e o servidor começa a transmitir os detalhes da localização geográfica da cabine para o aplicativo do usuário, a fim de exibir o rastreamento em tempo real.
8). Uma vez que o usuário embarca na cabine, o aplicativo do motorista inicia a navegação até o destino e o medidor de viagens será habilitado no servidor.
.