2016-08-08 3 views
0

В настоящее время я работаю над распределенной системой тестирования и отчетности. Я планирую использовать Redis PUB/SUB в качестве очереди сообщений и системы распространения сообщений.Redis PUB/SUB и высокая доступность

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

Что для меня непонятно, так это то, как функция Pub/Sub и опции HA связаны друг с другом. Какова наилучшая практика создания надежной системы обмена сообщениями с Redis? Надежным я имею в виду, что если мой брокер сообщений Redis не работает, должен быть какой-то резервный узел (подчиненный?), Который должен иметь возможность взять на себя эту роль.

Есть ли чисто серверное решение? Или мне нужно создать смарт-оболочку вокруг клиента Redis, чтобы справиться с этим? Будет ли настройка, поддерживаемая Sentinel, помочь мне?

+0

Не использовали pubsub в распределенной настройке, но я думаю о redis как сервере данных в первую очередь. Pubsub - вишня сверху. Если у вас должна быть надежная очередь распределенных сообщений, существуют специализированные решения. Я слышал, что RabbitMQ довольно хорош. –

+0

Да, мы начали использовать Redis таким образом (как «общий словарь») - но пока наш проект формировался, оказалось, что коммуникация на основе сообщений может быть лучше подходит для наших нужд. Redis был там, и он поддерживает его, поэтому мы начали использовать его в качестве брокера сообщений. Ничего не вырезано на камень, хотя мы также проверим другие решения. – user2519450

ответ

3

Выполнение паба в Redis с откатом означает думать о дополнительных факторах на стороне клиента. Ключевым моментом, который нужно понять, является то, что подписки относятся к соединению. Если вы подписались на канал на узле, и он не работает, вам необходимо обработать повторное подключение и повторную подписку. Поскольку подписки выполняются на уровне соединения, это не то, что можно реплицировать.

Что касается подробностей относительно того, как это работает, и что вы можете ожидать, чтобы увидеть, наряду с путями вокруг него видит сообщение, я сделал ранее в этом году на https://objectrocket.com/blog/how-to/reliable-pubsub-and-blocking-commands-during-redis-failovers

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

+0

Спасибо, это сделало фотографию намного более ясной. Ваш blogpost не так легко читать для redis-новичка, но определенно говорит. – user2519450

1

IMO, PUB/SUB не является хорошим выбором, может быть disque (происходит от antirez, автор Redis) лучше подходит:

DISQUE, в оперативной памяти, распределенной очереди заданий

+0

Спасибо, я проверю. – user2519450

 Смежные вопросы

  • Нет связанных вопросов^_^