Кажется, что он используется совместно, в отличие от руководств, предлагающих использовать какую-либо стороннюю базу данных для хранения и совместного использования сеанса между различными экземплярами ядра приложения.
Тест: этот сервер отображает идентификатор экземпляра как а также счетчик просмотров, сохраненный в сеансе, он запускается в двух экземплярах в Google App Engine Standard для node.js:
const Koa = require("koa");
const session = require("koa-session");
const port = process.env.PORT || 3000;
const app = new Koa();
app.keys = ["secret"];
app.use(session(app));
app.use(ctx => {
if (ctx.url === "/") {
const instanceId = process.env.GAE_INSTANCE;
const n = (ctx.session.views || 0) + 1;
ctx.session.views = n;
ctx.body = `Instance: ${instanceId}, Views: ${n}`;
}
});
app.listen(port);
app.yaml:
runtime: nodejs12
instance_class: F1
automatic_scaling:
min_instances: 2
max_instances: 2
Удивительно, но вывод:
...
Instance: 123, Views: 40
Instance: 789, Views: 41
Instance: 123, Views: 42
...
Счетчик просмотров плавно увеличивается один за другим, когда мои запросы попадают в тот или иной экземпляр, как если бы сеанс был общим.
Мой тест некорректен? Мне просто везет? Это поведение где-то задокументировано?