Fordítás
Az üzenetküldés minden elosztott rendszer alapvető része. Lehetővé teszi a gyártó számára, hogy bármilyen fogyasztónak üzenetet küldjön, és nem szükséges semmilyen információt tudni a fogyasztóról. Ez nagyszerű segítség a valóban aszinkron és leszakadó kommunikációhoz.
Amikor a RabbitMQ-t használod, a fenti diagram egy nagyon alap, de tipikus szerkezetet mutat. Egy producer üzenetet küld a kapcsolónak. Az útvonalvezetési logika szerint a kapcsoló az üzenetet a kapcsolóhoz kötött sorba helyezi. Konkrétabban, ha sugárzó típusú kapcsolóról van szó, akkor ennek az üzenetnek a másolatát minden sorba ismételten elküldik. Ezután a fogyasztó átveszheti és feldolgozhatja az üzenetet.
Fontos feltételezés arra, hogy a fenti struktúra sikeres legyen a termelők és a fogyasztók számára, hogy minden RabbitMQ komponensét (azaz sorokat, kapcsolókat és kötéseket) előre létre kell hozni. Egy fogyasztó nem küldhet üzenetet egy kapcsolónak. Ha a switch nem létezik, akkor a fogyasztó nem dolgozhat fel üzeneteket egy olyan sorból, amely nem létezik.
Ezért nem nehéz megérteni, hogy mielőtt a gyártó/fogyasztó elküldi/kapná az üzenetet, hagyjuk, hogy egy termelő/fogyasztói érték hozzon létre sort, kapcsolót és kötési kapcsolatot. Nézzük meg mindkét módszer előnyeit és hátrányait.
1. Megkülönböztetni a felelősségeket
Képfordítás (1. Producer létrehoz egy switchet 2. A fogyasztó létrehoz egy sort, és köti a sort a switch-hez)
Ahhoz, hogy a termelők és a fogyasztók teljesen szétváljanak, ideális esetben a gyártók csak a kapcsolóról ismernek információkat (nem a sort), míg a fogyasztók csak a sorról (nem a kapcsolóról). A kötési kapcsolat a kapcsoló és a sor közötti kapcsolatot jelzi
Az egyik lehetséges mód, hogy a gyártó kezeli a switch létrehozását, a fogyasztó pedig létrehozza a sort, és köti a switch-hez. Ennek a szétválasztási módszernek az előnye, hogy ha a fogyasztónak szüksége van egy sorra, egyszerűen szükség van egy sorba létrehozására, és a kereslet szerint kötöznie kell, és a gyártónak nem kell információt tudnia a sorról. De ez nem elegendő leválasztás: mert a fogyasztónak ismernie kell a kapcsolót ahhoz, hogy kötözze meg.
2. A producerek mindent megalkotnak
Amikor a producer fut, konfigurálható úgy, hogy létrehozza az összes szükséges komponenst (switchek, sorok és kötések). Ennek a megközelítésnek előnye, hogy nem vesznek el üzenetek (mert a sor már létre van hozva és kötve a kapcsolóhoz, és nem kell először elindítania a felhasználónak).
Ez azonban azt jelenti, hogy a producernek ismernie kell az összes sort, amit a kapcsolóhoz kell kötni. Ez egy nagyon összekapcsolt mód. Ennek oka, hogy minden alkalommal, amikor új sort kell hozzáadni, a producernek újra konfigurálnia és telepítenie kell, hogy sorokat hozzon létre és köthessen
3. A fogyasztók mindent megalkotnak
Az ellenkezője az, hogy a fogyasztó hozza létre a kapcsolókat, sorokat és kötéseket, amire szüksége van, amikor fut. Ahogy az előző megközelítésben, ez a módszer is összekapcsolást eredményez, mert a fogyasztónak tudnia kell az adott kapcsolóról szóló információkat, amelyhez a sorhoz van kötve. Bármilyen változás a kapcsolón (például átnevezés) azt jelenti, hogy minden felhasználót át kell konfigurálni és telepíteni. Nagy sorok és fogyasztók esetén ez a bonyolultság megfékelő lehet.
4. Egyik sem hoz létre semmit
Teljesen más megközelítés, hogy sem a gyártó, sem a fogyasztó nem készít semmilyen szükséges alkatrészt. Ehelyett előzetesen az admin plugin vagy az admin CLI felhasználói felületén keresztül hozza létre. Ez a módszer a következő előnyökön alapul:
- A termelők és a fogyasztók teljesen elválaszthatódhatnak. A producerek csak a tőzsdét ismerik, a fogyasztók pedig csak a sort.
- Ez könnyen szkripálható és automatizálható a telepítési folyamat részeként
- Bármilyen változtatás, például új sorok, hozzáadható anélkül, hogy érintenénk a létező, telepített kiadókat vagy fogyasztókat
összefoglalás
Elosztott rendszerekben az aszinkron üzenetek hasznosak a szétválasztásnak, de ahhoz, hogy leválasztva maradjanak, szükséges hatékony stratégiát fenntartani az alapul szolgáló üzenetküldő struktúra fenntartására (a RabbitMQ-ban ezek sorok, kapcsolók és kötések).
Bár a kiadó és a fogyasztói szolgáltatások maguk felelősek lehetnek azért, hogy megteremtsék a szükséges dolgokat, ezek költségesek lehetnek az első üzenetvesztés, összekapcsolás és működési karbantartás (konfiguráció és telepítés szempontjából) szempontjából.
Valószínűleg a legjobb módja annak, hogy az üzenetküldő rendszer konfigurációját ott kezelje, ahol az kell: írj szkripteket az alkalmazáson kívül. Ez biztosítja, hogy a szolgáltatások elkülönüljenek egymástól, és a sorrendszer dinamikusan változhasson szükség szerint anélkül, hogy sok meglévő szolgáltatást érintene.
Eredeti:A hiperlink bejelentkezés látható. Eredeti angol:A hiperlink bejelentkezés látható.
|