"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Puis-je accéder à plusieurs services gRPC via une seule connexion ?

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

Publié le 2024-11-10
Parcourir:161

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 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)
}

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.

Utiliser 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 se traduit par une implémentation côté client plus efficace et optimisée pour vos applications gRPC.

Dernier tutoriel Plus>

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