L’objectif est d’introduire un protocole de transport et de couche d’application qui est meilleur dans ses latences et débits réseau. Actuellement, l'application utilise [~ # ~] rest [~ # ~] avec HTTP/1.1 et nous faisons l'expérience d'une latence élevée. J'ai besoin de résoudre ce problème de latence et je suis ouvert à l'utilisation de gRPC (HTTP/2) ou REST/HTTP2.
HTTP/2:
Je suis conscient de tous les avantages ci-dessus. Question n ° 1: Si j'utilise REST avec HTTP/2, je suis sûr que j'obtiendrai une amélioration significative des performances par rapport à REST avec HTTP/1.1, mais comment cela se compare-t-il avec gRPC (HTTP/2)?
Je suis également conscient que gRPC utilise le proto buffer, qui est la meilleure technique sérialisation binaire pour la transmission de données structurées sur le fil. Proto buffer aide également à développer une approche agnostique des langues. Je suis d'accord avec cela et je peux implémenter la même fonctionnalité dans REST en utilisant graphQL. Mais ce qui me préoccupe, c'est la sérialisation: Question n ° 2: Quand HTTP/2 implémente cette fonctionnalité binaire, l'utilisation de proto buffer apporte-t-elle un avantage supplémentaire par rapport à HTTP/2?
Question n ° 3: En termes de cas d'utilisation bidirectionnels bidirectionnels, comment gRPC (HTTP/2) se compare-t-il à (REST et HTTP/2)?
Il y a tellement de blogs/vidéos sur Internet qui compare gRPC (HTTP/2) à (REST et HTTP/1.1) comme this . Comme indiqué précédemment, j'aimerais connaître les différences et les avantages de la comparaison entre GRPC (HTTP/2) et (REST avec HTTP/2).
gRPC n'est pas plus rapide que REST sur HTTP/2 par défaut, mais il vous donne les outils pour le rendre plus rapide. Certaines choses seraient difficiles voire impossibles à faire avec REST.
Comme nfirvine l’a dit, vous constaterez que l’amélioration de vos performances se limite à l’utilisation de Protobuf. Bien que vous puissiez utiliser proto avec REST, celui-ci est très bien intégré à gRPC. Techniquement, vous pouvez utiliser JSON avec gRPC, mais la plupart des gens ne veulent pas payer les coûts de performance après s'être habitués aux protos.
Je ne suis en aucun cas un expert en la matière et je n’ai aucune donnée à ce sujet.
La "fonctionnalité binaire" dont vous parlez est la représentation binaire des trames HTTP/2. Le contenu lui-même (une charge JSON) sera toujours UTF-8. Vous pouvez compresser ce JSON et définir Content-Encoding: gzip
, tout comme HTTP/1.
Mais gRPC utilise également la compression gzip. Nous discutons donc de la différence entre le format JSON compressé avec gzip et les protobufs compressés avec gzip.
Comme vous pouvez l'imaginer, les protobufs compressés doivent battre le JSON compressé de toutes les manières, sinon les protobufs ont échoué.
Outre l'omniprésence de JSON et de protobufs, le seul inconvénient de l'utilisation de protobufs est qu'il vous faut le. Proto pour les décoder, par exemple dans une situation de tcpdump.