Crie um serviço Web
Esta página descreve como criar um serviço Web na VM através da framework Web Gin escrita em Golang. Pode optar por criar o serviço Web em qualquer outra framework que queira usar.
- Para transferir o pacote Go na VM, execute o seguinte comando na VM:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- Instale o Go na VM. Para mais informações, consulte o artigo Instale o Go.
- Para criar um novo diretório para o serviço Web, execute o seguinte comando:
mkdir SERVICE_REPO cd SERVICE_REPO
Considerações adicionais
Quando cria um serviço Web, tem de ter em atenção as seguintes considerações:
- As entradas necessárias durante a criação da VM estão disponíveis como variáveis de ambiente e têm o seguinte prefixo:
CONNECTOR_ENV_. - Quando configurar o serviço Web, use as variáveis de ambiente para ler esses valores.
- Apenas os valores necessários para configurar o serviço Web têm de ser introduzidos durante a criação da VM.
- A porta do serviço tem de ser usada como entrada da variável CONNECTOR_ENV_PORT.
- Use outras variáveis de ambiente para entradas opcionais.
- Também pode receber entradas durante a criação da associação. Pode definir estes campos quando cria o conector personalizado e transmiti-los como caminho, consulta ou cabeçalhos em cada chamada da API.
- Certifique-se de que o servidor é executado no localhost.
Registo
Registe as informações necessárias e envie os registos para o Cloud Logging. Isto ajuda os consumidores de conetores a monitorizar e depurar falhas. Para publicar registos no Cloud Logging, pode usar o seguinte cliente do Cloud Logging disponível em Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient
Tem de inicializar o registador em main e adicionar um middleware em Gin para acompanhar todos os pedidos recebidos. Tem de acompanhar o método, o caminho, o estado e a latência de um pedido. Para filtrar os registos, use a gravidade adequada durante o registo. No serviço Web, leia o nível do registo da variável de ambiente. O nível de registo é considerado uma entrada opcional durante a criação da VM. Por predefinição, podem ser usados registos de informações. Seguem-se os níveis de registo:
- DEBUG: regista todas as partes do pedido, incluindo os rastreios de pedido/resposta HTTP.
- INFO: regista o início do serviço, o encerramento do serviço, os pedidos e outras informações.
- ERROR: regista falhas de pedidos, exceções de formatação e outros erros.
Encerramento controlado
Configure o servidor para desligar corretamente e processar os pedidos em curso. Para obter informações sobre como reiniciar ou parar o servidor corretamente, consulte o artigo Reinício ou paragem correta.
Simultaneidade
Os servidores Gin suportam inerentemente pedidos simultâneos através de rotinas Go. Por predefinição, é permitido o processamento de um número indefinido de pedidos por rotinas Go. No entanto, em alguns casos, quando se espera que os pedidos consumam muitos recursos, use conjuntos de trabalhadores para restringir e armazenar em buffer os pedidos no servidor. Para mais informações, consulte o exemplo de conjuntos de trabalhadores.
Teste e crie o ficheiro binário
- Defina a porta e execute o servidor com os seguintes comandos:
- Para validar o servidor, execute o seguinte comando curl na VM:
curl -X POST -H "Content-Type: application/json" -H "X-Custom-Header: MyValue" -d '{"name": "Alice", "address": "123 Main St", "gender": "F"}' http://localhost:8081/postData/456
curl -v http://localhost:8081/getData -H "TestKey: MyValue"
- Crie o ficheiro binário e use-o como a imagem da VM com o seguinte comando:
go build -o SERVICE_NAME
- Mova o ficheiro binário para a pasta raiz através do seguinte comando:
sudo cp SERVICE_NAME /opt
- Execute o serviço novamente para verificar se o ficheiro binário está a funcionar como esperado através do seguinte comando:
sudo chmod +x SERVICE_NAME ./SERVICE_NAME
EXPORT CONNECTOR_ENV_PORT = 8081 go get . go run .
Estes comandos agrupam as bibliotecas necessárias e executam o servidor.
Contentorize a aplicação
- Instale o Docker. Para mais informações, consulte o artigo Instale o Docker.
- Crie um ficheiro Docker para executar ficheiros binários.
FROM alpine:latest WORKDIR /opt COPY . . CMD ["./SERVICE_NAME"]
- Crie o contentor do conetor com o seguinte comando:
sudo docker build -t connector-container .
- Execute o contentor Docker. Defina
--restart=unless-stoppedpara reiniciar o serviço em caso de falha inesperada.
Tarefa ao nível do contentor
Pode encaminhar todos os registos em stdout para o Cloud Logging através do controlador de registos gcplogs enquanto executa o contentor Docker. Isto ajuda a monitorizar o arranque ou a falha ou o encerramento inesperado do serviço.
Para encaminhar os registos para o Cloud Logging, execute o seguinte comando:sudo docker run --name connector-service -e CONNECTOR_ENV_PORT=$CONNECTOR_ENV_PORT -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT --restart=unless-stopped ----log-driver=gcplogs connector-container
O que se segue?
- Saiba como criar um conetor personalizado.