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 anfitrião local.
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 no 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, é possível usar 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 Reiniciar ou parar corretamente.
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 sejam intensivos em termos de recursos, use conjuntos de trabalhadores para restringir e colocar 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-stopped
para 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 do Docker. Isto ajuda a monitorizar o início 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.