Я хочу немного углубиться в бессерверную архитектуру (например, aws lambda и облачную функцию Google). Как они развертывают и запускают функцию, я слышал, для каждого запроса они будут создавать экземпляр для этого запроса. Разве это не дорого и неэффективно? Или, если они повторно используют экземпляр или контейнер, как они обрабатывают или управляют параллелизмом, автоматическим масштабированием и управлением экземпляром?
Как бессерверные функции, такие как aws lambda и Google Cloud, работают на уровне инфраструктуры
Ответы (1)
В разных облаках используются разные технологии для распределения нагрузки на рабочих. На основе того, что я узнал, поставщики облачных услуг узнают, как они используются, и оптимизируют их для своих клиентов, устраняя нежелательные сложности в инфраструктуре.
С докерами балансировка сделана,
https://rominirani.com/docker-swarm-tutorial-b67470cf8872
В Kubernetes (Google Cloud) это делается с помощью внешнего балансировщика нагрузки (для внешнего доступа),
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
Это просто для публики.
Облачные провайдеры сделают все возможные оптимизации, чтобы они могли быстро запустить ваш код. Я бы действительно считал их проприетарными, а не технологиями с открытым исходным кодом.
Надеюсь, это поможет.