Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 2516|Odpowiedź: 0

RabbitMQ: Kto stworzy kolejkę i wymianę

[Skopiuj link]
Opublikowano 03.05.2023 22:31:59 | | | |
Tłumaczenie

Komunikacja jest fundamentalną częścią każdego systemu rozproszonego. Pozwala producentowi wysłać wiadomość do dowolnej liczby konsumentów i nie jest konieczne posiadanie żadnych informacji o konsumencie. To ogromna pomoc w prawdziwie asynchronicznej i rozdzielającej się komunikacji.



Gdy używasz RabbitMQ, powyższy diagram pokazuje bardzo podstawową, ale typową strukturę. Producent wysyła wiadomość do przełącznika. Zgodnie z logiką routingu, przełącznik umieszcza wiadomość w kolejce powiązanej z przełącznikiem. Dokładniej, jeśli jest to przełącznik typu broadcast, kopia tej wiadomości będzie wysyłana do każdej kolejki wielokrotnie. Konsument może wtedy odebrać i przetworzyć tę wiadomość.

Ważnym założeniem, aby powyższa struktura działała skutecznie dla producentów i konsumentów, jest to, że wszystkie komponenty RabbitMQ (czyli kolejki, przełączniki i powiązania) muszą być stworzone z wyprzedzeniem. Konsument nie może wysłać wiadomości do przełącznika Jeśli przełącznik nie istnieje, nie może przetwarzać wiadomości z kolejki, która nie istnieje.

Dlatego łatwo zrozumieć, że zanim producent/konsument wyśle/odbierze wiadomość, niech wartość producent/konsument stworzy kolejkę, przełącznik i relację wiążącą. Przyjrzyjmy się zaletom i wadom każdego z tych sposobów.

1. Rozróżnienie obowiązków



Tłumaczenie obrazów (1. Producent tworzy przełącznik 2. Konsument tworzy kolejkę i wiąże ją z przełącznikiem)

Aby producenci i konsumenci mogli się całkowicie rozdzielić, idealnie producenci znają tylko informacje o przełączniku (nie o kolejce), a konsumenci tylko o kolejce (nie o przełączniku). Relacja wiążąca wskazuje relację między przełącznikiem a kolejką

Jednym z możliwych sposobów jest to, aby producent zajmował się tworzeniem przełącznika, a konsument tworzył kolejkę i wiązał ją z przełącznikiem. Zaletą tej metody rozdzielania jest to, że jeśli konsument potrzebuje kolejki, wystarczy ją utworzyć i powiązać według zapotrzebowania, a producent nie musi znać żadnych informacji o kolejce. Ale to nie jest wystarczające rozdzielenie: ponieważ konsument musi znać przełącznik, aby go powiązać.

2. Producenci tworzą wszystko

Gdy producent działa, można go skonfigurować do tworzenia wszystkich wymaganych komponentów (przełączników, kolejek i wiązań). Zaletą tego podejścia jest to, że żadne wiadomości nie są tracone (ponieważ kolejka jest już utworzona i powiązana z przełącznikiem, a żaden konsument nie musi jej uruchamiać wcześniej).

Oznacza to jednak, że producent musi znać wszystkie kolejki, które trzeba powiązać ze switchem. To bardzo powiązany sposób. Powodem jest to, że za każdym razem, gdy trzeba dodać nową kolejkę, producent musi przekonfigurować i wdrożyć, aby utworzyć i związać kolejki

3. Konsumenci tworzą wszystko

Przeciwieństwem jest pozwolenie konsumentowi na tworzenie przełączników, kolejek i przypisań, których potrzebuje podczas działania. Podobnie jak w poprzednim podejściu, ta metoda powoduje sprzężenie, ponieważ konsument musi znać informacje o przełączniku, do którego jest przywiązany do kolejki. Każda zmiana przełącznika (np. zmiana nazw) oznacza, że wszyscy konsumenci muszą zostać ponownie skonfigurowani i wdrożeni. Gdy kolejki są duże i konsumenci, ta złożoność może być zbyt trudna.

4. Żadne z nich nic nie tworzy

Zupełnie inne podejście polega na tym, by ani producent, ani konsument nie tworzyli żadnych wymaganych komponentów. Zamiast tego jest tworzony za pomocą interfejsu użytkownika wtyczki administracyjnej lub wcześniej administratorskiego CLI. Ta metoda opiera się na następujących zaletach:

  • Producenci i konsumenci mogą być całkowicie oddzieleni. Producenci znają tylko wymianę, a konsumenci znają tylko kolejkę.
  • Można to łatwo skryptować i automatyzować jako część pipeline'u wdrożeniowego
  • Wszelkie zmiany, takie jak nowe kolejki, można dodać bez naruszania istniejących, wdrożonych wydawców i konsumentów


streszczenie

W systemach rozproszonych wiadomości asynchroniczne są użytecznym sposobem na oddzielenie, ale aby utrzymać je w separacji, konieczne jest utrzymanie skutecznej strategii utrzymania struktury wiadomości (w RabbitMQ są to kolejki, przełączniki i powiązania).

Chociaż usługi wydawcy i konsumenci mogą być odpowiedzialne za samodzielne tworzenie potrzebnych produktów, mogą one być kosztowne pod względem początkowej utraty wiadomości, sprzężenia i utrzymania operacyjnego (pod względem konfiguracji i wdrożenia).

Prawdopodobnie najlepszy sposób na konfigurację systemu wiadomości tam, gdzie jest to miejsce: pisać skrypty poza aplikacją. Zapewnia to, że usługi pozostają oddzielone, a system kolejek może dynamicznie się zmieniać w razie potrzeby bez wpływu na dużą liczbę istniejących usług.

Oryginał:Logowanie do linku jest widoczne.
Oryginalny angielski:Logowanie do linku jest widoczne.





Poprzedni:Wprowadzenie do interfejsu IParsable dodanego do .NET 7
Następny:VSTO (IV) Wypełnij obraz do dokumentu Word
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com