Как передавать обновления местоположения в реальном времени от курьера пользователю в API доставки еды на основе микросеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как передавать обновления местоположения в реальном времени от курьера пользователю в API доставки еды на основе микросе

Сообщение Anonymous »

Я работаю над API доставки еды как личный проект, построенный на архитектуре микросервисов и использующий MassTransit/RabbitMQ для взаимодействия, управляемого событиями. У меня есть три основных сервиса:
  • Order-Service: управляет заказами и предоставляет пользователям обновления статуса в режиме реального времени через концентратор SignalR (OrderHub).
    Ресторанная служба: обновляет статус заказа (например, готовится, готов) и взаимодействует со службой заказов с помощью RabbitMQ.
  • Курьерская служба: управляет доступностью курьерской службы, назначает курьеров для заказов и должен отправлять пользователям обновления местоположения в режиме реального времени.
Проблема, с которой я столкнулся, заключается в том, что я делюсь обновлениями местоположения курьера с пользователь. Пользователи подключаются к OrderHub в Order-Service, где в настоящее время они получают обновления статуса своих заказов в режиме реального времени. Теперь мне также необходимо обеспечить отслеживание местоположения курьера в режиме реального времени по мере доставки.
Текущая настройка:
  • < li>Courier-Service получает детали заказа от Order-Service и обновления статуса от Restaurant-Service через RabbitMQ.
  • Courier-Service управляет своим собственным внутренним состоянием для курьерских местоположений.
  • Пользователи подписаны на центр SignalR компании Order-Service, чтобы получать обновления статуса заказа в режиме реального времени.
В настоящее время я рассматриваю возможность настройки настроить ретрансляцию событий RabbitMQ от Courier-Service к Order-Service для трансляции обновлений местоположения через SignalR. Однако мне сложно эффективно управлять высокочастотными данными о местоположении в этой настройке, не перегружая ни одну из служб.
Вопрос:
Как мне настроить RabbitMQ и SignalR будут обрабатывать частые обновления в реальном времени в этом сценарии?
Возможные подходы:
  • Событие Ретрансляция через RabbitMQ: пусть Courier-Service публикует обновления местоположения в качестве событий в RabbitMQ, которые Order-Service будет использовать, а затем транслировать пользователям через OrderHub.
  • Прямые вызовы API: используйте HTTP/REST API от Courier-Service к Order-Service для каждого обновления местоположения, а затем транслируйте его из OrderHub.
  • Объединительная плата SignalR: внедрите SignalR как в Courier-Service, так и в Order-Service, используя общую объединительную плату для синхронизации обновлений, но я не уверен, что это будет эффективно.
Что я пробовал:
Прямые соединения WebSocket между службами (неустойчиво при масштабировании).
Двойные соединения на стороне клиента, при которых курьеры подключаются как к службе заказов, так и к курьерской службе для получения обновлений (высокая нагрузка на клиент).

Подробнее здесь: https://stackoverflow.com/questions/791 ... microservi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»