Golang est un langage de programmation populaire et de plus en plus de personnes l'utilisent pour développer différents types d'applications. Pour rendre Golang plus évolutif, Google a développé un framework RPC hautes performances appelé gRPC. gRPC utilise Protocol Buffers comme outil de sérialisation par défaut, ce qui le rend plus efficace et nécessite moins de surcharge que les autres frameworks RPC. Dans cet article, nous expliquerons comment installer gRPC et comment l'utiliser avec Golang.
1. Installer gRPC
Golang nécessite deux étapes pour installer gRPC : installez d'abord les tampons de protocole, puis installez gRPC.
$ go get -u google.golang.org/grpc
Une fois l'installation terminée, vous pouvez trouver le code source de gRPC dans $GOPATH/src/google.golang. Répertoire org/grpc .
2. Utilisez gRPC
Après avoir installé gRPC, vous pouvez l'utiliser pour la communication RPC dans Golang. Voici comment créer un client et un serveur de base à l'aide de gRPC :
Tout d'abord, vous devez définir votre service dans un fichier .proto. Voici un exemple simple :
syntax = "proto3"; package greeter; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; }
Le code ci-dessus définit un service appelé Greeter, qui contient un appel RPC appelé SayHello. Cet appel RPC reçoit un objet HelloRequest en tant que paramètre et renvoie un objet HelloReply comme valeur de retour.
Une fois que vous avez défini votre fichier .proto, vous devez utiliser le compilateur Protocol Buffers pour générer le code. Vous pouvez générer du code à l'aide de la commande suivante :
$ protoc --go_out=plugins=grpc:. *.proto
Le code généré sera stocké dans le même répertoire que le fichier .proto.
Ensuite, vous devez écrire le code pour implémenter le serveur. Voici un exemple simple :
package main import ( "context" "log" "net" "google.golang.org/grpc" pb "github.com/example/greeter" ) 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 { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) log.Printf("Listening on %s", port) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
Le code ci-dessus implémente un service appelé Greeter et implémente l'appel RPC de SayHello. Cet appel concatène la chaîne « Hello » avec le nom fourni par le client et le renvoie.
Enfin, vous devez écrire le code client afin d'utiliser les services fournis par le serveur. Voici un exemple simple :
package main import ( "context" "log" "google.golang.org/grpc" pb "github.com/example/greeter" ) const ( address = "localhost:50051" ) func main() { conn, err := grpc.Dial(address, grpc.WithInsecure()) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) name := "world" r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) }
Le code ci-dessus crée un client gRPC et appelle la méthode SayHello du serveur.
Conclusion
L'utilisation de gRPC peut rendre les applications Golang plus évolutives et plus performantes. L'installation et l'utilisation de gRPC sont très simples et ne nécessitent que quelques étapes. En suivant les étapes ci-dessus, vous pourrez créer plus facilement des appels RPC dans Golang à l'aide de gRPC et communiquer avec d'autres systèmes de manière efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!