Как разделить Django Channels WebSockets в масштабируемый микросервис для многопользовательской игры?

У меня есть веб-приложение Django, которое включает в себя функцию многопользовательской игры, использующей Django Channels для связи в реальном времени через WebSockets. В настоящее время функциональность WebSockets (обновления игры в реальном времени, взаимодействие игроков и т.д.) обрабатывается непосредственно в основном Django-приложении.

По мере роста проекта я рассматриваю возможность выделения логики WebSockets/игры в отдельный микросервис для масштабируемости и удобства обслуживания. Мои цели - иметь выделенный микросервис, который обрабатывает все коммуникации в реальном времени и игровую логику, и иметь возможность масштабировать этот сервис независимо от основного веб-приложения Django.

Вот конкретные детали моей установки:

  • Бэкенд-фреймворк: Django (с Django Channels для WebSockets)
  • Текущая архитектура: Монолитное приложение Django с WebSockets, обрабатываемыми непосредственно в той же кодовой базе - что и остальное приложение
  • .
  • Желаемая архитектура: Отдельный микросервис, предназначенный для обработки WebSocket-соединений и игровой логики, который можно масштабировать независимо
  • .

Вопросы:

  1. Какие существуют лучшие практики для выделения WebSocket-коммуникаций в реальном времени в отдельный микросервис?
  2. Какие инструменты или технологии могут быть полезны для построения этого масштабируемого микросервиса на основе WebSocket? Я бы хотел не использовать другие сервисы django, а что-то более легкое
  3. .
  4. Как должно осуществляться взаимодействие между основным Django-приложением и WebSocket-микросервисом (например, API, очереди сообщений и т.д.)?
  5. Как управлять аутентификацией?

Первые попытки разделения: Я попробовал отделить логику WebSocket в новое приложение Django в рамках того же проекта, надеясь, что это позволит мне легче управлять ею. Я ожидал, что это облегчит масштабирование части WebSocket, сохраняя ее в том же фреймворке.

Вернуться на верх