Проблема с производительностью при получении ближайшего местоположения в приложении реального времени
В настоящее время я работаю над таким проектом, как Uber. Это означает, что есть два приложения: одно для водителя и одно для клиента.
Проблема в том, что драйвер должен обновлять свое местоположение за 2 секунды. И клиент тянет всех ближайших водителей за 2 секунды в режиме реального времени. Это вызывает плохую производительность в запросе базы данных. Я использую расширение cube & earthdistance в PostgreSQL для расчета ближайшего.
Может кто-нибудь показать мне, как лучше решить эту проблему? Большое спасибо!
1 ответ
Вы можете использовать https://deepstream.io/ для передачи данных в реальном времени, например, с Android
public void onLocationChanged(Location location) {
// get the record
Record record = client.record.getRecord( "driver/14" );
// any kind of data path works
record.set( "position.x", location.getLongitude() );
//as well as any kind of serializable datatype
record.set( "position.y", location.getLatitude() );
}
в JavaScript
// get the record
var driver = client.record.getRecord( 'driver/14' );
// subscribe to any changes within position
driver.subscribe( 'position', function( position ){
updateMarker( position.x, position.y );
});
В сочетании, например, с гео-пространственными запросами RethinkDB, которые можно интегрировать с этим в глубоком потоке, это может быть масштабируемым решением.
Вот пример репо, демонстрирующий это