Подтвердить что ты не робот

Разница между Apache Thrift и ZeroMQ

Я понимаю, что Apache Thrift и ZeroMQ являются программными продуктами, принадлежащими к разным категориям, и сравнивать их нелегко, поскольку сравнение с яблоком и апельсином. Но я не знаю, почему они принадлежат к разным категориям. Разве оба они не используются для передачи данных между различными службами, которые могут быть написаны или не записаны на разных языках?

Когда следует использовать Thrift и когда я должен использовать очередь сообщений?

4b9b3361

Ответ 1

Они относятся к разным категориям, главным образом потому, что они нацелены на разные аудитории с различными проблемами. Поэтому они лучше разбираются в разных вещах.

Apache Thrift, аналогичный Буферы протокола Google быть высокоуровневым, достаточно хорошо абстрагированным средством для передачи данных между процессами на разных машинах, возможно, на разных языках. Они целенаправленно предоставляют IDL-слой для описания сообщения, возможно, с автоматическим или полуавтоматическим версированием и дополнительными разделами.

ZeroMQ, с другой стороны, а не очереди сообщений вообще (что было бы совершенно отдельным вопросом), все о скорости, Они эффективно перемещают байты на другой конец. Как можно меньше остановок по пути. Таким образом, вы отвечаете за сериализацию, управление версиями или что-то еще важное для вас разработчиком. Конечно, это может означать сложность, особенно если вы общаетесь между разными платформами и языками, но это часть штрафа за отсутствие абстракции.

Что выбрать? Зависит от вашего проекта. Если вам не нужна абсолютная сырая производительность, инструментарий более высокого уровня, скорее всего, будет служить вашей цели. Если вы создаете высокоскоростное приложение с низкой задержкой, вы все равно окажетесь ближе к металлу.

Удача

Ответ 2

Thrift определяет, как представлять сложные данные, чтобы их можно было записывать и читать на разных языках (следовательно, IDL определяет типы, которые будут транспортироваться). Он также определяет простые средства для транспортировки такого отформатированного сообщения между двумя конечными точками (aka trirft transport).

С другой стороны, ZeroMQ светит таким образом, что вы можете переносить сообщение между конечными точками, чтобы приобретать разные типы поведения, как один к одному, от одного до многих, от многих до многих и разные ожидания скорости и надежности таких передач. А что касается самого сообщения, то это просто blob для ZeroMQ, и приложения должны найти способ кодирования их декодирования.

Итак, если у вас сложные структуры данных, но простые шаблоны обмена сообщениями, вы можете опираться на сторону бережливости. Если у вас простые данные, но сложные шаблоны обмена сообщениями, вы можете опираться на ZeroMQ или что-то вроде этого (AMQP).

И если вам нужны оба варианта, вы можете использовать THrift и ZeroMQ в паре, бережливость для форматирования сообщения и ZeroMQ для его переноса.

Ответ 3

Даворин упомянул использование Thrift и ZeroMQ в паре, и в случае, если вы заинтересованы в том, чтобы получить доступ к кодовой базе Trrift и посмотреть под trift/contrib/zeromq для демонстрации Thrift с помощью ZermoMQ.