API на основе JSON поверх ZeroMQ

Большинство современных API построены с использованием JSON с обменом сообщениями запрос/ответ через HTTP. Поскольку ZeroMQ работает поверх TCP, можно ли создать API на основе JSON поверх ZeroMQ? Если да, то в чем преимущества? Использование

  1. разработчики, пишущие приложения для клиентов/устройств, взаимодействующих с одним или несколькими веб-серверами, и

  2. веб-серверы, взаимодействующие с веб-серверами.


person Henry Thornton    schedule 11.01.2013    source источник


Ответы (1)


Да, API на основе json можно было бы построить поверх ZeroMQ вместо HTTP. Для этого потребуются сокеты REQ/REP. Однако это не кажется хорошим выбором.

Основным преимуществом подхода JSON+HTTP является переносимость. JSON+HTTP поддерживается «из коробки» практически любой средой программирования, ZeroMQ поддерживается не так широко (например, нет поддержки в браузерном JS). Кроме того, ZeroMQ не так безболезнен в настройке, поэтому потребители услуг, вероятно, не будут довольны этим выбором.

С другой стороны, основным преимуществом ZeroMQ является производительность: это здорово, если вам нужно передавать много мегабайт (или, возможно, гигабайт) данных в секунду. Кодирование/декодирование JSON действительно быстрое, но размер также имеет значение для такого рода задач. Любая инфраструктура бинарной сериализации кажется лучшим выбором, их много: protobuf, thrift, BSON, kryo, avro и т. д.

Так что я бы продолжал использовать JSON+HTTP для API веб-сервисов: современные инструменты HTTP-сервера обеспечивают отличную производительность и масштабируемость. А ZeroMQ — отличный выбор для связи в контролируемой среде благодаря своим функциям параллелизма и четко определенным шаблонам использования.

person Wildfire    schedule 11.01.2013
comment
Проблема переносимости была действительно тем ответом, который мне был нужен. Будет придерживаться нашего json+http API. Отличный ответ. Спасибо большое. - person Henry Thornton; 11.01.2013
comment
в некоторых случаях полезен гибридный подход — HTTP+JSON в качестве общедоступного API и использование точно такой же системы обмена сообщениями JSON через zeromq для распределения задач по рабочим узлам. - person minrk; 11.01.2013