Платформа доставки еды включает три различные стороны — клиентов, рестораны и курьеров — каждая требует отдельных сервисов и координации в реальном времени. Система построена на микросервисной архитектуре, чтобы позволить независимое масштабирование критических компонентов.
Redis) для снижения нагрузки на БДDijkstra или сторонние API (например, Google Maps)Все обновления местоположения проходят через слой WebSocket или Server-Sent Events (SSE), отправляя GPS-координаты курьеров клиентам с низкой задержкой. Брокер сообщений вроде Kafka разделяет производителей (приложения курьеров) и потребителей (панели отслеживания, ETA).
Батчинг нескольких заказов группирует близко расположенные заказы, назначенные одному курьеру, максимизируя эффективность. Алгоритм батчинга учитывает:
Конечный автомат управляет допустимыми переходами заказа. Отмены разрешены только до того, как ресторан начнёт готовку. Модификации запускают компенсирующие процессы для уведомления всех сторон и корректировки ETA.
Сервис прогнозирования анализирует исторический объём заказов, погоду и местные события, чтобы заблаговременно расставить курьеров в зонах высокого спроса. Это питает движок динамического ценообразования для балансировки спроса и предложения.
PostgreSQL для транзакционных данных заказовRedis для сессий, кеша и лидербордовCassandra или DynamoDB для высокопроизводительного хранилища событий местоположенияСервис Preparation Time Estimator использует модели машинного обучения, обученные на исторических данных ресторанов, чтобы предсказывать реалистичные времена приготовления, что критически важно для точных ETA расчётов и решений по группировке водителей.
Новый — ещё не проверен сообществом
Вы