Почему Thrift, почему бы не HTTP RPC (JSON + gzip)

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

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

Ответ 1

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

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

  • Thrift более компактен, чем HTTP, и его можно легко расширить, чтобы поддерживать такие функции, как шифрование, сжатие, неблокирование ввода-вывода и т.д.

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

  • Thrift поддерживает постоянные соединения и избегает непрерывных рукопожатий TCP и HTTP, которые несет HTTP.

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

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

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

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

Ответ 2

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

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

IMO, самые сильные преимущества - удобные интероперабельные RPC-вызовы и удобная обработка двоичных данных.