Po ocenie zarówno Redis, jak i RabbitMQ wybrałem RabbitMQ jako naszego brokera z następujących powodów:
- RabbitMQ pozwala na korzystanie z wbudowanej warstwy bezpieczeństwa poprzez używanie certyfikatów SSL do szyfrowania danych, które wysyłasz do brokera, a to oznacza, że nikt nie będzie podsłuchiwał Twoich danych i nie będzie miał dostępu do ważnych danych organizacyjnych.
- RabbitMQ to bardzo stabilny produkt, który może obsługiwać dużą liczbę zdarzeń na sekundę i wiele połączeń, nie będąc szyjką butelki.
- W naszej organizacji korzystaliśmy już z RabbitMQ i mieliśmy dobrą wewnętrzną wiedzę na temat korzystania z niego oraz przygotowaną już integrację z szefem kuchni.
Jeśli chodzi o skalowanie, RabbitMQ ma wbudowaną implementację klastra, której można użyć oprócz modułu równoważenia obciążenia w celu zaimplementowania nadmiarowego środowiska brokera.
Czy mój klaster RabbitMQ jest aktywny, czy aktywny pasywny?
A teraz do słabszego punktu korzystania z RabbitMQ:
- Większość spedytorów Logstash nie obsługuje RabbitMQ, ale z drugiej strony najlepszy, o nazwie Beaver, ma implementację, która bez problemu wyśle dane do RabbitMQ.
- Implementacja, którą Beaver ma z RabbitMQ w swojej aktualnej wersji, jest trochę wolna pod względem wydajności (do moich celów) i nie była w stanie obsłużyć szybkości 3000 zdarzeń na sekundę z jednego serwera i od czasu do czasu usługa ulegała awarii.
- Obecnie pracuję nad poprawką, która rozwiąże problem z wydajnością RabbitMQ i sprawi, że spedytor Beaver będzie bardziej stabilny. Pierwszym rozwiązaniem jest dodanie większej liczby procesów, które mogą działać jednocześnie i dadzą spedytorowi większą moc. Drugim rozwiązaniem jest zmiana Beavera na wysyłanie danych do RabbitMQ asynchronicznie, co teoretycznie powinno być znacznie szybsze. Mam nadzieję, że zakończę wdrażanie obu rozwiązań do końca tego tygodnia.
Możesz śledzić problem tutaj:
https://github.com/josegonzalez/python-beaver/issues/323
I sprawdź żądanie ściągnięcia tutaj:
https://github.com/josegonzalez/python-beaver/pull/324
Jeśli masz więcej pytań, zostaw komentarz.