Как сделать так, чтобы socket.io работал правильно в режиме кластера pm2? - PullRequest
0 голосов
/ 15 мая 2019

Я смотрел на различные решения вокруг, но когда я собрал все это вместе, это выглядит очень странно.

Я пытаюсь реализовать кластерный режим pm2 для моего приложения, в котором есть реализация socket.io.Теперь я понимаю концепцию, согласно которой безгражданство требуется для правильной работы моего приложения в режиме кластера.И socket.io НЕ сохраняет состояние.Путаница в том, что

1) Наш друг Кэм говорит , что просто реализация socket.io-redis будет работать нормально, когда мы создадим максимальное количество процессоров.
2) Пока сокет.io говорит , и я цитирую,

Примечание: sticky-session все еще требуется при использовании адаптера Redis. "

Для 1), согласно моим исследованиям, Интернет должен не согласиться с тем, что он будет работать. Может быть, мистеру Кэму повезло с транспортным методом, равным websocket, и, возможно, ему не пришлось иметь дело с polling. Но в то же время ядумаю, что это должно работать, так как redis-adapter - это то, что мы используем, чтобы сделать его без сохранения состояния.

ИНФОРМАЦИЯ: Он работал для меня с websocket в качестве метода транспорта, но я не смог протестировать его с polling.

Для 2), я думаю, мы можем объединить совет мистера Джони , чтобы запустить его с "pm2" IN "cluster", но на разных портах. А затем наши любимые nginxupstream группа с ip_hash даст нам вид того же эффекта.

Кроме того, я хочу подать заявкуТион эластичный.НЕ только на уровне кластера, но и в масштабе, и в масштабе.Каковы лучшие практики, учитывая, что мое приложение включало реализацию socket.io и управление токенами сеанса в redis?

Я что-то упустил или я совершенно не прав?Какой будет лучший способ масштабирования?

...