Kiedy używać zaawansowanego protokołu kolejkowania wiadomości, takiego jak RabbitMQ? [Zamknięte]

Odpowiedzi:

25

Wyobraź sobie, że masz usługę internetową, która może przyjmować wiele żądań na sekundę. Masz również system księgowy, który wykonuje wiele czynności, z których jedną jest przetwarzanie żądań pochodzących z usługi internetowej.

Jeśli umieścisz kolejkę między usługą internetową a systemem księgowym, będziesz w stanie:

  • mniej sprzężeń między dwiema aplikacjami, ponieważ teraz obie aplikacje muszą znać parametry konfiguracyjne systemu zarządzania kolejką i nazwę kolejki. Tutaj haczyk polega na tym, że zwykle istnieje większe prawdopodobieństwo przeniesienia aplikacji na inny serwer niż do systemu zarządzania kolejkami
  • jeśli pojawi się wiele wniosków w krótkim czasie, system księgowy będzie mógł je wszystkie przetworzyć
  • podtrzymywać niektóre żądania, jeśli ich liczba naprawdę się powiększa

Oczywiście możesz mieć bardziej złożone sytuacje, w których liczba Twoich aplikacji jest znacznie większa niż dwie i musisz zarządzać komunikacją między nimi.

Виталий Олегович
źródło
1
1) W jaki sposób A sprzężony z B jest lepszy niż A sprzężony z C i C połączony z B?
Charlie
2) Dlaczego nie umieścić kolejki w systemie księgowym? Po co wprowadzać nową ruchomą czarną skrzynkę, która wymaga dodatkowej konfiguracji?
Charlie,
2
@Charlie o pytaniu 1, zmodyfikowałem swoją odpowiedź. Co do pytania 2, co dokładnie masz na myśli, umieszczając kolejkę w systemie księgowym? Chcesz użyć struktury danych kolejki? W takim przypadku będziesz mieć więcej kodu do napisania, aby go zachować. Chcesz symulować kolejkę przy użyciu tabeli bazy danych? Ponownie będziesz musiał napisać dobry kod do zarządzania tą tabelą. Coś jeszcze, o czym nie myślałem?
Виталий Олегович
Błędnie mówiłem o 1. Jeśli kolejka zostanie umieszczona w usłudze sieciowej lub kolejka zostanie umieszczona w aplikacji, wówczas pozostanie jedno połączenie. Jeśli jednak kolejka jest zewnętrzna względem obu, masz teraz dwa razy sprzężenie i 50% więcej systemów do zarządzania / punktów awarii. Jeśli zostanie wybrana kolejka innej firmy, będziesz mieć również ten nowy pakiet do nauki i konfiguracji, i prawdopodobnie będziesz obciążony przez niezliczone funkcje, których nie jesteś zainteresowany, funkcje dodane, aby kolejka była ogólnego przeznaczenia i przydatna dla o wiele więcej sytuacji niż twoja.
Charlie
@Charlie, prawdopodobnie jeden broker komunikatów będzie używany w wielu systemach. Lub może istnieć jeden serwer proxy dla brokera. (W naszym przypadku korzystamy z jednego urządzenia do przesyłania wiadomości, które może obsługiwać miliony wiadomości na sekundę dla wszystkich naszych systemów). W rzeczywistości powoduje to większe oddzielenie, ponieważ komunikat jest generowany przez jeden system, a każdy zainteresowany system może go odebrać i wykonać odpowiednią logikę. Jedynym sprzężeniem jest sama kolejka.
Michael Brown
16

Oprócz zapewnienia bufora między usługą sieci Web a inną usługą zaplecza, kolejki komunikatów mogą być używane w bardziej zaawansowanych scenariuszach. Rabbit MQ (i inne dojrzałe produkty kolejki wiadomości nazywane również MOM - oprogramowanie pośrednie zorientowane na wiadomości) można skonfigurować do kierowania i dystrybucji wiadomości zgodnie z różnymi regułami.

Na przykład technika routingu Pub-Sub pozwala jednemu źródłu na wysłanie wiadomości i otrzymanie jej przez wielu słuchaczy. Jest to powszechnie stosowane przez oprogramowanie do handlu akcjami, aby informować użytkowników na parkiecie.

Również ze względu na fakt, że większość MOM-ów ma sdk dla wielu języków i platform, można ich używać do integracji aplikacji napisanych na różnych platformach.

To tylko kilka scenariuszy włączonych przez MOM.

Michael Brown
źródło