Сохранение групп каналов django при развертывании в производство с использованием нескольких экземпляров сервера - PullRequest
0 голосов
/ 20 апреля 2019

Я развертываю свое приложение django, которое использует веб-сокеты (каналы django 2) для производства. Использование балансировщика нагрузки и двух экземпляров приложения с nginx / gunicorn до сих пор работало нормально, но меня интересует масштабируемость части websockets.

Как создать архитектуру масштабируемых веб-сокетов, которая будет совместно использовать группы каналов django между различными экземплярами сервера?

Я использую веб-сокеты для функции живого чата, поэтому я должен убедиться, что пользователи, добавленные в определенную группу, смогут отправлять / получать сообщения от всех других пользователей в той же комнате чата независимо от того, на какой экземпляр сервера загружается Балансир укажет их.

Моей первой мыслью было просто использовать отдельный удаленный сервер только для повторного просмотра, но я знаю, что вертикальная масштабируемость в конце концов придет к концу. Что произойдет, когда мне нужно будет масштабировать серверы Redis по горизонтали?

Я уже использовал настройку gunicorn + daphne, но только с низким / dev-тестированием трафика. Я еще не пробовал масштабировать каналы django по горизонтали.

...