Maîtrisez parfaitement l'élégante méthode de débogage de l'interface gRPC

Actuellement, il existe très peu d'outils de débogage et de gestion d'interface compatibles avec  les interfaces gRPC  sur le marché, et gRPC a été largement utilisé dans les architectures de microservices, et il est prévisible qu'il deviendra de plus en plus populaire.

En tant qu'outil de gestion d'interface leader sur le marché, Apifox a lancé la fonctionnalité de débogage d'interface gRPC , qui est entièrement compatible avec les quatre types d'appel suivants :

  • Unaire : appel unaire
  • Streaming de serveur : flux de serveur
  • Client Streming : flux client
  • Streaming bidirectionnel : flux bidirectionnel

Peut-être que vous n'êtes pas familier avec l'interface gRPC, alors autant avoir une brève compréhension d'abord !

Qu'est-ce que gRPC ?

gRPC est un framework d'appels de procédure distante RPC  (appels de procédure distante)  open source moderne et hautes performances  développé par Google Il a une bonne compatibilité et peut s'exécuter dans plusieurs environnements de développement.

Scénarios d'application de gRPC

Par rapport à l'interface API HTTP actuelle, l'interface gRPC adopte la principale conception d'architecture sous-jacente HTTP/2 en tant que protocole de transmission sous-jacent , qui peut être utilisé dans des scénarios de transmission de données à grande échelle (tels que le streaming vidéo) et des scénarios d'architecture de microservice où un grand nombre de services s'appellent Ensuite, montrez vos compétences.

L'échange de données adopte le protocole de sérialisation léger Protobuf , qui lui permet de fournir une vitesse de traitement des données plus rapide dans les scénarios à ressources limitées (que l'on trouve couramment dans les appareils mobiles tels que les téléphones mobiles), tout en réduisant la quantité de données transmises par le réseau et en économisant la bande passante du réseau, Réduisez ainsi la consommation d'énergie et améliorez la durée de vie de la batterie.

Avant d'introduire officiellement gRPC, autant comprendre ce qu'est RPC et ce qu'il fait, ce qui est très utile pour une compréhension ultérieure.

Que sont les RPC ?

Le protocole RPC  est une implémentation des appels de procédure à distance . Supposons qu'il y ait maintenant deux serveurs A et B. Un service déployé sur le serveur A souhaite appeler un autre processus s'exécutant sur le serveur B. Cependant, étant donné que les deux services ne se trouvent pas dans le même espace mémoire, ils ne peuvent pas être appelés directement, de sorte que l'effet d'appel doit être obtenu via la communication réseau.

Établir une communication réseau n'est rien de plus que d'initier une connexion TCP au niveau de la couche de transport. Le mécanisme de prise de contact de TCP garantit que les paquets de données peuvent être transmis de manière fiable à l'autre partie, et il présente les trois caractéristiques suivantes : orienté connexion, fiable et basé sur les octets . Les deux fonctionnalités précédentes conviennent à ce scénario, mais le seul point basé sur des flux d'octets peut être discutable. Pourquoi?

Parce qu'il n'a pas de frontières . Le flux d'octets correspond essentiellement aux données circulant dans le canal bidirectionnel de la couche de transport, c'est-à-dire les données binaires 0 1 que l'ordinateur peut comprendre. Ainsi, lorsque l'expéditeur utilise TCP pour envoyer les caractères "Nanjing City" + "Yangtze River Bridge", le destinataire peut recevoir "Nanjing Mayor" + "Jiangjiang Bridge" ou "Nanjing Yangtze River Bridge".

Le processus de connexion TCP trop simplifié ne peut pas garantir l'unicité et la certitude des informations, il est donc nécessaire de définir l' en-tête et le corps du message dans les données , et l'expéditeur et le destinataire s'accordent sur cette méthode de communication, dérivant ainsi le protocole HTTP et les appels RPC et d'autres systèmes définissent essentiellement des méthodes normalisées de transfert de données et d'appel pour éviter la distorsion des informations .

Par exemple, il existe maintenant un site Web d'achat avec  deux microservices , un service de commande et un service utilisateur (comme la gestion de compte) . Le service de commande doit interroger certaines données sous le service utilisateur, mais les deux sont isolés. À ce stade, le service de commande doit obtenir des données par le biais d'appels à distance.

Dans l'exemple de la figure ci-dessous, le serveur (service utilisateur)  n'a besoin d'exposer qu'une fonction getConsumerByld() qui peut appeler la base de données, et le client (service de commande)  peut utiliser RPC pour appeler directement la fonction getConsumerByld() et obtenir tous la réponse souhaitée. RPC cache avec succès la complexité de la communication interne et fournit une interface stable et unifiée pour les deux parties, de sorte que les développeurs n'ont qu'à prêter attention à la logique métier et non aux détails de la communication réseau sous-jacente.

Et gRPC est essentiellement un framework RPC publié et open source par Google .

Quels sont les avantages de gRPC ?

Protocole de transport avancé

HTTP/2 a été publié un peu plus tôt que gRPC en 2015, donc gRPC utilise naturellement ce protocole de transport avancé comme base sous-jacente, de sorte qu'il a des performances de transport plus efficaces et peut également prendre en charge les appels en continu pour de nombreuses données en temps réel Il fournit un support pour les scénarios de transmission (tels que les données boursières, la communication vocale, les scénarios de jeu), et est naturellement en avance sur de nombreux anciens cadres RPC publiés au tournant du millénaire. Un pool de connexions est établi lorsqu'une connexion est initiée, ce qui peut améliorer considérablement les performances des requêtes réseau face à plusieurs connexions.

Concept de conception scientifique

Dans le même temps, gRPC utilise le plus petit protocole de sérialisation Protobuf pour enregistrer les données de structure. Protocol Buffers est un protocole de sérialisation de structure de données multi-langage et multi-plateforme. Il est plus léger que les protocoles JSON ou XML et donc plus efficace dans le transfert des données .

Dans le même temps, cela détermine également que l'interface gRPC doit suivre le concept API First, car l'interface de service doit être définie dans le fichier avant le début du travail de développement, y compris la façon dont le client utilise le service et les paramètres qui doivent être passé lors de l'appel. L'interface gRPC peut générer automatiquement la méthode de communication entre le client et le serveur en fonction du fichier .proto défini, ce qui simplifie grandement le processus de développement .

bonne compatibilité

gRPC ne dépend d'aucune technologie ou pile de langage spécifique, il peut donc être largement utilisé dans différents environnements de développement. Il prend en charge plusieurs langages de programmation, notamment Java, C++, Python, Go et d'autres langages de programmation modernes et populaires. Il peut facilement communiquer entre différentes langues, ce qui offre une prise en charge solide de l'architecture de microservice multilingue.

Bien que gRPC présente de nombreux avantages, la plupart des utilisateurs externes sont plus familiers avec l'interface HTTP (cela conduit également à la prospérité écologique de gRPC n'est pas aussi bonne que le protocole REST/HTTP), donc le principal scénario d'application de gRPC est la communication entre les microservices au sein de l'équipe et les connexions ne sont pas adaptées pour exposer des services destinés à une consommation externe . Et si vous souhaitez appeler gRPC avec succès, cela peut également impliquer le processus de passage de paramètres du système interne. Un autre inconvénient relativement important est que les navigateurs ne prennent pas en charge les appels de service gRPC et doivent utiliser des extensions ou des outils d'appel d'interface professionnels (tels que Apifox) pour effectuer la collaboration d'interface.

Fonction de débogage de l'interface Apifox gRPC

Apifox  a lancé la fonction de débogage de l'interface gRPC. Nous allons brièvement montrer comment créer un nouveau projet gRPC dans Apifox et lancer le débogage de l'interface via un exemple de scénario.

Remarque : la fonction de gestion de l'interface gRPC nécessite que le numéro de version d'Apifox soit supérieur ou égal à 2.3.0  .

Cliquez sur le bouton "Nouveau projet" dans Apifox, sélectionnez le type gRPC, remplissez le nom du projet et appuyez sur le bouton "Nouveau".

Importez un fichier .proto qui définit les services, les méthodes et les messages utilisés par l'interface gRPC. Vous pouvez y faire glisser et déposer des fichiers ou utiliser l'URL en ligne du fichier pour terminer l'importation.

Apifox générera les informations d'interface correspondantes en fonction du contenu du fichier .proto. L'exemple d'interface est livré avec quatre méthodes d'appel : appel unaire, flux serveur, flux client et flux bidirectionnel.

passer un appel unaire

Un appel unaire fait référence à l'envoi d'un message dans une requête et à la réception d'un message en réponse. Par rapport à JSON, gRPC utilise Protocol Buffers (ProtoBuf) comme cadre de sérialisation par défaut, qui peut exprimer les données de manière plus compacte et améliorer la vitesse de transmission. Et gRPC utilise HTTP/2 comme protocole de transport sous-jacent et applique directement l'algorithme de compression HPACK pour traiter les informations dans l'en-tête, réduisant la taille de l'en-tête pendant la transmission réseau, économisant ainsi les ressources de bande passante. Ceci est très convivial pour les scénarios qui transmettent de petites données ou nécessitent une réponse en temps réel.
Sélectionnez la méthode SayHello et remplissez grpcb.in:9000 dans l'adresse de l'interface. Cliquez ensuite sur le bouton "Générer automatiquement" pour générer le corps de la requête, puis appuyez sur "Appeler" pour afficher la réponse renvoyée.

Dans Apifox, vous pouvez facilement extraire l'adresse de l'interface vers "l'environnement", afin que d'autres membres de l'équipe ou d'autres interfaces du projet puissent initier des demandes d'appel.

Lancer un appel en streaming

Les flux côté serveur, les flux côté client et les flux bidirectionnels sont tous appelés appels en continu. Il permet d'établir une connexion de streaming duplex persistante entre le client et le serveur, et les données sont lues et écrites via le streaming. La principale caractéristique des appels en continu est qu'ils peuvent envoyer et recevoir plusieurs messages sur une seule connexion, prendre en charge l'interaction continue et la transmission de données à grande échelle, et sont souvent utilisés dans les échanges de données boursières, les communications vidéo et vocales et les scénarios de jeux en ligne.

flux de serveur

Tout comme ce qu'il signifie dans l'icône, le flux du serveur signifie : envoyer une fois et renvoyer plusieurs données de réponse. Par exemple, abonnez-vous aux données de prix de transaction de toutes les actions en une minute.

flux de clients

Dans ce mode, le client peut envoyer en continu plusieurs messages de demande au serveur sans attendre une réponse immédiate du serveur. Après avoir lancé l'appel, vous pouvez continuer à remplir les informations de la demande dans le message, puis cliquer sur le bouton "Envoyer". Une fois que le serveur a traité toutes les requêtes, il envoie un message de réponse unique au client.

flux bidirectionnel

Les flux bidirectionnels permettent une communication bidirectionnelle persistante entre un client et un serveur, et plusieurs messages peuvent être transmis simultanément. Couramment utilisé dans les jeux en ligne et les logiciels d'appel vidéo en temps réel, il convient aux scénarios de communication en temps réel et de transmission de données à grande échelle. Après avoir lancé l'appel, le client et le serveur continueront à maintenir une session et obtiendront une réponse en temps réel après avoir envoyé un contenu de requête différent.

collaboration avec l'interface gRPC

Apifox peut rendre des documents d'interface gRPC plus adaptés à la lecture humaine basés sur des fichiers .proto, ce qui facilite la collaboration des interfaces en équipe. Vous pouvez cliquer sur le bouton de menu sur le côté droit de l'interface pour obtenir le lien de collaboration et le partager avec d'autres membres de l'équipe pour aligner la méthode de débogage de l'interface.

La fonction de débogage de l'interface gRPC d'Apifox est en phase de test public bêta La fonction actuelle n'est que la première étape que nous avons franchie et elle continuera à être mise à jour de manière itérative à l'avenir. En tant que plate-forme de collaboration intégrée à l'API, Apifox  espère offrir la même excellente expérience pour différentes technologies d'API.

Je suppose que tu aimes

Origine blog.csdn.net/m0_71808387/article/details/131592989
conseillé
Classement