Webdienst erstellen

Auf dieser Seite wird beschrieben, wie Sie mit dem Gin-Web-Framework, das in Golang geschrieben ist, einen Webdienst in der VM erstellen. Sie können den Webdienst auch in einem anderen Framework erstellen.

  1. Führen Sie in der VM den folgenden Befehl aus, um das Go-Paket in der VM 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 Folgendes beachten:

  • Eingaben, die Sie beim Erstellen der VM benötigen, sind als Umgebungsvariablen verfügbar und haben das folgende Präfix: CONNECTOR_ENV_.
  • Wenn Sie den Webdienst einrichten, verwenden Sie die Umgebungsvariablen, um diese Werte zu lesen.
  • Nur die Werte, die zum Einrichten des Webdienstes erforderlich sind, müssen beim Erstellen der VM als Eingabe verwendet werden.
  • Der Port des Dienstes muss aus der Variablen CONNECTOR_ENV_PORT als Eingabe verwendet werden.
  • Verwenden Sie andere Umgebungsvariablen für optionale Eingaben.
  • Sie können auch Eingaben beim Erstellen der Verbindung abrufen. Sie können diese Felder beim Erstellen des benutzerdefinierten Connectors definieren und sie in jedem API-Aufruf als Pfad, Abfrage oder Header übergeben.
  • Achten Sie darauf, dass der Server auf dem Localhost ausgeführt wird.

Logging

Protokollieren Sie die erforderlichen Informationen und übertragen Sie die Logs an Cloud Logging. So können Connector-Nutzer Fehler nachverfolgen und beheben. Wenn Sie Logs in Cloud Logging veröffentlichen möchten, können Sie den folgenden Cloud Logging Client in Go verwenden: https://pkg.go.dev/cloud.google.com/go/logging#NewClient

Sie müssen den Logger in „main“ initialisieren und eine Middleware in Gin hinzufügen, um alle eingehenden Anfragen zu verfolgen. Sie müssen die Methode, den Pfad, den Status und die Latenz für eine Anfrage verfolgen. Verwenden Sie beim Logging die entsprechende Schweregradstufe, um die Logs zu filtern. Lesen Sie im Webdienst die Logebene aus der Umgebungsvariablen. Die Logebene wird beim Erstellen der VM als optionale Eingabe verwendet. Standardmäßig können Info-Logs verwendet werden. Folgende Logebenen sind verfügbar:

  • DEBUG: protokolliert alle Teile der Anfrage, einschließlich der HTTP-Anfrage-/Antwort-Traces.
  • INFO: protokolliert den Dienststart, das Herunterfahren des Dienstes, Anfragen und andere Informationen.
  • ERROR: protokolliert Anfragenfehler, 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äßer Neustart oder Stopp.

Gleichzeitigkeit

Gin-Server unterstützen von Natur aus gleichzeitige Anfragen mit Go-Routinen. Standardmäßig können eine unbestimmte Anzahl von Anfragen von Go-Routinen verarbeitet werden. In einigen Fällen, in denen Anfragen ressourcenintensiv sein können, sollten Sie jedoch Worker-Pools verwenden, um die Anfragen auf dem Server einzuschränken und zu puffern. Weitere Informationen finden Sie im 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 den folgenden curl-Befehl auf der VM aus, um den Server zu prüfen:
    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 die Binärdatei und verwenden Sie sie mit dem folgenden Befehl als VM-Image:
    go build -o SERVICE_NAME
  5. Verschieben Sie die Binärdatei mit dem folgenden Befehl in den Stammordner:
    sudo cp SERVICE_NAME /opt
  6. Führen Sie den Dienst noch einmal aus, um mit dem folgenden Befehl zu prüfen, ob die Binärdatei wie erwartet funktioniert:
    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 im Falle eines unerwarteten Fehlers 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, unerwartete Fehler oder das Herunterfahren des Dienstes nachverfolgen.

Führen Sie den folgenden Befehl aus, um die Logs 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

  • Informationen zum Erstellen eines benutzerdefinierten Connectors .