„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Kann ich über eine einzige Verbindung auf mehrere gRPC-Dienste zugreifen?

Kann ich über eine einzige Verbindung auf mehrere gRPC-Dienste zugreifen?

Veröffentlicht am 10.11.2024
Durchsuche:479

Can I Access Multiple gRPC Services over a Single Connection?

Zugriff auf mehrere gRPC-Dienste über eine einzelne Verbindung

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.

Beseitigung der Notwendigkeit mehrerer Verbindungen

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

Wiederverwendung von generiertem Code von Protobuf

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.

Komfortables Verwenden einer Schnittstelle (optional)

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.

Neuestes Tutorial Mehr>

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