Para usar uma função do Function Compute da Alibaba Cloud como um service de backend, adicione um grupo de servidores do tipo Function Compute à sua instância do Application Load Balancer (ALB). A instância do ALB encaminha as solicitações para o Function Compute, que invoca uma função e retorna o resultado da execução para o solicitante.
Visão geral
O Function Compute da Alibaba Cloud é um service de computação totalmente gerenciado e orientado a eventos. Com o Function Compute, você pode escrever e fazer upload de código sem gerenciar infraestruturas, como servidores. O Function Compute provisiona recursos de computação e executa seu código de forma elástica e confiável. Ele também oferece recursos como consultas de log, monitoramento de desempenho e alertas. Ao usar o Function Compute, você pode criar rapidamente qualquer tipo de aplicação ou service e pagar apenas pelos recursos que realmente consumir.
O Application Load Balancer (ALB) permite adicionar o Function Compute como um service de backend. Quando uma instância do ALB recebe uma solicitação, ela a encaminha para o Function Compute para acionar a invocação de uma função. Em seguida, o Function Compute retorna o resultado da execução para o solicitante.
O ALB permite adicionar tanto o Function Compute 3.0 quanto o 2.0 como service de backend.
É necessário ativar o Function Compute antes de usá-lo. Se você registrou sua conta da Alibaba Cloud e concluiu a verificação de nome real após 27 de agosto de 2024, poderá usar o Function Compute diretamente, sem precisar ativá-lo.
O Application Load Balancer e o Function Compute se comunicam de forma segura pela rede interna da Alibaba Cloud.
Principais recursos
Arquitetura serverless: adicione o Function Compute como service de backend à sua instância do ALB para criar aplicações serverless e reduzir os custos de O&M.
Dimensionamento automático: o Function Compute dimensiona automaticamente os recursos de computação para cima ou para baixo com base no tráfego, o que garante capacidade suficiente durante os horários de pico e economiza recursos nos períodos de baixa.
Alta disponibilidade e tolerância a falhas: o Application Load Balancer e o Function Compute trabalham juntos para oferecer alta disponibilidade e recuperação de desastres, garantindo a estabilidade da aplicação.
Casos de uso
Microsserviços: use os recursos avançados de roteamento do ALB para distribuir solicitações para diferentes funções de microsserviços. O Function Compute pode dimensionar dinamicamente para lidar com solicitações de alta concorrência, melhorando a elasticidade e a confiabilidade do sistema.
Processamento de dados em tempo real: use o ALB para distribuir solicitações de processamento de dados para as funções apropriadas. O Function Compute pode processar dados em tempo real com apenas algumas linhas de código e configurações simples.
Cenários orientados a eventos: uma instância do ALB recebe solicitações acionadas por eventos e as encaminha para as funções correspondentes. O Function Compute processa os eventos e armazena os resultados em um banco de dados ou os envia para outros services, o que possibilita um processamento dinâmico e orientado a eventos.
Processamento de imagens e vídeos: uma instância do ALB recebe solicitações de upload de imagens ou vídeos e as distribui para as funções de processamento apropriadas. O Function Compute fornece recursos de computação elásticos que dimensionam automaticamente de acordo com a carga da tarefa, garantindo a conclusão eficiente das tarefas.
Limites
Regiões que suportam a adição de funções do Function Compute como servidores de backend.
A instância do ALB e a função devem estar na mesma região.
Um grupo de servidores do tipo Function Compute pode conter apenas uma função.
Para o Function Compute 2.0, se o Handler Type estiver definido como Event Handler, configure um gatilho HTTP para associar a função a uma instância do ALB.
Cenário de exemplo
Uma empresa de e-commerce implanta uma instância do ALB em uma região da Alibaba Cloud para lidar com um grande volume de solicitações de usuários em sua plataforma. À medida que os negócios crescem e o número de usuários aumenta, a empresa precisa de uma maneira flexível e eficiente de lidar com tarefas como geração de conteúdo dinâmico, análise de comportamento do usuário e recomendações personalizadas.
Para atender a essa demanda, a empresa integra sua instância do ALB ao Function Compute. Essa solução permite que a empresa processe essas tarefas de forma eficiente e melhore a experiência do usuário.
Pré-requisitos
Uma instância do ALB voltada para a internet está criada.
Um nome de domínio está registrado e um registro ICP foi concluído para ele.
Procedimento
Etapa 1: Crie uma função
Este tópico usa o console do Function Compute 3.0. Se você quiser usar o Function Compute 2.0, clique em Back to Function Compute 2.0 no canto superior direito do console e então criar uma função.
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions. Na página Functions, selecione uma região e clique em Create Function.
-
Na página Create Function, selecione um tipo de função, configure o código da função e clique em Create.
Neste exemplo, Event Function é selecionado como o tipo de função, e Use Sample Code é selecionado para Code. Você pode manter os valores padrão para outros parâmetros da Event Function ou modificá-los.


-
Na página de detalhes da função, acesse a aba Code e clique em Test Function.
Após a execução bem-sucedida da função, você pode visualizar o resultado na seção Response. Neste exemplo, o resultado é
hello world.
Etapa 2: Crie um grupo de servidores do Function Compute
Faça login no console do Application Load Balancer. No painel de navegação à esquerda, clique em Server Groups. Na barra de navegação superior, selecione uma região e clique em Create Server Group.
-
Na caixa de diálogo Create Server Group, selecione Function Compute para Server Group Type e clique em Create.
ImportanteSe você ativar o verificações de integridade, as sondagens de verificação de integridade serão contadas como solicitações para o Function Compute e incorrem em taxas.

Na mensagem The server group is created que aparece, clique em Add Backend Server.
-
No painel Add Backend Server, selecione a função criada e clique em OK.
Neste exemplo, Configuration Method está definido como Service, a função criada é selecionada para Function Name, e Specified Version está definido como LATEST. Se você quiser usar o método ARN, primeiro deve obter o ARN da função.

Etapa 3: Configure um listener
No painel de navegação à esquerda, escolha e clique no ID da instância do ALB que você deseja gerenciar.
Clique na aba Listener e clique em Create Listener.
-
Na etapa Configure Listener, configure o protocolo e a porta do listener, e clique em Next.
Este exemplo usa o protocolo HTTP e a porta 80. Você pode manter os valores padrão para outros parâmetros do listener HTTP ou modificá-los.

-
Na etapa Server Group, selecione seu grupo de servidores do Function Compute na lista suspensa Server Group e clique em Next.

Na etapa Configuration Review, confirme as configurações e clique em Submit.
Etapa 4: Configure a resolução de nome de domínio
Para ambientes de produção, recomendamos o uso de um nome de domínio personalizado e a criação de um registro CNAME para mapeá-lo para o nome de domínio da sua instância do ALB.
No painel de navegação à esquerda, escolha . Na página Instances, copie o nome DNS da instância ALB.
-
Para adicionar um registro CNAME:
-
Faça login no console do Alibaba Cloud DNS. Encontre seu nome de domínio e clique em Settings na coluna Actions.
NotaSe o seu nome de domínio não foi registrado na Alibaba Cloud, primeiro você deve adicioná-lo para o console do Alibaba Cloud DNS.
-
Na página de configuração, clique em Add Record, configure o registro CNAME e clique em OK.
Neste exemplo, Record Type está definido como CNAME e Record Value está definido como o nome DNS da instância do ALB. Você pode manter os valores padrão para outros parâmetros de registro DNS ou modificá-los.

-
Etapa 5: Teste a conectividade
Após concluir as operações anteriores, uma conexão é estabelecida entre o ALB e o Function Compute. Você pode abrir uma janela de linha de comando e executar o comando curl <your custom domain name> para testar a conectividade entre o ALB e o Function Compute.
A resposta mostrada na figura a seguir indica que a instância ALB pode encaminhar solicitações para o Function Compute e invocar a função.

FAQ
Por que o QPS é menor que o esperado ao usar o Function Compute?
Uma única instância do ALB pode atingir um desempenho máximo de 1 milhão de QPS. No entanto, quando o service de backend é o Function Compute, o QPS do seu service do Function Compute pode ficar aquém do esperado pelos seguintes motivos:
QPS de uma única instância de função: uma única instância de função pode processar apenas um número limitado de solicitações por vez. Se o número de solicitações exceder o QPS máximo que as instâncias atuais podem lidar, as solicitações podem ser enfileiradas ou limitadas.
-
Limite de instâncias do Function Compute: o limite de instâncias especifica o número máximo de instâncias que podem ser executadas simultaneamente. Se o número de instâncias for insuficiente, o QPS geral será limitado, mesmo que cada instância tenha um QPS alto.
Para saber como estimar o número necessário de instâncias, consulte Relação entre limites de instância e QPS do serviço.
Com base nos seus requisitos de negócios, configurar parâmetros como simultaneidade de instâncias e tipos e especificações de instâncias. Se necessário, você também pode aumentar o limite de instâncias para alcançar o QPS ideal.
Referências
Documentação do console
-
Informações do ALB:
-
Informações do Function Compute:
Referência de API
CreateServerGroup: cria um grupo de servidores do Function Compute definindo o parâmetro
ServerGroupTypecomoFc.AddServersToServerGroup: adiciona um servidor de backend do Function Compute definindo o parâmetro
ServerTypecomoFc.RemoveServersFromServerGroup: remove um servidor de backend de um grupo de servidores definindo o parâmetro
ServerTypecomoFce o parâmetroServerIdcomo o ARN da função.DeleteServerGroup: exclui um grupo de servidores especificado.