312 votes

Les plus grandes différences entre Thrift et Protocol Buffers ?

Quels sont les principaux avantages et inconvénients de Apache Thrift vs Les tampons de protocole de Google ?

4 votes

À titre d'information, Marc Gravell maintient une bibliothèque pour travailler avec le protobuf de Google, appelée protobuf.net, à l'adresse suivante code.google.com/p/protobuf-net

6 votes

Cette question et certaines des réponses suivantes datent d'environ 6 ans. Beaucoup de choses ont sans doute changé depuis.

5voto

hplbsh Points 1812

Et selon le wiki le runtime Thrift ne fonctionne pas sous Windows.

3voto

trilogy Points 422

D'abord, protobuf n'est pas une implémentation RPC complète. Il faut quelque chose comme gRPC pour l'accompagner.

Le gPRC est très lent par rapport au Thrift :

http://szelei.me/rpc-benchmark-part1/

3voto

dyy.alex Points 410

Je pense que la structure de base des données est différente

  1. Le tampon de protocole utilise un code numérique à longueur variable, qui transforme un nombre de longueur fixe en un nombre de longueur variable pour économiser de l'espace.
  2. Thrift propose différents types de formats de sérialisation (appelés "protocoles"). En fait, Thrift propose deux encodages JSON différents, et pas moins de trois méthodes d'encodage binaire différentes.

En conclusion, ces deux bibliothèques sont complètement différentes. Thrift est un guichet unique, qui vous offre l'ensemble du cadre RPC intégré et de nombreuses options (prise en charge du multilinguisme), tandis que Protocol Buffers est plus enclin à "faire une seule chose et à la faire bien".

1voto

Sinapse Points 571

Il y a d'excellents points ici et je vais en ajouter un autre au cas où le chemin de quelqu'un se croise ici.

Thrift vous donne la possibilité de choisir entre le (dé)sérialiseur thrift-binaire et thrift-compact, thrift-binaire aura une excellente performance mais une taille de paquet plus importante, tandis que thrift-compact vous donnera une bonne compression mais nécessitera plus de puissance de traitement. C'est pratique car vous pouvez toujours passer d'un mode à l'autre en changeant une ligne de code (voire même en le rendant configurable). Donc, si vous n'êtes pas sûr de savoir dans quelle mesure votre application doit être optimisée pour la taille des paquets ou pour la puissance de traitement, thrift peut être un choix intéressant.

PS : Voir cet excellent projet de référence par thekvs qui compare plusieurs sérialiseurs dont thrift-binary, thrift-compact, et protobuf : https://github.com/thekvs/cpp-serializers

PS : Il existe un autre sérialiseur nommé YAS qui offre également cette option, mais sans schéma (voir le lien ci-dessus).

0voto

JSON Points 564

Il est également important de noter que tous les langages supportés ne se comparent pas de manière cohérente avec thrift ou protobuf. À ce stade, il s'agit d'une question d'implémentation des modules en plus de la sérialisation sous-jacente. Prenez soin de vérifier les benchmarks pour le langage que vous envisagez d'utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X