Maison  >  Article  >  développement back-end  >  Puis-je accéder à plusieurs services gRPC via une seule connexion ?

Puis-je accéder à plusieurs services gRPC via une seule connexion ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 03:36:02785parcourir

Can I Access Multiple gRPC Services over a Single Connection?

Accès à plusieurs services gRPC via une seule connexion

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.

Éliminer le besoin de connexions multiples

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 consiste à initialiser un objet grpc.ClientConn et à le transmettre aux 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)
}

Réutilisation du code généré à partir de Protobuf

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.

Utilisation d'une interface pour plus de commodité (facultatif)

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 entraîne une implémentation côté client plus efficace et optimisée pour votre gRPC. candidatures.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn