Почему Thrift, почему не HTTP RPC (JSON + gzip) - PullRequest
52 голосов
/ 16 марта 2012

Основная цель Thrift - обеспечить эффективную и надежную связь между языками программирования.но я думаю, что HTTP-RPC тоже может это сделать, веб-разработчик почти все знает, как работать с http, и легче реализовать HTTP-RPC (json), чем Thrift,

Возможно, Thrift-RPC быстрее, чемкто может сказать мне разницу в производительности между ними?

Ответы [ 2 ]

94 голосов
/ 16 марта 2012

Несколько причин, помимо скорости:

  1. Thrift полностью генерирует код клиента и сервера, включая передаваемые вами структуры данных, поэтому вам не придется иметь дело с чем-либо другимчем писать обработчики и вызывать клиента.и все, включая параметры и возвраты, автоматически проверяются и анализируются.таким образом, вы получаете проверки ваших данных бесплатно.

  2. Thrift более компактен, чем HTTP, и может быть легко расширен для поддержки таких вещей, как шифрование, сжатие, неблокирующий ввод-вывод и т. д.

  3. Thrift может быть настроен на использование HTTP и JSON довольно легко, если вы этого хотите (скажем, если ваш клиент находится где-то в Интернете и ему необходимо пропустить межсетевые экраны)

  4. Thrift поддерживает постоянные соединения и позволяет избежать постоянных TCP и HTTP-рукопожатий, возникающих у HTTP.

Лично я использую Thrift для внутренней LAN RPC и HTTP, когда мне нужны соединения отснаружи.

Надеюсь, все это имеет смысл для вас.Вы можете прочитать презентацию, которую я дал о комиссионных, здесь:

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

Там есть ссылки на несколько других альтернативных комиссионных.

5 голосов
/ 16 марта 2012

Вот хороший ресурс по сравнению производительности различных сериализаторов: https://github.com/eishay/jvm-serializers/wiki/

Говоря конкретно о Thrift против JSON: производительность Thrift сопоставима с лучшими библиотеками JSON (jackson, protostuff), а размер сериализации несколькониже.

ИМО, сильнейшими преимуществами являются удобная возможность взаимодействия RPC и удобная обработка двоичных данных.

...