Maison > développement back-end > Golang > le corps du texte

Comment puis-je accéder à plusieurs services gRPC à l'aide d'une seule connexion ?

Susan Sarandon
Libérer: 2024-11-02 09:42:31
original
309 Les gens l'ont consulté

How can I access multiple gRPC services using a single connection?

Accès à plusieurs services gRPC via une seule connexion

Introduction :

gRPC permet aux clients de communiquer avec plusieurs services exposés sur un seul serveur. Cependant, on suppose souvent que chaque service nécessite une connexion client dédiée. Cet article explique comment utiliser une seule connexion pour accéder à plusieurs services gRPC.

Composition d'un seul socket :

Malgré les interfaces de service distinctes, il n'est pas nécessaire d'établir un socket individuel. connexions pour chaque service. Au lieu de cela, vous pouvez créer un seul grpc.ClientConn. Cette connexion peut ensuite être transmise à tous les clients de service instanciés à l'aide des fonctions New*Client(). En partageant une connexion, ces clients exploitent les mêmes mécanismes de transport et de multiplexage sous-jacents.

<code class="go">cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure())
if err != nil {
    log.Fatal(err)
}</code>
Copier après la connexion

Utilisation d'une interface :

Bien que la création de structures distinctes pour chaque service simplifie le client interactions, il favorise la duplication de code. Pour réduire cela, une interface, telle que ServiceClient, peut être définie et implémentée par tous les clients de service. Cela permet le partage de propriétés et de méthodes communes, réduisant ainsi l'encombrement du code.

<code class="go">type ServiceClient interface {
    // Common methods and properties
}

type SubscriberClient struct {
    pb.SubscriberServiceClient
}

type DropperClient struct {
    pb.DropperServiceClient
}</code>
Copier après la connexion

Élimination des dépendances des bibliothèques :

Bien que les bibliothèques comme cmux offrent des solutions de partage de connexions, il est possible d’y parvenir sans dépendances externes. Le grpc.ClientConn fournit un accès direct au transport sous-jacent, permettant la création de plusieurs clients de service.

<code class="go">func NewServiceClient(conn *grpc.ClientConn, service interface{}) interface{} {
    switch service {
    case pb.SubscriberServiceServer:
        return pb.NewSubscriberServiceClient(conn)
    case pb.DropperServiceServer:
        return pb.NewDropperServiceClient(conn)
    }
    panic("Unknown service")
}</code>
Copier après la connexion

Principaux points à retenir :

  • Utiliser un seul grpc.ClientConn pour plusieurs services optimise les performances et simplifie le codage.
  • Une interface peut rationaliser les interactions client, réduisant ainsi la duplication de code.
  • L'élimination des dépendances de bibliothèques externes permet des solutions personnalisées et flexibles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!