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.
Redis jest tworzony jako magazyn danych o kluczowej wartości, pomimo posiadania pewnych podstawowych funkcji brokera komunikatów.
RabbitMQ jest tworzony jako broker komunikatów. Naturalnie ma wiele funkcji brokera wiadomości.
źródło
Zrobiłem pewne badania na ten temat. Jeśli wydajność jest ważna, a wytrwałość nie, RabbitMQ jest idealnym wyborem. Redis to technologia opracowana w innym celu.
Poniżej znajduje się lista zalet korzystania z RabbitMQ zamiast Redis:
Kilka wad korzystania z RabbitMQ:
źródło
Sorted Sets
pozwala na priorytetowe interakcje podobne do kolejki. Redis można również łączyć w klastry / fragmentować, aby nawet wysyłać różne komunikaty do różnych kolejek na różnych serwerach. Nie jestem pewien co do SSL bezpośrednio dla Redis, ale patrzę na AWS Elasticache i ich Redis 3.2.6 pozwala na szyfrowanie w stanie spoczynku i podczas przesyłania. Uwaga: wcale nie mówię, że Redis jest lepszy w tym przypadku; tylko wskazanie, że mogą to nie być powody, aby wybrać RabbitMQ zamiast Redis.Zastanawiałem się nad tym samym. Wcześniejsze zalecenia ludzi z Logstash zalecały Redis zamiast RabbitMQ ( http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized ), jednak ta sekcja uwag nie istnieje już w bieżącej dokumentacji, chociaż istnieją ogólne uwagi na temat korzystania z brokera do radzenia sobie ze skokami tutaj https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .
Chociaż całkiem szczęśliwie używam RabbitMQ, obecnie badam brokera Redis, ponieważ protokół AMQP jest prawdopodobnie przesadzony w moim przypadku użycia logowania.
źródło
Szybkie pytania do zadania:
Jeśli chodzi o opinie, prowadziłem Redis jako broker i nienawidziłem tego. Oczywiście mógł to być mój brak doświadczenia z redisem (nie był to problem z samym produktem), ale było to najsłabsze ogniwo w rurociągu i zawsze zawodziło, gdy tego najbardziej potrzebowaliśmy.
źródło