Quels sont les principaux avantages et inconvénients de Apache Thrift vs Les tampons de protocole de Google ?
Réponses
Trop de publicités?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.
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
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.
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.
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 .
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.