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.

9voto

Daniel Spiewak Points 30706

Protocol Buffers semble avoir une représentation plus compacte, mais ce n'est qu'une impression que je retire de la lecture du livre blanc de Thrift. Selon leurs propres termes :

Nous avons renoncé à certaines optimisations extrêmes du stockage (par ex. petits entiers en ASCII ou l'utilisation d'un format de continuation de 7 bits) pour des raisons de simplicité et de clarté du code. Ces modifications facilement si et quand nous rencontrons un cas d'utilisation critique en termes de performance qui les exige. de performance qui les exige.

De plus, c'est peut-être juste mon impression, mais Protocol Buffers semble avoir des abstractions plus épaisses autour du versionnement des structures. Thrift prend en charge le versioning, mais il faut un peu d'effort pour y parvenir.

8voto

dhruvbird Points 1553

J'ai pu obtenir de meilleures performances avec un protocole basé sur le texte par rapport à protobuff sur python. Cependant, il n'y a pas de vérification de type ou d'autre conversion utf8 fantaisiste, etc... que protobuff offre.

Donc, si la sérialisation/désérialisation est tout ce dont vous avez besoin, vous pouvez probablement utiliser autre chose.

http://dhruvbird.blogspot.com/2010/05/protocol-buffers-vs-http.html

7voto

StaxMan Points 34626

Une chose évidente qui n'a pas encore été mentionnée et qui peut être à la fois un avantage et un inconvénient (et qui est la même chose pour les deux) est que ce sont des protocoles binaires. Cela permet une représentation plus compacte et éventuellement plus de performances (avantages), mais réduit la lisibilité (ou plutôt la déboguabilité), ce qui est un inconvénient.

En outre, ces deux formats sont un peu moins bien supportés par les outils que les formats standard tels que xml (et peut-être même json).

(EDIT) Voici un Comparaison intéressante qui aborde les différences de taille et de performance, et inclut des chiffres pour certains autres formats (xml, json) également.

7voto

Babra Cunningham Points 1427

Je pense que la plupart de ces points n'ont pas tenu compte du fait que Thrift est un framework RPC, qui a la capacité de sérialiser des données en utilisant une variété de méthodes (binaire, XML, etc.).

Les tampons de protocole sont conçus uniquement pour la sérialisation, il ne s'agit pas d'un framework comme Thrift.

6voto

Quandary Points 12867

ProtocolBuffers est plus rapide.
Il y a une belle référence ici :
http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking

Vous pourriez également vous intéresser à Avro, qui est encore plus rapide.
Microsoft a un paquet ici :
http://www.nuget.org/packages/Microsoft.Hadoop.Avro

Au fait, le plus rapide que j'ai jamais vu est Cap'nProto ;
Une implémentation C# peut être trouvée à l'adresse Github-repository de Marc Gravell .

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