Esta página aborda os conceitos fundamentais do Function Compute (FC), organizados nas três etapas de trabalho com uma função do FC: criação, configuração e invocação.
A função do FC é a unidade básica de agendamento e execução de recursos no Function Compute. Cada função consiste no código da função e em sua configuração.
Criar uma função
Ao criar uma função, selecione o tipo de função e o ambiente de execução e envie o código. Ajuste outros parâmetros de configuração após a criação.
Para orientações sobre a abordagem mais adequada ao seu caso de uso, consulte Guia de seleção técnica.
Tipos de função
Função de evento
Uma função de evento responde a gatilhos de serviços da Alibaba Cloud, como Object Storage Service (OSS), Kafka e Simple Log Service (SLS). Escreva o handler com base nas interfaces definidas pelo Function Compute. Consulte Criar uma função acionada por evento.
Função web
Uma função web utiliza um framework web popular — Flask, ThinkPHP, Express ou SpringBoot — e expõe uma interface HTTP. Escreva o handler com base nas interfaces do framework escolhido. Consulte Criar uma função web.
Função de tarefa
Uma função de tarefa processa requisições assíncronas no modo de tarefa. O sistema rastreia o status de cada tarefa e permite iniciar ou parar tarefas manualmente. Esse tipo de função é ideal para cargas de trabalho offline, como jobs agendados, processamento de áudio e vídeo e processamento de dados em lote. Consulte Criar uma função de tarefa.
Função GPU
Uma função GPU executa cargas de trabalho aceleradas por GPU, como Stable Diffusion WebUI, ComfyUI, RAG ou TensorRT. Implante esses projetos como imagens de contêiner. Consulte Criar uma função acelerada por GPU.
Ambiente de execução
O ambiente de execução determina como o Function Compute executa o código da função.
Runtime integrado
Um runtime integrado (também chamado de runtime predefinido) vem pré-configurado pela plataforma Function Compute. Escreva o handler da função com base nas interfaces definidas pelo Function Compute. Os runtimes integrados oferecem os cold starts mais rápidos, mas não suportam múltiplas requisições simultâneas por instância. São mais adequados para cenários acionados por eventos com gatilhos de OSS, Kafka ou SLS. Consulte Runtimes do Function Compute.
Evento (
event): Os dados do evento são passados para a função como um documento JSON. O runtime converte esses dados em um objeto e os transmite ao parâmetroeventdo handler da função. Se o evento for originado de outro serviço da Alibaba Cloud, o formato seguirá a especificação desse serviço. Consulte Formatos de eventos de gatilho.Contexto (
context): Quando o FC executa a função, ele passa um objeto de contexto ao parâmetrocontextdo handler da função. Esse objeto contém informações sobre a invocação, o serviço, a função e o ambiente de execução. Consulte Contexto.
Runtime personalizado
Um runtime personalizado suporta frameworks web populares, como Flask, ThinkPHP, Express e SpringBoot. O pacote de implantação é um arquivo ZIP que contém um programa de servidor HTTP. Defina o Start Command e os Start Arguments na configuração da função para iniciar o servidor HTTP. Consulte Como funciona.
Imagem personalizada
O recurso de imagem personalizada permite usar uma imagem de contêiner como artefato de entrega da função. Envie uma imagem personalizada para o Container Registry (ACR) ou utilize uma imagem de exemplo. As imagens personalizadas são o único tipo de runtime que suporta funções GPU. Consulte Criar uma função que usa uma imagem personalizada.
Tipos de instância
Instância provisionada
Uma instância provisionada vincula-se a uma função GPU quando você adquire um pool de recursos provisionados. Pools de recursos provisionados estão disponíveis apenas para funções GPU e têm cobrança por assinatura mensal. Esse modelo de faturamento permite reservar recursos de GPU antecipadamente para garantir operações estáveis. Após o vínculo, aloque instâncias provisionadas para lidar com as requisições recebidas.
Instância elástica
Uma instância elástica faz dimensionamento automático conforme o volume de invocações. O FC cria instâncias à medida que o tráfego aumenta e as destrói quando o tráfego diminui. A primeira invocação após um evento de dimensionamento para zero requer um cold start.
Instância elástica (hibernação leve (anteriormente ociosa))
Quando a contagem mínima de instâncias é definida como 1 ou superior e o interruptor de hibernação leve está ativado, as instâncias ociosas entram automaticamente em hibernação leve. Nesse estado, o sistema congela alguns recursos da instância e cobra apenas uma taxa mínima de keep-alive. Ao chegar uma nova requisição, os recursos congelados são restaurados e a instância torna-se ativa. Esse hot start geralmente leva mais de 2 segundos, dependendo do tamanho do modelo.
As instâncias elásticas entram no estado de faturamento de hibernação leve nestes cenários:
A instância fica ociosa após a definição da contagem mínima de instâncias como 1 ou superior e a ativação do interruptor de hibernação leve.
A instância está no período de keep-alive em um cenário de afinidade de sessão.
A instância não está processando tarefas em segundo plano em um cenário de tarefa em segundo plano.
Instância elástica (ativa)
As instâncias elásticas entram no estado de faturamento ativo nestes cenários:
Uma requisição inicia a instância quando a contagem mínima de instâncias não está definida (comportamento padrão: dimensionar para zero quando ociosa).
A instância torna-se ativa para lidar com requisições quando a contagem mínima de instâncias é definida como 1 ou superior, independentemente da ativação do interruptor de hibernação leve.
A instância está processando requisições em um cenário de afinidade de sessão.
A instância está processando tarefas em segundo plano em um cenário de tarefa em segundo plano.
Contagem mínima de instâncias
Definir a contagem mínima de instâncias como 1 ou superior elimina cold starts na primeira requisição em uma instância elástica e garante capacidade computacional reservada. O valor padrão é 0, o que significa que as instâncias são dimensionadas para zero quando ociosas.
Para serviços dependentes de afinidade de sessão — como WebSocket e gRPC —, uma contagem mínima de instâncias igual ou superior a 1 habilita o agendamento por afinidade de sessão e conexões persistentes, mantendo estáveis as interações em tempo real.
Configure o dimensionamento agendado ou baseado em métricas para ajustar dinamicamente a contagem mínima de instâncias: aumente-a durante períodos de pico ou ao atingir um limiar de métrica e reduza-a quando a carga diminuir para maximizar a eficiência dos recursos. Consulte Limites de dimensionamento de instâncias e políticas elásticas.
Referência de cold start
A tabela a seguir resume como cada modelo de instância afeta o comportamento de cold start para ajudar na escolha da abordagem correta:
|
Modelo de instância |
Comportamento de cold start |
Mais indicado para |
|
Instância elástica (contagem mínima = 0) |
Cold start em cada evento de dimensionamento a partir de zero |
Cargas de trabalho sensíveis a custos e tolerantes a latência |
|
Instância elástica (contagem mínima >= 1, hibernação leve ativada) |
Hot start (geralmente > 2 s) ao restaurar da hibernação |
Inferência de GPU, carregamento de modelos grandes |
|
Instância elástica (contagem mínima >= 1, hibernação leve desativada) |
Sem cold start; a instância permanece ativa |
Serviços de baixa latência, WebSocket, gRPC |
|
Instância provisionada |
Sem cold start; recursos de GPU reservados permanentemente |
Cargas de trabalho de GPU em produção que exigem disponibilidade consistente |
Configurar uma função
Após criar uma função, ajuste os itens de configuração a seguir conforme necessário.
Configurações básicas
Tipo de instância
O FC oferece vários tipos de instância com diferentes especificações de recursos. Consulte Tipos de instância.
Disco temporário
Cada instância de função possui um disco de armazenamento temporário montado no diretório raiz da instância. O conteúdo do disco é limpo quando o sistema recupera a instância. Para armazenamento persistente de arquivos, monte um sistema de arquivos NAS ou um sistema de arquivos OSS.
Instâncias GPU de placa completa (série Tesla com 16 GB, série Ada com 48 GB) suportam tamanhos de disco de 30 GB ou 60 GB. Outros tipos de instância suportam 512 MB ou 10 GB. O tamanho de disco de 512 MB é gratuito.
Gatilho
Alguns serviços da Alibaba Cloud podem invocar funções do FC diretamente por meio de gatilhos. Quando ocorre um evento específico, o serviço envia o evento para o FC e a função é invocada imediatamente. Uma única função pode ter vários gatilhos, cada um atuando como um cliente independente. Cada evento que o FC passa para a função contém dados de exatamente um gatilho. Consulte Introdução aos gatilhos.
Runtime
O FC suporta várias linguagens de programação por meio de runtimes. Um runtime fornece um ambiente de execução específico para a linguagem que retransmite eventos de invocação, informações de contexto e respostas entre o FC e a função. Consulte Introdução aos runtimes.
Variável de ambiente
As variáveis de ambiente são armazenadas como pares chave-valor do tipo string na configuração da função. Cada função possui seu próprio conjunto independente de variáveis de ambiente. Utilize variáveis de ambiente para alterar o comportamento da função sem modificar o código. Consulte Configurar variáveis de ambiente.
Camada
Uma camada é um arquivo .zip que contém código adicional ou outro conteúdo — geralmente bibliotecas, um runtime personalizado, arquivos de dados ou arquivos de configuração. O FC fornece camadas públicas oficiais e suporta a criação de camadas personalizadas.
O uso de camadas oferece três benefícios:
Pacotes de implantação menores: Mover dependências para uma camada reduz o tamanho do pacote de implantação da função e acelera a implantação do código.
Separação de responsabilidades: Atualize as dependências da função sem alterar o código da função e vice-versa.
Dependências compartilhadas: Adicione uma única camada a quantas funções desejar na conta, em vez de incluir as mesmas dependências em todos os pacotes de implantação.
Funções que utilizam uma imagem personalizada (Custom Container) não suportam camadas. Empacote o runtime, as bibliotecas e outras dependências diretamente na imagem de contêiner ao criar uma função que usa uma imagem personalizada .
Permissões
Conceda acesso à função a outros serviços da Alibaba Cloud atribuindo uma função do Resource Access Management (RAM). O FC usa a função RAM para gerar credenciais temporárias e as passa ao código da função. Consulte Usar uma função para conceder permissões de acesso a outros serviços da Alibaba Cloud.
Logs
O FC integra-se ao Simple Log Service (SLS). Após configurar o registro de logs, o FC coleta automaticamente os logs da função e os entrega ao Logstore especificado. Consulte Configurar o recurso de registro de logs.
Rede
Por padrão, uma função pode acessar a internet, mas não consegue acessar recursos dentro de uma Virtual Private Cloud (VPC). Para acessar recursos da VPC ou permitir que uma VPC específica invoque a função, configure as definições de rede e as permissões para essa função. Consulte Configurar definições de rede.
Armazenamento
O FC suporta a montagem de sistemas de arquivos Apsara File Storage NAS e buckets do OSS. Consulte Configurar um sistema de arquivos NAS e Configurar acesso ao OSS.
Configuração assíncrona
O FC executa requisições assíncronas no modo de tarefa. Nesse modo, o sistema registra o status de execução de cada tarefa em todas as etapas e fornece consultas de status de tarefa, métricas de fila de tarefas, deduplicação de tarefas e encerramento proativo de tarefas.
O modo de tarefa assíncrona é adequado para cargas de trabalho de longa duração. Não é recomendado para processamentos sensíveis a latência (tempos de resposta inferiores a 100 ms) ou cargas de trabalho que enviam continuamente milhares ou mais tarefas por segundo. Consulte Invocação assíncrona.
Ciclo de vida
As instâncias de função são criadas e destruídas dinamicamente com base no volume de requisições em tempo real. Cada instância de função passa por três etapas de ciclo de vida: Creating, Invoke e Destroy. Consulte Configurar um hook de ciclo de vida de instância.
Verificação de integridade
O FC suporta verificações periódicas de integridade para instâncias de funções web e funções GPU. As verificações de integridade impedem o roteamento de requisições para instâncias não íntegras, reduzindo falhas nas requisições. Consulte Configurar uma verificação de integridade para uma instância.
DNS
O recurso de DNS personalizado acelera o acesso ao site. Ele suporta apenas runtimes integrados e runtimes personalizados. Consulte Configurar DNS personalizado.
Nome de domínio personalizado
Vincule um nome de domínio personalizado a uma função ou aplicação para acessá-la por meio de uma URL estável. O nome de domínio personalizado também pode servir como origem para um domínio acelerado por CDN, reduzindo a latência de acesso para os usuários. Consulte Configurar um nome de domínio personalizado.
Invocar uma função
Após implantar uma função do FC, invoque-a de várias maneiras: use o console do Function Compute para testar com um evento de amostra, chame-a via SDK ou API, utilize uma URL de função (endpoint HTTP ou HTTPS) ou acione-a a partir de uma fonte de eventos. As seções a seguir descrevem conceitos relacionados à invocação de funções.
Invocação síncrona
O FC processa o evento e retorna o resultado imediatamente. Consulte Invocações síncronas.
Invocação assíncrona
O FC aceita o evento e retorna uma resposta imediatamente, sem aguardar a conclusão da tarefa em segundo plano. O sistema processa o evento de forma confiável, mas não retorna detalhes específicos da invocação ou o status de execução da função. Para recuperar o resultado de uma invocação assíncrona, configure um destino de invocação assíncrona. Consulte Visão geral do recurso.
Análise de invocação
O recurso de análise de invocação resume o status de execução no nível da requisição. Quando ativado, o FC coleta informações de métricas para cada execução de função. Consulte Logs de métricas no nível de requisição.
Contagem máxima de instâncias
A contagem máxima de instâncias limita quantas instâncias a função pode executar simultaneamente. O máximo padrão é de 100 instâncias por conta da Alibaba Cloud por região. O limite real é exibido no Quota Center. Para aumentar o limite, envie uma solicitação pelo Quota Center.
Concorrência por instância
A concorrência por instância é o número de requisições que uma única instância pode processar simultaneamente. Ao criar uma função com um runtime personalizado ou uma imagem de contêiner, configure múltiplas requisições simultâneas por instância para reduzir o tempo de execução, diminuir o número total de instâncias e melhorar a utilização de recursos. Consulte Configurar concorrência.
Outros conceitos
Versão
Publicar uma versão salva o código e a configuração atuais da função como uma linha de base imutável. Essa linha de base exclui propriedades de recursos, como gatilhos, configurações de tarefas assíncronas e políticas elásticas. Uma versão é análoga a um git commit: ela captura um snapshot do código e da configuração em um determinado momento. Consulte Gerenciamento de versões.
Alias
Um alias é um ponteiro para uma versão específica da função. Quando uma função é invocada por meio de um alias, o FC o resolve para a versão de destino de forma transparente — os chamadores não precisam saber para qual versão o alias aponta. Use aliases para implementar lançamentos canário, rollbacks e implantações graduais. Um alias é análogo a uma git tag que marca um commit para lançamento. Consulte Gerenciamento de aliases.
Tag
Tags categorizam recursos de função para facilitar a busca e a agregação. Utilize tags para agrupar funções e atribuir diferentes permissões operacionais a diferentes funções (roles) para cada grupo. Consulte Configurar tags.