18

redis поддерживает pub-sub
zmq также поддерживает pub-sub via a message brokerzmq против Redis для паба юг рисунка

Что бы архитектурные плюсы \ минусов для выбора между ними?
Я нахожусь в точках, которые выходят за рамки конкретной производительности бенчмаркинга для конкретных случаев использования (здесь a nice example).

Предположим использовать язык высокого уровня, такой как Python.

+2

Эй, было бы здорово, если бы все ответы StackOverflow были сделаны по индивидуальному заказу и в глубину, как на примере с хорошим примером, на который вы ссылались :) Но так, как это делает ваш вопрос слишком открытым, закончился. Возможно, вам стоит попытаться выявить некоторые специфические различия или компромиссы, которые вы испытываете, а затем повторно отправить на более сложные хирургические вопросы. – Nicholas

+0

Но спасибо за ссылку в блоге .... это выглядит как отличная статья. – Nicholas

+0

Это для 'n-to-n' pub/sub? – raffian

ответ

10

ZeroMQ Плюсы/минусы

  • Pub/Sub сверстники могут подключать и отключать независимо друг от друга; сообщения сохраняются в буферах на основе настроек HWM, автоматически отправляются по доступности одноранговой сети (сохранение и переадресация)
  • Если неудачник не удался, буферизованные сообщения будут потеряны
  • Поддержка подписки на темы поддерживает префиксное сопоставление только с оберткой в ​​пабе; NEWS подписки соответствует NEWS* сообщений

Redis Плюсы/минусы

  • AOF мгновенных снимков на диск сохраняется сообщений в Redis событий терпит неудачу
  • Паб/суб клиенты зависят от Redis для подключения
  • Wildcard сопоставление для подписки на выборочную тему, например news.*
2

Вот как я решил. Делайте минимальные тестовые примеры с использованием каждого продукта. Посмотрите, что легче построить и работает лучше. Нажмите несколько тестовых примеров немного дальше, а затем отбросьте одну строку как слишком большую работу.

+8

Я действительно сделал, но я скорее проконсультируюсь с толпой о вещах, которые я могу узнать только по дороге ... начальные препятствия могут ввести в заблуждение – Jonathan

13

Я работал с ZeroMQ и Redis с python. Я бы сказал, что ZeroMQ более надежный, он предлагает реальную простую балансировку нагрузки, а также больше, чем pub-sub, например, запрос ответа среди других. Но если вы только после pub-sub, redis намного проще.

В случае сбоя или прекращения работы сервера redis все клиенты перестанут работать с ZeroMQ, клиенты работают, даже если сервер отсутствует.

Обе услуги доступны с любым языком программирования, рубином, питоном, C, C++ и другими.

Короче говоря, redis намного проще и надежнее. ZeroMQ является чрезвычайно надежным, но более сложным.

Если бы я только делал паб, я бы выбрал redis, иначе я бы выбрал ZeroMQ. Если бы я искал огромные нагрузки трафика, я бы выбрал ZeroMQ

+1

Как происходит сбой сервера ZeroMQ? – Ash

+1

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

3

Я занимался этим самостоятельно, так как мне нужно было решить, использовать ли Redis pubsub или Zubq для обмена информацией для распределенных систем. Я думаю, что Redis и ZMQ отличаются с точки зрения настройки приложения.

  1. ZMQ pubsub врожденно соединяется напрямую i.e.нет среднего человека.
    Вы можете создать экземпляр среднего человека, например, экспедиторское устройство

  2. Для Redis pubsub, как абоненту, так и издателю необходимо подключиться к Redis.

Отсутствие среднего человека в ZMQ означает, что подписчик должен как-то знать, чтобы подключиться к издателю, чтобы получить сообщение. В моей системе, где приложение запускает издателей, которым необходимо отправлять информацию подписчикам, нет никакого способа сделать это без наличия устройства-пересылки, к которому подключаются подписчики до того, как начнется мое приложение.

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

Zmq (direct pubsub) 
avg: 0.000235867897669 
max: 0.0337719917297 
min: 0.000141143798828 

Zmq (w/ forwarder) 
Avg: 0.00237249334653 
max: 0.00536799430847 
min: 0.000249862670898 

Redis (8gb ram) 
avg: 0.000687216520309 
max: 0.0483138561249 
min: 0.000313997268677 

Redis (32gb ram) 
avg: 0.000272458394368 
max: 0.00277805328369 
min: 0.000216960906982 
  • если приложение находится на стороне абонента, где есть издатель демон, который вы хотите получить информацию от, то я бы пойти на ZMQ, потому что вы можете напрямую связаться с издателем.
  • Если ваше приложение находится на стороне издателя, то я бы пошел в Redis pubsub, потому что подписчики уже подключены к прослушиванию Redis.