Quels sont les principaux avantages et inconvénients de Apache Thrift vs Les tampons de protocole de Google ?
Réponses
Trop de publicités?Je pense que la structure de base des données est différente
- 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.
- 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".
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).
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.
- Réponses précédentes
- Plus de réponses
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.