Пресистантный движок облачного приложения Google - PullRequest
0 голосов
/ 16 апреля 2020

Я недавно развернул приложение node.js с использованием сокета io для чата в реальном времени и изначально испытывал проблемы с подключением к сокету. Я исправил проблему, используя следующий файл app.yaml config

runtime: nodejs
env: flex
manual_scaling:
  instances: 1
network:
  session_affinity: true

Но теперь мой вопрос: как это масштабируется? Конечно, один экземпляр не сможет обрабатывать много трафика c. Я пробовал это без ручного масштабирования экземпляров, но у меня все еще возникали проблемы с сокетами (возможно, потому что два говорящих подключены к разным экземплярам?).

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

1 Ответ

0 голосов
/ 17 апреля 2020

В общем, хорошей практикой является то, что ваше приложение будет агностировать c в отношении того, какой экземпляр будет обслуживать запрос.

Однако, если это невозможно для вашего варианта использования, вы можете проверить в App Engine Flexible документацию , что Session affinity гарантируется только при максимальных усилиях:

Сходство сессий в App Engine реализовано с максимальной отдачей. При разработке приложения вы всегда должны исходить из того, что сходство сеансов не гарантировано.

...

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...