Оцінивши Redis та RabbitMQ, я вибрав RabbitMQ нашим брокером з наступних причин:
- RabbitMQ дозволяє використовувати вбудований рівень безпеки, використовуючи SSL-сертифікати для шифрування даних, які ви надсилаєте брокеру, і це означає, що ніхто не буде нюхати ваші дані та мати доступ до ваших важливих організаційних даних.
- RabbitMQ - це дуже стабільний продукт, який може обробляти великі обсяги подій за секунду та безліч з'єднань, не будучи горлом пляшки.
- У нашій організації ми вже використовували RabbitMQ і мали добрі внутрішні знання щодо його використання та вже підготовлену інтеграцію з шеф-кухарем.
Що стосується масштабування, RabbitMQ має вбудовану реалізацію кластера, яку ви можете використовувати на додаток до балансування навантаження для реалізації надлишкового середовища посередника.
Мій кластер RabbitMQ активний активний чи активний пасивний?
Тепер до слабшого місця використання RabbitMQ:
- більшість вантажовідправників Logstash не підтримують RabbitMQ, але, з іншого боку, найкращий з іменем Beaver має реалізацію, яка без проблем надсилатиме дані до RabbitMQ.
- Реалізація, яку Beaver використовує з RabbitMQ у її поточній версії, трохи повільна за продуктивністю (для моїх цілей) і не змогла обробити швидкість 3000 подій / сек з одного сервера, і час від часу служба аварійно завершувала роботу.
- Зараз я працюю над виправленням, яке вирішить проблему продуктивності RabbitMQ та зробить відправника Beaver більш стабільним. Перше рішення - додати більше процесів, які можуть працювати одночасно і надаватимуть вантажовідправнику більше потужності. Друге рішення - змінити Beaver на асинхронну передачу даних RabbitMQ, що теоретично має бути набагато швидшим. Я сподіваюся, що я закінчу впроваджувати обидва рішення до кінця цього тижня.
Ви можете слідкувати за проблемою тут:
https://github.com/josegonzalez/python-beaver/issues/323
І перевірте запит на витяг тут:
https://github.com/josegonzalez/python-beaver/pull/324
Якщо у вас є більше запитань, залиште коментар.