gRPC ist ein leistungsstarkes, vielseitiges Open-Source-RPC-Framework, das von Google entwickelt und als Open-Source-Lösung bereitgestellt wird. gRPC unterstützt mehrere Programmiersprachen, einschließlich Golang. In diesem Artikel wird die Verwendung von gRPC Golang vorgestellt.
1. Installieren Sie gRPC
Bevor Sie gRPC Golang entwickeln, müssen Sie zuerst gRPC installieren. Sie können es mit dem folgenden Befehl installieren:
go get -u google.golang.org/grpc
Nach Abschluss der Installation müssen Sie auch den Go-Sprachcodegenerator protoc-gen-go von gRPC installieren, der mit dem folgenden Befehl installiert werden kann: # 🎜🎜#
go get -u github.com/golang/protobuf/protoc-gen-go
syntax = "proto3"; package helloworld; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }
protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld
Der generierte Go-Sprachcode wird im angegebenen Verzeichnis helloworld gespeichert.
4. Implementieren Sie den Server
Nachdem Sie den Go-Sprachcode generiert haben, müssen Sie den Dienst implementieren. Das Folgende ist ein Beispiel für einen Dienst, der die SayHello-Methode implementiert:
package main import ( "context" "fmt" "net" "google.golang.org/grpc" pb "github.com/your_username/helloworld" ) const ( port = ":50051" ) type server struct{} func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { return &pb.HelloReply{Message: "Hello " + in.Name}, nil } func main() { lis, err := net.Listen("tcp", port) if err != nil { fmt.Printf("failed to listen: %v", err) return } s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) fmt.Printf("server listening at %v", lis.Addr()) if err := s.Serve(lis); err != nil { fmt.Printf("failed to serve: %v", err) } }
package main import ( "context" "log" "os" "time" "google.golang.org/grpc" pb "github.com/your_username/helloworld" ) const ( address = "localhost:50051" defaultName = "world" ) func main() { // Set up a connection to the server. conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithTimeout(10*time.Second)) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) // Contact the server and print out its response. name := defaultName if len(os.Args) > 1 { name = os.Args[1] } ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) }
Verwenden Sie die grpc.Dial-Methode, um eine Verbindung zu erstellen.
Erstellen Sie ein GreeterClient-Objekt c
go build -o server ./server/main.go go build -o client ./client/main.go
./server
./client
Das obige ist der detaillierte Inhalt vonEin Artikel, der die Verwendung von gRPC Golang vorstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!