web-dev-qa-db-fra.com

Pourquoi Thrift, pourquoi pas HTTP RPC (JSON + gzip)

L'objectif principal de Thrift est de permettre une communication efficace et fiable entre les langages de programmation. mais je pense que HTTP-RPC peut aussi faire ça, développeur web presque tout le monde sait comment travailler sur http et il est plus facile d'implémenter HTTP-RPC (json) que Thrift,

Peut-être que Thrift-RPC est plus rapide, alors qui peut me dire la différence de performance entre eux?

52
jebbthe

Quelques raisons autres que la vitesse:

  1. Thrift génère complètement le code client et serveur, y compris les structures de données que vous transmettez, de sorte que vous n'avez rien d'autre à faire que d'écrire les gestionnaires et d'invoquer le client. et tout, y compris les paramètres et les retours, est automatiquement validé et analysé. vous obtenez donc gratuitement des vérifications de la santé mentale de vos données.

  2. Thrift est plus compact que HTTP et peut facilement être étendu pour prendre en charge des éléments comme le chiffrement, la compression, les E/S non bloquantes, etc.

  3. Thrift peut être configuré pour utiliser HTTP et JSON assez facilement si vous le souhaitez (dites si votre client est quelque part sur Internet et doit passer des pare-feu)

  4. Thrift prend en charge les connexions persistantes et évite les TCP et les poignées de main HTTP que HTTP encourt.

Personnellement, j'utilise l'épargne pour le LAN local RPC et HTTP lorsque j'ai besoin de connexions de l'extérieur.

J'espère que tout cela a du sens pour vous. Vous pouvez lire une présentation que j'ai donnée sur l'épargne ici:

http://www.slideshare.net/dvirsky/introduction-to-thrift

Il a des liens vers quelques autres alternatives à l'épargne.

94
Not_a_Golfer

Voici une bonne ressource sur la comparaison des performances de différents sérialiseurs: https://github.com/eishay/jvm-serializers/wiki/

En parlant spécifiquement de Thrift vs JSON: les performances de Thrift sont comparables aux meilleures bibliothèques JSON (jackson, protostuff), et la taille sérialisée est quelque peu inférieure.

IMO, les avantages d'épargne les plus forts sont les invocations RPC interopérables pratiques et la gestion pratique des données binaires.

5
Wildfire