Разделите оперативные координаты и годовую историю. События геопозиции поступают через очередь, обновляют геоиндекс и записываются в партиционированное хранилище маршрутов.
Проектирование системы слежения за курьерами
Разделите оперативные координаты и годовую историю. События геопозиции поступают через очередь, обновляют геоиндекс и записываются в партиционированное хранилище маршрутов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется спроектировать архитектуру сервиса, который будет контролировать передвижения курьеров, учитывая следующие условия.
Функциональные требования:
- Вывод текущих координат всех курьеров, находящихся в пределах видимой части карты.
- Получение данных о перемещении курьеров в режиме реального времени.
- Возможность просмотра полного маршрута конкретного курьера за текущий день.
- Доступ к истории перемещений за предыдущие дни.
Нефункциональные требования:
- Сохранять историю перемещений курьеров в течение одного года.
- Максимальная задержка обновления информации – не более 60 секунд.
Необходимо разработать системную архитектуру, включающую:
- Хранилище и обработку геоданных.
- Выбор технологии передачи данных в реальном времени.
- Механизмы агрегации и долговременного хранения маршрутов.
- Обеспечение масштабируемости решения и минимизацию задержек.
Ответ
Разделите оперативные координаты и годовую историю. События геопозиции поступают через очередь, обновляют геоиндекс и записываются в партиционированное хранилище маршрутов.
Курьер передаёт координаты, время измерения и порядковый номер. API проверяет доступ, допустимость точки и дубли, после чего событие надёжно сохраняется. Поздняя точка может пополнить историю, но не должна заменить более свежую текущую позицию.
Поиск по видимой области выполняется геоиндексом; для крупных областей возвращаются кластеры. Обновления можно передавать через WebSocket/SSE с подпиской на область, предусмотреть переподключение и получение снимка. Историю разбивайте по времени и курьеру, храните год с автоматическим удалением старых партиций. Бюджет 60 секунд распределите между частотой отправки, очередью и доставкой. Нужны контроль задержки, дедупликация, масштабирование потребителей и ограничение доступа к персональным маршрутам.