Maison > Article > développement back-end > Grpc ne prend-il en charge que le langage Go ?
grpc ne prend pas seulement en charge le langage go. grpc est un protocole de communication basé sur HTTP/2 et prend en charge le framework RPC multilingue ; fournit actuellement les versions des langages C, Java et Go, à savoir grpc, grpc-java, grpc-go ; la version C prend en charge C, C++, Node.js ; , Python, Ruby, Objective-C, PHP et C# pris en charge.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
gRPC est un protocole de communication basé sur HTTP/2, prend en charge le framework RPC multilingue et est conçu pour les mobiles et HTTP/2. gRPC est conçu sur la base de la norme HTTP/2 et apporte des fonctionnalités telles que le streaming bidirectionnel, le contrôle de flux, la compression d'en-tête et le multiplexage des requêtes sur une seule connexion TCP. Ces fonctionnalités améliorent ses performances sur les appareils mobiles et permettent d'économiser de l'énergie et de l'espace.
RPC : L'abréviation de Remote Procedure Call, traduit par appel de procédure distante (traduit également par appel de méthode distante ou appel distant), c'est un protocole de communication informatique. Ce protocole peut rendre l'appel de services distants aussi simple que l'appel de services locaux, sans avoir à se soucier des problèmes inter-réseaux, multi-plateformes, multi-langues et autres.
La méthode de sérialisation des messages gRPC utilise généralement Protobuf, qui est un format binaire, de petite taille, rapide en transmission réseau, consomme moins de bande passante et de trafic et offre des performances d'appel plus élevées.
Fonctionnalités de gRPC
IDL
gRPC utilise ProtoBuf pour définir des services ProtoBuf est un protocole de sérialisation de données développé par Google (similaire à XML, JSON). ProtoBuf peut sérialiser les données et est largement utilisé dans le stockage de données, les protocoles de communication, etc.
Prise en charge multilingue
gRPC prend en charge plusieurs langues et peut générer automatiquement des bibliothèques de fonctions client et serveur basées sur la langue. Actuellement, la version C grpc, la version Java grpc-java et la version Go grpc-go sont fournies. Parmi elles, grpc prend en charge C, C++, Node.js, Python, Ruby, Objective-C, PHP et C# et d'autres langages. grpc-java prend en charge le développement Android.
HTTP2
gRPC est conçu sur la base de la norme HTTP2 et apporte des fonctionnalités plus puissantes, telles que le streaming bidirectionnel, la compression d'en-tête, les requêtes de multiplexage, etc. Ces fonctionnalités apportent des avantages significatifs tels que des économies de bande passante, des temps de liaison TCP réduits, des économies d'utilisation du processeur et une durée de vie prolongée de la batterie. Dans le même temps, gRPC peut également améliorer les performances des services cloud et des applications Web. gRPC peut être appliqué à la fois côté client et côté serveur, permettant ainsi une communication client-serveur de manière transparente et simplifiant la construction de systèmes de communication.
Pourquoi utilisons-nous grpc
Bonne écologie : soutenue par Google. Par exemple, nginx prend également en charge grpc, lien de référence
Cross-lingual : multilingue et génère automatiquement un sdk
Hautes performances : par exemple, les performances de protobuf sont supérieures à celles de json, par exemple http2. 0 est supérieur à http1. 1
Saisie forte : le compilateur résout de nombreux problèmes pour vous
Traitement du streaming (basé sur http2.0) : prend en charge le streaming client, le streaming serveur et le streaming bidirectionnel
1) Qu'est-ce que protobuf ?
2) À quel point est-il plus rapide que json ?
3) Pourquoi protobuf est-il plus rapide que json ?
Le flux de données binaires et le flux de données json de protobuf sont comme indiqué ci-dessous
1) Multiplexage
Schéma schématique
: http peut être associé à http Le corps est gzip compressé, ce qui peut économiser de la bande passante. Cependant, il existe également de nombreux champs dans l'en-tête du message qui ne sont pas compressés, tels que les cookies et l'acceptation de l'agent utilisateur. Ceux-ci doivent être compressés
pour éviter la duplicationAprès avoir été encadrés de cette manière, ces cadres peuvent être envoyés dans le désordre, puis assemblés en fonction de l'identifiant de flux dans l'en-tête de chaque cadre
Comparez http/1.1Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !
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!