← Containers / containers / platform-details
Масштабирование и маршрутизация
Масштабирование экземпляров контейнера с явными ID
Сегодня масштабирование Containers выполняется вручную: сначала получают контейнеры по уникальному ID, а затем запускают контейнер. Обратите внимание, что получение контейнера не запускает его автоматически.
// get and start two container instances
const containerOne = getContainer(
env.MY_CONTAINER,
idOne,
).startAndWaitForPorts();
const containerTwo = getContainer(
env.MY_CONTAINER,
idTwo,
).startAndWaitForPorts();Каждый экземпляр будет работать до тех пор, пока не истечёт его sleepAfter времени, либо пока он не будет остановлен вручную.
Такое поведение полезно, когда нужен явный контроль над жизненным циклом экземпляров контейнеров. Например, вы можете запускать отдельный экземпляр контейнера для конкретного пользователя, ненадолго запускать песочницу для изоляции сгенерированного ИИ кода или выполнять короткую пакетную задачу.
Используйте getRandom вспомогательная функция
Если вы хотите запустить несколько экземпляров контейнера и распределять между ними запросы, используйте
getRandom вспомогательная функция:
import { Container, getRandom } from "@cloudflare/containers";
const INSTANCE_COUNT = 3;
class Backend extends Container {
defaultPort = 8080;
sleepAfter = "2h";
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const containerInstance = await getRandom(env.BACKEND, INSTANCE_COUNT);
return containerInstance.fetch(request);
},
};Используйте getRandom для маршрутизации на несколько экземпляров контейнеров без сохранения состояния. Для каждого запроса он случайным образом выбирает один из N
экземпляров, а это значит:
- Требует, чтобы пользователь задал фиксированное число экземпляров для маршрутизации.
- Каждый экземпляр будет выбираться случайным образом, независимо от местоположения.
В ближайшее время мы планируем устранить эти проблемы с помощью встроенных функций автомасштабирования и маршрутизации.