Система построена на event-driven микросервисах, где каждый домен (локация, matching, pricing, trips, payments) работает независимо и общается через message broker, например Apache Kafka.
Водители отправляют обновления локации каждые 3–5 секунд через WebSocket-соединения к Location Service.
GEOADD, GEORADIUS)Matching Service подписывается на запросы пассажиров и обращается к Redis для поиска ближайших свободных водителей.
GEORADIUS для поиска кандидатов в пределах настраиваемого радиусаPricing Service считает тариф на основе:
Цены пересчитываются в момент запроса и фиксируются один раз, когда поездка подтверждена.
Каждая поездка следует строгой state machine:
requested → matched → driver_en_route → in_progress → completed
Переходы между состояниями сохраняются в PostgreSQL и публикуются как Kafka-события, чтобы синхронизировать все сервисы.
Геопространственные команды Redis, такие как GEORADIUS, используются для отслеживания местоположения, потому что они обеспечивают запросы близости с субмиллисекундной задержкой, что делает их подходящими для масштабируемого сопоставления водителей и пассажиров в реальном времени.
Новый — ещё не проверен сообществом
Вы