In Szenarien, in denen sich mehrere gRPC-Dienste auf demselben Server befinden und eine gemeinsame Adresse überwachen, wie im bereitgestellten Beispiel, ist dies der Fall Es mag überflüssig erscheinen, separate Verbindungen zu jedem Dienst herzustellen. In diesem Artikel geht es darum, warum in der Regel unterschiedliche Verbindungen erforderlich sind, und es wird untersucht, wie eine einzelne Verbindung für den Zugriff auf mehrere gRPC-Dienste genutzt werden kann.
Um effektiv auf verschiedene gehostete gRPC-Dienste zuzugreifen Auf demselben Server können Sie eine einzelne gRPC-Clientverbindung nutzen. Bei diesem Ansatz wird ein grpc.ClientConn-Objekt initialisiert und an einzelne Service-Client-Fabriken übergeben, sodass diese dieselbe(n) zugrunde liegende(n) Verbindung(en) gemeinsam nutzen können.
func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) }
Der generierte gRPC-Code in der pb.go-Datei umfasst alle notwendigen Funktionen zum Ausführen von RPCs. Daher sind keine zusätzlichen clientseitigen Implementierungen erforderlich, es sei denn, bei jedem Aufruf muss automatisch eine bestimmte Logik ausgeführt werden.
Für Fälle, in denen Dienste unterschiedlich sind Wenn Sie Methodennamen verwenden, können Sie sie für mehr Komfort in einer einzigen Struktur zusammenführen.
type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} }
Durch die Verwendung dieses Ansatzes können Sie redundante Verbindungsaufbauten eliminieren, was zu einer effizienteren und optimierten clientseitigen Implementierung Ihrer gRPC-Anwendungen führt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3