У меня есть чат-комната socket.io, трафик которой увеличивается, поскольку мы работаем на одной машине. Мы провели тесты с использованием библиотеки ws для сокетов, и они работают намного лучше, что позволяет лучше использовать наше оборудование. Однако за это пришлось бы переписывать наше приложение.
Наше приложение socket.io позволяет пользователям создавать частные чаты, которые реализуются с использованием пространств имен. Например
localhost:8080/room/1
localhost:8080/room/2
localhost:8080/room/3
Когда все находится в одном экземпляре, это довольно просто, но сейчас мы стремимся расширить эту емкость на несколько узлов.
Мы запускаем этот экземпляр в облаке Amazon. Раньше казалось, что масштабирование веб-сокетов было проблемой с ELB. Мы заметили, что Amazon теперь поддерживает балансировщик нагрузки приложений, который поддерживает веб-сокеты. Звучит здорово, но после прочтения документации я должен признать, что на самом деле не знаю, что это значит. Если я использую socket.io с тысячами пространств имен, нужно ли просто размещать экземпляры за этим ALB, и все будет работать? Мои основные вопросы:
Если x пользователей присоединятся к пространству имен, будет ли ALB автоматически перенаправлять мои сообщения нужным пользователям и от них? Допустим, у меня есть 5 экземпляров vanilla socket.io, работающих за ALB. Пользователь 1 создает пространство имен. Проходит несколько часов, и пользователь 99999 приходит и хочет присоединиться к этому пространству имен, нужно ли будет писать какой-либо дополнительный код для этого или alb перенаправит все туда, куда следует? То же самое касается отправки и получения сообщений?
I wanted to avoid having a redis database, would the first approach you suggested work
07.05.2017