Heim > Backend-Entwicklung > Golang > So verwenden Sie gRPC zur Implementierung eines Basisservers und -clients in Golang

So verwenden Sie gRPC zur Implementierung eines Basisservers und -clients in Golang

PHPz
Freigeben: 2023-03-31 10:46:34
Original
1998 Leute haben es durchsucht

gRPC ist ein leistungsstarkes, quelloffenes und universelles Remote-Prozeduraufruf-Framework, das für RPC-Aufrufe in verschiedenen Sprachen und Plattformen geeignet ist. Es verwendet das von Google entwickelte Protobuf-Protokoll für die Datenübertragung, kann die Kommunikation zwischen Server und Client schnell realisieren und bietet umfangreiche Funktionen und Skalierbarkeit. In diesem Artikel wird erläutert, wie Sie mit gRPC grundlegende Server und Clients in Golang implementieren.

1. Installieren Sie gRPC

Bevor wir beginnen, müssen Sie zuerst gRPC und Protobuf installieren. Sie können den folgenden Befehl verwenden:

$ go get -u google.golang.org/grpc
$ go get -u github.com/golang/protobuf/protoc-gen-go
Nach dem Login kopieren

2. Als nächstes müssen wir eine .proto-Datei erstellen Datei definiert uns Die zu übertragenden Daten und die aufzurufende Methode. In diesem Beispiel haben wir eine Datei namens „greet.proto“ erstellt.

syntax = "proto3";

package greet;

service GreetService {
  rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}
Nach dem Login kopieren

3. Code generieren

GRPC-bezogenen Code über die Protobuf-Datei generieren. Führen Sie den folgenden Befehl aus:

$ protoc -I greet/ greet/greet.proto --go_out=plugins=grpc:greet
Nach dem Login kopieren

Der generierte Code wird im Greet-Verzeichnis gespeichert.

4. Implementieren Sie die Serverseite

In der serverseitigen Implementierung müssen wir die in der Protodatei definierte Serviceschnittstelle implementieren. Wir können die serverseitige Code-Implementierung durch die folgenden Schritte abschließen:

Erstellen Sie einen gRPC-Server
  • Registrieren Sie den Dienst
  • Führen Sie den Server aus
  • Das Folgende ist die Code-Implementierung:
package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"
    pb "path/to/greet"
)

type server struct {}

func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {
    return &pb.HelloResponse{Message: "Hello " + in.Name}, nil
}

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer()
    pb.RegisterGreetServiceServer(s, &server{})
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}
Nach dem Login kopieren

5. Implementieren Sie den Client

Die Client-Implementierung ist relativ einfach. Wir müssen nur eine Verbindung zum entsprechenden Server herstellen und den Client instanziieren. Anschließend können wir die vom Server bereitgestellten Methoden aufrufen. In der Client-Code-Implementierung müssen Sie zunächst eine Verbindung für die gRPC-Kommunikation erstellen, dann die Verbindung verwenden, um einen Client zu erstellen und die Schnittstellenmethode aufzurufen.

Das Folgende ist die Implementierung des Client-Codes:

package main

import (
    "log"
    "os"
    "context"
    "google.golang.org/grpc"
    pb "path/to/greet"
)

func main() {
    address := "localhost:50051"
    if len(os.Args) > 1 {
        address = os.Args[1]
    }
    conn, err := grpc.Dial(address, grpc.WithInsecure())
    if err != nil {
        log.Fatalf("couldn't connect: %v", err)
    }
    defer conn.Close()

    c := pb.NewGreetServiceClient(conn)

    name := "world"
    if len(os.Args) > 2 {
        name = os.Args[2]
    }
    r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    log.Printf("Greeting: %s", r.Message)
}
Nach dem Login kopieren

6. Testen

Wir haben den Server- und Client-Code implementiert, führen nun den Server aus und starten dann den Client zum Testen.

$ go run greet_server.go
Nach dem Login kopieren

Öffnen Sie nach dem Ausführen des Servers ein Terminal und führen Sie den Client zum Testen aus:

$ go run greet_client.go
Greeting: Hello world
Nach dem Login kopieren

7. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit gRPC grundlegende Server und Clients in Golang implementieren. gRPC bietet leistungsstarke Kodierungs- und Dekodierungsfunktionen und unterstützt gleichzeitig mehrere Transportformate, einschließlich JSON und Protokollpufferdaten, wodurch es für verschiedene Arten von Anwendungen geeignet ist. Zum Beispiel verteilte Systeme, umfangreiche Webanwendungen und Spiele usw. Wenn Sie mehr über gRPC erfahren möchten, schauen Sie sich die offizielle Dokumentation an.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie gRPC zur Implementierung eines Basisservers und -clients in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage