Redis Vs RabbitMQ як брокер даних / система обміну повідомленнями між Logstash та elasticsearch


90

Ми визначаємо архітектуру для збору інформації журналу вантажовідправниками Logstash, які встановлені на різних машинах, і централізуємо дані на одному сервері еластичного пошуку та використовуємо Kibana як графічний рівень. Нам потрібна надійна система обміну повідомленнями між вантажовідправниками Logstash та еластичним пошуком, щоб забезпечити доставку. Які фактори слід враховувати, вибираючи Redis замість RabbitMQ в якості посередника даних / системи обміну повідомленнями між вантажовідправниками Logstash та еластичним пошуком або навпаки?

Відповіді:


94

Оцінивши Redis та RabbitMQ, я вибрав RabbitMQ нашим брокером з наступних причин:

  1. RabbitMQ дозволяє використовувати вбудований рівень безпеки, використовуючи SSL-сертифікати для шифрування даних, які ви надсилаєте брокеру, і це означає, що ніхто не буде нюхати ваші дані та мати доступ до ваших важливих організаційних даних.
  2. RabbitMQ - це дуже стабільний продукт, який може обробляти великі обсяги подій за секунду та безліч з'єднань, не будучи горлом пляшки.
  3. У нашій організації ми вже використовували RabbitMQ і мали добрі внутрішні знання щодо його використання та вже підготовлену інтеграцію з шеф-кухарем.

Що стосується масштабування, RabbitMQ має вбудовану реалізацію кластера, яку ви можете використовувати на додаток до балансування навантаження для реалізації надлишкового середовища посередника.

Мій кластер RabbitMQ активний активний чи активний пасивний?

Тепер до слабшого місця використання RabbitMQ:

  1. більшість вантажовідправників Logstash не підтримують RabbitMQ, але, з іншого боку, найкращий з іменем Beaver має реалізацію, яка без проблем надсилатиме дані до RabbitMQ.
  2. Реалізація, яку Beaver використовує з RabbitMQ у її поточній версії, трохи повільна за продуктивністю (для моїх цілей) і не змогла обробити швидкість 3000 подій / сек з одного сервера, і час від часу служба аварійно завершувала роботу.
  3. Зараз я працюю над виправленням, яке вирішить проблему продуктивності RabbitMQ та зробить відправника Beaver більш стабільним. Перше рішення - додати більше процесів, які можуть працювати одночасно і надаватимуть вантажовідправнику більше потужності. Друге рішення - змінити Beaver на асинхронну передачу даних RabbitMQ, що теоретично має бути набагато швидшим. Я сподіваюся, що я закінчу впроваджувати обидва рішення до кінця цього тижня.

Ви можете слідкувати за проблемою тут: https://github.com/josegonzalez/python-beaver/issues/323

І перевірте запит на витяг тут: https://github.com/josegonzalez/python-beaver/pull/324

Якщо у вас є більше запитань, залиште коментар.


3
Чи є у Redis якісь сильніші сторони порівняно з RabbitMQ? Redis здається простішим у налаштуванні. І якщо вам не потрібна величезна пропускна здатність, а безпека обробляється іншими засобами, RabbitMQ може не знадобитися. Будь ласка, виправте мене, якщо я помиляюся.
Рікардо М.С.

Ви маєте рацію, але для того, щоб бути впевненими, вам потрібно буде порівняти ефективність між двома продуктами
Том Крегенбілд,

4
"RabbitMQ - це дуже стабільний продукт, який може обробляти великі обсяги подій за секунди та безліч з'єднань, не будучи при цьому горловиною пляшки". - Я майже впевнений, що правда - це і reddis. Отже, це НЕ перевага rabbitmq перед Reddit
Мартін Тома

"RabbitMQ дозволяє використовувати вбудований рівень безпеки за допомогою SSL" - чи не дозволяє reddis також шифрування транспортного рівня?
Мартін Тома

2
2019 рік все ще не має вбудованого TLS
jjxtra

54

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

RabbitMQ створений як посередник повідомлень. Він має безліч можливостей посередника повідомлень, природно.


1
Ваша заява про Redis не є більш точною з введенням потоку в Redis 5. RabbitMQ, безумовно, є кращим вибором для масштабних сценаріїв. Для сценарію малого та середнього масштабу (яким є більшість проектів у світі) Redis - це надійна, швидка та проста у налаштуванні альтернатива.
Реза

Дякуємо за прихильність, було б добре, якби хтось написав тут свій досвід про нові можливості Redis.
Ферхат

44

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

Нижче наведено список плюсів щодо використання RabbitMQ над Redis:

  • RabbitMQ використовує розширений протокол черги повідомлень (AMQP), який можна налаштувати на використання SSL, додаткового рівня безпеки.
  • RabbitMQ займає приблизно 75% часу, коли Redis приймає повідомлення.
  • RabbitMQ підтримує пріоритети для повідомлень, які можуть бути використані працівниками для споживання повідомлень з високим пріоритетом.
  • Немає шансів втратити повідомлення, якщо будь-який працівник аварійно завершує роботу після споживання повідомлення, що не стосується Redis.
  • RabbitMQ має гарну систему маршрутизації, щоб направляти повідомлення в різні черги.

Кілька мінусів для використання RabbitMQ:

  • RabbitMQ може бути трохи важким в обслуговуванні, важким для налагодження збоїв.
  • коливання імені вузла або вузла-ip можуть спричинити втрату даних, але якщо вони добре керовані, надійні повідомлення можуть вирішити проблему.

3
У Redis є такі, Sorted Setsщо дозволяють пріоритетні взаємодії, подібні до черги. Redis також можна кластеризувати / шардувати для надсилання різних повідомлень у різні черги на різних серверах. Не впевнений щодо SSL безпосередньо для Redis, але я розглядаю AWS Elasticache та їх Redis 3.2.6, що дозволяє шифрувати в режимі відпочинку та під час транзиту. Примітка: зовсім не кажучи, що Redis краще для цього випадку; лише вказівка ​​на те, що не може бути причиною вибрати RabbitMQ замість Redis.
dwanderson

1
Також не забувайте, що Redis є однопоточним, тому якщо у вас багато видавців / споживачів, це може бути проблемою.
Кедаре

5

Мені цікаво те саме. Раніше рекомендації людей Logstash рекомендують Redis замість RabbitMQ ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ), однак цей розділ приміток більше не існує в поточній документації, хоча загальні примітки щодо використання брокера для боротьби зі стрибками тут https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .

Хоча я також із задоволенням використовую RabbitMQ, я зараз вивчаю брокера Redis, оскільки протокол AMQP, ймовірно, надмірний для мого випадку використання журналів.


2

Швидкі запитання:

  1. навіщо потрібен брокер? Якщо ви використовуєте logstash або logstash-forwarder для читання файлів із цих серверів, вони обоє уповільняться, якщо конвеєр перевантажиться.
  2. чи є у вас досвід керування кроликом або редісом? За інших рівних умов інструмент, яким ви вмієте користуватися, є кращим.

Що стосується думок, я працював на redis як брокер і ненавидів це. Звичайно, це могло бути моїм недосвідченим досвідом роботи з redis (не проблема з самим продуктом), але це було найслабше ланка в конвеєрі, і завжди виходило з ладу, коли нам це було найбільше потрібно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.