Webdienst erstellen

Auf dieser Seite wird beschrieben, wie Sie mit dem in Golang geschriebenen Gin-Webframework einen Webdienst in der VM erstellen. Sie können den Webdienst in einem beliebigen anderen Framework erstellen, das Sie verwenden möchten.

  1. Führen Sie in der VM den folgenden Befehl aus, um das Go-Paket herunterzuladen:
    wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
      
  2. Installieren Sie Go in der VM. Weitere Informationen finden Sie unter Go installieren.
  3. Führen Sie den folgenden Befehl aus, um ein neues Verzeichnis für den Webdienst zu erstellen:
    mkdir SERVICE_REPO
      cd SERVICE_REPO
      

Weitere Überlegungen

Beim Erstellen eines Webdienstes müssen Sie die folgenden Aspekte beachten:

  • Die Eingaben, die Sie beim Erstellen einer VM benötigen, sind als Umgebungsvariablen verfügbar und haben das Präfix CONNECTOR_ENV_.
  • Verwenden Sie beim Einrichten des Webdienstes die Umgebungsvariablen, um solche Werte zu lesen.
  • Bei der Erstellung der VM dürfen nur Werte eingegeben werden, die für die Einrichtung des Webdienstes erforderlich sind.
  • Der Port des Dienstes muss als Eingabe von der Variablen CONNECTOR_ENV_PORT übernommen werden.
  • Verwenden Sie andere Umgebungsvariablen für optionale Eingaben.
  • Sie können auch während der Erstellung einer Verbindung Eingaben erhalten. Sie können diese Felder beim Erstellen des benutzerdefinierten Connectors definieren und in jedem API-Aufruf als Pfad, Abfrage oder Header übergeben.
  • Der Server muss auf dem Localhost ausgeführt werden.

Logging

Protokollieren Sie die erforderlichen Informationen und leiten Sie die Protokolle an Cloud Logging weiter. So können Nutzer von Connectoren Fehler verfolgen und beheben. Zum Veröffentlichen von Protokollen in Cloud Logging können Sie den folgenden Cloud Logging-Client verwenden, der in Go verfügbar ist: https://pkg.go.dev/cloud.google.com/go/logging#NewClient

Sie müssen den Protokoller in main initialisieren und eine Middleware in Gin hinzufügen, um alle eingehenden Anfragen zu erfassen. Sie müssen die Methode, den Pfad, den Status und die Latenz einer Anfrage erfassen. Verwenden Sie beim Logging den entsprechenden Schweregrad, um die Protokolle zu filtern. Im Webdienst wird das Protokollierungslevel aus der Umgebungsvariablen gelesen. Die Protokollebene wird während der VM-Erstellung als optionale Eingabe übernommen. Standardmäßig können Info-Logs verwendet werden. Folgende Logabenen sind verfügbar:

  • DEBUG: Hier werden alle Teile der Anfrage protokolliert, einschließlich der HTTP-Anfrage-/Antwort-Spuren.
  • INFO: Protokolliert Dienststart, Dienstbeendigung, Anfragen und andere Informationen.
  • ERROR: Protokolliert Fehler bei der Anfrage, Formatierungsausnahmen und andere Fehler.

Ordnungsgemäßes Herunterfahren

Richten Sie den Server so ein, dass er ordnungsgemäß heruntergefahren wird und die laufenden Anfragen verarbeitet. Informationen zum ordnungsgemäßen Neustarten oder Beenden des Servers finden Sie unter Ordnungsgemäßen Neustart oder Beenden.

Gleichzeitigkeit

Gin-Server unterstützen von Natur aus gleichzeitige Anfragen mit Go-Routinen. Standardmäßig kann eine nicht definierte Anzahl von Anfragen von Go-Routinen verarbeitet werden. In einigen Fällen, in denen Anfragen voraussichtlich ressourcenintensiv sind, sollten Sie jedoch Worker-Pools verwenden, um die Anfragen auf dem Server einzuschränken und zu puffern. Weitere Informationen finden Sie unter Beispiel für Worker-Pools.

Binärdatei testen und erstellen

  1. Legen Sie den Port fest und führen Sie den Server mit den folgenden Befehlen aus:
  2. EXPORT CONNECTOR_ENV_PORT = 8081
    go get .
    go run .

    Mit diesen Befehlen werden die erforderlichen Bibliotheken gebündelt und der Server ausgeführt.

  3. Führen Sie zum Überprüfen des Servers den folgenden curl-Befehl auf der VM aus:
    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"
  4. Erstellen Sie das Binary und verwenden Sie es als VM-Image mit dem folgenden Befehl:
    go build -o SERVICE_NAME
  5. Verschieben Sie die Binärdatei mit dem folgenden Befehl in das Stammverzeichnis:
    sudo cp SERVICE_NAME /opt
  6. Führen Sie den Dienst noch einmal aus, um zu prüfen, ob das Binärprogramm wie erwartet funktioniert. Verwenden Sie dazu den folgenden Befehl:
    sudo chmod +x SERVICE_NAME
    ./SERVICE_NAME

Anwendung containerisieren

  1. Installieren Sie Docker. Weitere Informationen finden Sie unter Docker installieren.
  2. Erstellen Sie eine Docker-Datei, um Binärdateien auszuführen.
    FROM alpine:latest
    WORKDIR /opt
    COPY . .
    CMD ["./SERVICE_NAME"]
  3. Erstellen Sie den Connector-Container mit dem folgenden Befehl:
    sudo docker build -t connector-container .
  4. Führen Sie den Docker-Container aus. Legen Sie --restart=unless-stopped fest, um den Dienst bei einem unerwarteten Fehler neu zu starten.

Aufgabe auf Containerebene

Alle Logs in stdout können mit dem Log-Treiber „gcplogs“ an Cloud Logging weitergeleitet werden, während der Docker-Container ausgeführt wird. So können Sie den Start oder einen unerwarteten Fehler oder das Herunterfahren des Dienstes nachvollziehen.

Führen Sie den folgenden Befehl aus, um die Protokolle an Cloud Logging weiterzuleiten:
  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

Nächste Schritte