Maison développement back-end Golang Comment utiliser GRPC dans Go ?

Comment utiliser GRPC dans Go ?

May 10, 2023 pm 02:03 PM
go 使用 grpc

Avec le développement continu des applications modernes, la demande de hautes performances et d'évolutivité est également de plus en plus élevée. Il existe donc une architecture distribuée basée sur le protocole RPC pour répondre à ces besoins. GRPC est un framework open source basé sur le StuB interne de Google. GRPC fournit un mécanisme hautement évolutif de communication entre langages de programmation, conçu pour gérer efficacement la communication standardisée entre les applications.

Cet article expliquera comment utiliser GRPC dans Go. Nous aborderons le concept de GRPC, les étapes pour communiquer à l'aide de GRPC et un exemple de mise en œuvre d'un service GRPC simple dans Go.

Le concept de GRPC

GRPC est un framework RPC basé sur HTTP/2, utilisant protobuf comme méthode de sérialisation des données par défaut. Cela signifie qu'il peut facilement permettre la communication entre différents langages (en tirant parti du code généré et du middleware fourni par grpc).

Extensibilité : GRPC peut implémenter une logique d'authentification et d'autorisation simple et complexe au niveau du flux de code et de la couche de connexion, et peut collaborer avec des plates-formes informatiques modernes telles que Kubernetes.

Communiquer à l'aide de GRPC

Dans cette section, nous présenterons les étapes détaillées pour communiquer à l'aide de GRPC. Dans cet article, nous allons implémenter un service GRPC simple utilisant le langage Go.

Étape 1 : Définir le fichier protobuf

Tout d'abord, nous devons définir notre fichier protobuf pour déclarer notre interface. Dans cet exemple, nous définissons un service simple qui ajoute deux nombres. Ci-dessous le contenu de notre fichier .proto :

syntax = "proto3";

option go_package = ".;main";

package calculator;

message AddRequest {
    int32 x = 1;
    int32 y = 2;
}

message AddResponse {
    int32 result = 1;
}

service Calculator {
    rpc Add(AddRequest) returns (AddResponse);
}
Copier après la connexion

Dans ce fichier protobuf, nous définissons deux messages, AddRequest et AddResponse, et une interface de service Calculatrice, qui fournit une méthode Add qui reçoit deux nombres en paramètres et renvoie leur somme.

Étape 2 : Générer le code GO

Ensuite, nous devons utiliser l'outil protoc pour générer le code GO. Nous pouvons générer du code de la manière suivante :

protoc --go_out=plugins=grpc:. *.proto
Copier après la connexion
Copier après la connexion

Cette commande générera un fichier calculator.pb.go, qui contient le code GO pour les services et les messages que nous avons définis.

Étape 3 : Implémenter le côté serveur

Côté serveur, nous devons implémenter un service pour l'interface que nous avons définie. Dans notre cas, notre service est simplement un simple service d'addition qui additionne deux nombres et renvoie leur somme. Ci-dessous notre code serveur :

package main

import (
    "context"
    "net"
    "google.golang.org/grpc"
    pb "github.com/calculator"
)

type server struct{}

func (s *server) Add(ctx context.Context, req *pb.AddRequest) (*pb.AddResponse, error) {
    result := req.X + req.Y
    return &pb.AddResponse{Result:result}, nil
}

func main() {
    l, err := net.Listen("tcp", ":8080")
    if err != nil {
        panic(err)
    }
    s := grpc.NewServer()

    pb.RegisterCalculatorServer(s, &server{})

    err = s.Serve(l)
    if err != nil {
        panic(err)
    }
}
Copier après la connexion

Nous définissons d'abord une structure appelée "serveur" et y ajoutons une méthode Add. Cette méthode recevra deux nombres x et y, calculera leur somme et renverra un AddResponse comme objet de réponse.

Nous définissons également une fonction principale dans laquelle nous créons un nouveau service grpc et le lions à l'adresse locale du port 8080. Nous injectons également le service que nous avons défini dans le serveur grpc et démarrons le serveur grpc.

Étape 4 : Implémenter le client

Enfin, nous devons écrire un code client qui peut envoyer des requêtes à notre serveur et recevoir des réponses. Veuillez noter que les fichiers .proto du code côté client et côté serveur doivent correspondre. Ci-dessous notre code client :

package main

import (
    "context"
    "fmt"
    "google.golang.org/grpc"
    pb "github.com/calculator"
)

func main() {
    conn, err := grpc.Dial(":8080", grpc.WithInsecure())
    if err != nil {
        panic(err)
    }

    client := pb.NewCalculatorClient(conn)

    req := pb.AddRequest{X:2, Y:3}
    resp, err := client.Add(context.Background(), &req)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Result: %d", resp.Result)
}
Copier après la connexion

Dans ce code client, nous créons d'abord une connexion au serveur GRPC puis utilisons cette connexion pour créer un nouveau client. Ensuite, nous créons un AddRequest, définissons ses valeurs sur 2 et 3 et envoyons la requête au serveur. Enfin, nous recevons et imprimons la réponse du serveur.

Comment exécuter l'exemple de code

Pour exécuter notre exemple de code, nous devons d'abord configurer l'environnement de développement Go et installer les dépendances associées. Supposons que notre package de code s'appelle main. Pour exécuter notre exemple de code localement, vous devez d'abord exécuter la commande suivante :

go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
Copier après la connexion

Exécutez ensuite la commande protoc pour générer du code go :

protoc --go_out=plugins=grpc:. *.proto
Copier après la connexion
Copier après la connexion

Puis compilez notre code de service et notre code client et démarrez-les séparément :

go build server.go
go build client.go
./server
./client
Copier après la connexion

Si tout est normalement , le client enverra une demande d'ajout au serveur GRPC et affichera le résultat sous la forme 5.

Conclusion

Cet article présente comment utiliser GRPC en langage Go. Nous avons d'abord discuté du concept de GRPC, puis démontré comment utiliser protobuf pour définir les spécifications d'interface, comment générer du code GO et comment implémenter un service GRPC simple. En suivant ces étapes, vous pouvez commencer à utiliser GRPC dans Go pour implémenter des systèmes distribués hautes performances et évolutifs.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Apr 26, 2024 am 09:40 AM

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Jun 03, 2024 pm 04:54 PM

Comment implémenter le téléchargement de fichiers à l'aide de gRPC ? Créez des définitions de service de support, y compris des messages de demande et de réponse. Sur le client, le fichier à télécharger est ouvert et divisé en morceaux, puis diffusé sur le serveur via un flux gRPC. Côté serveur, des fragments de fichiers sont reçus et stockés dans un fichier. Le serveur envoie une réponse une fois le téléchargement du fichier terminé pour indiquer si le téléchargement a réussi.

Comment envoyer des messages Go WebSocket ? Comment envoyer des messages Go WebSocket ? Jun 03, 2024 pm 04:53 PM

Dans Go, les messages WebSocket peuvent être envoyés à l'aide du package gorilla/websocket. Étapes spécifiques : Établissez une connexion WebSocket. Envoyer un message texte : appelez WriteMessage(websocket.TextMessage,[]byte("message")). Envoyez un message binaire : appelez WriteMessage(websocket.BinaryMessage,[]byte{1,2,3}).

Comment faire correspondre les horodatages à l'aide d'expressions régulières dans Go ? Comment faire correspondre les horodatages à l'aide d'expressions régulières dans Go ? Jun 02, 2024 am 09:00 AM

Dans Go, vous pouvez utiliser des expressions régulières pour faire correspondre les horodatages : compilez une chaîne d'expression régulière, telle que celle utilisée pour faire correspondre les horodatages ISO8601 : ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Utilisez la fonction regexp.MatchString pour vérifier si une chaîne correspond à une expression régulière.

La différence entre la langue Golang et Go La différence entre la langue Golang et Go May 31, 2024 pm 08:10 PM

Go et le langage Go sont des entités différentes avec des caractéristiques différentes. Go (également connu sous le nom de Golang) est connu pour sa concurrence, sa vitesse de compilation rapide, sa gestion de la mémoire et ses avantages multiplateformes. Les inconvénients du langage Go incluent un écosystème moins riche que les autres langages, une syntaxe plus stricte et un manque de typage dynamique.

Comment éviter les fuites de mémoire dans l'optimisation des performances techniques de Golang ? Comment éviter les fuites de mémoire dans l'optimisation des performances techniques de Golang ? Jun 04, 2024 pm 12:27 PM

Les fuites de mémoire peuvent entraîner une augmentation continue de la mémoire du programme Go en : fermant les ressources qui ne sont plus utilisées, telles que les fichiers, les connexions réseau et les connexions à la base de données. Utilisez des références faibles pour éviter les fuites de mémoire et ciblez les objets pour le garbage collection lorsqu'ils ne sont plus fortement référencés. En utilisant go coroutine, la mémoire de la pile de coroutines sera automatiquement libérée à la sortie pour éviter les fuites de mémoire.

Qu'est-ce que Bitget Launchpool ? Comment utiliser Bitget Launchpool ? Qu'est-ce que Bitget Launchpool ? Comment utiliser Bitget Launchpool ? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool est une plateforme dynamique conçue pour tous les passionnés de cryptomonnaie. BitgetLaunchpool se démarque par son produit unique. Ici, vous pouvez miser vos jetons pour débloquer plus de récompenses, notamment des parachutages, des rendements élevés et une généreuse cagnotte exclusive aux premiers participants. Qu’est-ce que BitgetLaunchpool ? BitgetLaunchpool est une plate-forme de crypto-monnaie où les jetons peuvent être mis en jeu et gagnés selon des termes et conditions conviviaux. En investissant du BGB ou d'autres jetons dans Launchpool, les utilisateurs ont la possibilité de recevoir des airdrops gratuits, des gains et de participer à de généreux pools de bonus. Les revenus des actifs gagés sont calculés en T+1 heures, et les récompenses sont basées sur

Un guide pour les tests unitaires des fonctions simultanées Go Un guide pour les tests unitaires des fonctions simultanées Go May 03, 2024 am 10:54 AM

Les tests unitaires des fonctions simultanées sont essentiels car cela permet de garantir leur comportement correct dans un environnement simultané. Des principes fondamentaux tels que l'exclusion mutuelle, la synchronisation et l'isolement doivent être pris en compte lors du test de fonctions concurrentes. Les fonctions simultanées peuvent être testées unitairement en simulant, en testant les conditions de concurrence et en vérifiant les résultats.

See all articles