Redis Pub / Sub vs Rabbit MQ - PullRequest
0 голосов
/ 01 октября 2018

Моя команда хочет перейти на архитектуру микросервисов.В настоящее время мы используем Redis Pub / Sub в качестве брокера сообщений для некоторых устаревших частей нашей системы.Мои коллеги считают, что естественно продолжать использовать Redis в качестве сервисной шины, поскольку они не хотят тратить свое время на изучение нового продукта.Но, на мой взгляд, RabbitMQ (особенно с MassTransit) - лучший подход для микросервисов.Не могли бы вы сравнить Redis Pub / Sub с Rabbit MQ и дать мне несколько аргументов для Rabbit?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Redis - это быстрое хранилище значений ключей в памяти с дополнительным постоянством.Функция pub / sub в Redis - крайний случай для Redis как продукта.

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

Работа с Redis pub / sub на низком уровне клиента Redis может быть очень болезненной.Вы можете использовать такую ​​библиотеку, как ServiceStack, которая имеет абстракцию более высокого уровня, чтобы сделать ее более управляемой.

Однако MassTransit добавляет большую ценность по сравнению с необработанным обменом сообщениями через RMQ.Как только вы начнете делать что-то по-настоящему, независимо от того, какой транспорт вы решите использовать, вы столкнетесь с типичными проблемами, связанными с обменом сообщениями, такими как обработка ответов, планирование, длительные процессы, повторная доставка, очереди недоставленных сообщений иядовитые очереди.MassTransit делает все это за вас.Ни Redis, ни клиент RMQ не доставят ни одного из них.Если ваша команда хочет потратить время на решение этих проблем в своем собственном коде - это больше похоже на изобретение колеса.Использование аргумента «не желать изучать новый продукт» в этом контексте звучит немного странно, так как вместо предоставления ценности для продукта разработчики хотят тратить свое время на решение проблем инфраструктуры.

0 голосов
/ 01 октября 2018

RabbitMQ намного более стабилен и надежен, чем Redis для передачи сообщений.

RabbitMQ может хранить и хранить сообщение, если для него нет получателя (например, произошел сбой слушателя и т. Д.).

RabbitMQ имеет различные способы связи:Pub / Sub, Queue.То, что вы можете использовать для балансировки нагрузки и т. Д.

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

...