После оценки Redis и RabbitMQ я выбрал RabbitMQ в качестве нашего брокера по следующим причинам:
- RabbitMQ позволяет использовать встроенный уровень безопасности с помощью сертификатов SSL для шифрования данных, которые вы отправляете брокеру, а это означает, что никто не будет прослушивать ваши данные и иметь доступ к вашим жизненно важным данным организации.
- RabbitMQ - очень стабильный продукт, который может обрабатывать большое количество событий в секунду и множество соединений, не будучи узким местом.
- В нашей организации мы уже использовали RabbitMQ и имели хорошие внутренние знания о его использовании и уже подготовленную интеграцию с chef.
Что касается масштабирования, RabbitMQ имеет встроенную реализацию кластера, которую вы можете использовать в дополнение к балансировщику нагрузки для реализации среды резервного брокера.
Мой кластер RabbitMQ Active Active или Active Passive?
Теперь о более слабом моменте использования 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
Если у вас есть еще вопросы, не стесняйтесь оставлять комментарии.