Dans les scénarios où plusieurs services gRPC résident sur le même serveur écoutant sur une adresse partagée, comme dans l'exemple fourni, il peut sembler redondant d’établir des connexions distinctes à chaque service. Cet article vise à expliquer pourquoi des connexions distinctes sont généralement requises et explore comment utiliser une seule connexion pour accéder à plusieurs services gRPC.
Pour accéder efficacement à divers services gRPC hébergés sur le même serveur, vous pouvez exploiter une seule connexion client gRPC. Cette approche implique l'initialisation d'un objet grpc.ClientConn et sa transmission à des usines clientes de services individuelles, leur permettant de partager la ou les mêmes connexions sous-jacentes.
func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) }
Le code gRPC généré fourni dans le fichier pb.go englobe toutes les fonctionnalités nécessaires à l'exécution des RPC. Par conséquent, aucune implémentation supplémentaire côté client n'est nécessaire, à moins qu'une logique spécifique ne doive être exécutée automatiquement lors de chaque appel.
Pour les cas où les services ont des noms de méthodes, vous pouvez les fusionner en une seule structure pour plus de commodité.
type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} }
En utilisant cette approche, vous pouvez éliminer les établissements de connexion redondants, ce qui se traduit par une implémentation côté client plus efficace et optimisée pour vos applications gRPC.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3