Üzenetkezelési híd mintája

Azure Service Bus

Ez a cikk az üzenetkezelési híd mintáját ismerteti, amely egy olyan technika, amellyel különböző üzenetkezelési infrastruktúrákra épülő különálló rendszereket integrálhat.

Kontextus és probléma

Számos szervezet és számítási feladat véletlenül olyan informatikai rendszerekkel rendelkezhet, amelyek több üzenetkezelési infrastruktúrát használnak, például a Microsoft Message Queueing (MSMQ), a RabbitMQ, az Azure Service Bus és az Amazon SQS szolgáltatást. Ez a probléma egyesítések, felvásárlások vagy a jelenlegi helyszíni rendszerek felhőben üzemeltetett összetevőkre való kiterjesztése miatt fordulhat elő a költséghatékonyság és a könnyű karbantartás érdekében.

A fejlesztők megoldhatják ezt a kihívást, ha módosítják az integrálandó rendszereket, hogy HTTP-alapú webszolgáltatások használatával kommunikáljanak. Ennek a megközelítésnek azonban vannak hátrányai, például:

  • A rendszereket úgy kell módosítani, hogy egy HTTP-ügyfelet ad hozzá az egyik oldalon, a másikon pedig egy HTTP-kéréskezelőt. A rendszereket ezután újra kell tesztelni és újra üzembe kell helyezni.
  • A HTTP-végpontokat üzemeltetni kell, ami összetettebbé teszi a webszolgáltatások biztonságossá és magas rendelkezésre állásúvá tételét.
  • Gyakori hálózati csatlakozási problémák, amelyek egyéni újrapróbálkozást igényelnek.

Megoldás

Ha az integrálandó rendszerek olyan összetevőkből állnak, amelyek üzenetek cseréjével kommunikálnak, az Üzenetkezelési híd minta javítja az integrációt, és csökkenti a hátrányokat.

Ebben a forgatókönyvben minden rendszer egy üzenetkezelési infrastruktúrához csatlakozik. A különböző üzenetkezelési infrastruktúrák közötti integrációhoz vezessen be egy hídösszetevőt, amely egyszerre két vagy több üzenetkezelési infrastruktúrához csatlakozik. A híd lekéri az üzeneteket az egyikből, és a hasznos adatok módosítása nélkül leküldi őket a másikba.

Az integrálandó rendszereknek nem kell felismerni a többit vagy a hidat. A küldő rendszer úgy van konfigurálva, hogy adott üzeneteket küldjön egy kijelölt üzenetsorba a natív üzenetkezelési infrastruktúráján. A híd felveszi ezeket az üzeneteket, és továbbítja őket egy másik üzenetsorba egy másik üzenetkezelési infrastruktúrában, ahol a fogadórendszer felveszi őket.

Juttatások

  • Az Üzenetkezelési hídon keresztül integrálandó rendszereket nem kell módosítani. Ideális esetben a végpontok nem tudják, hogy az üzenetek hidak.
  • Az integráció megbízhatóbb a HTTP-alternatívához képest a legalább egyszer elérhető üzenetkézbesítési mechanizmus garanciája miatt.
  • A migrálási forgatókönyvek rugalmasabbak lehetnek. A végpontok például áttelepíthetők az egyik üzenetkezelési infrastruktúrából a másikba, mivel az ütemezés nem egyszerre teszi lehetővé.

Hátránya

  • Előfordulhat, hogy egy vagy mindkét üzenetkezelési technológia speciális funkciói nem érhetők el a hídon.
  • A hídon lévő útvonalnak mindkét technológia korlátait figyelembe kell vennie. Az üzenet maximális mérete például 4 MB lehet az MSMQ-ban, de az Azure Storage-üzenetsorokban csak 64 KB.

Problémák és megfontolandó szempontok

Az Üzenetkezelési híd minta megvalósításakor vegye figyelembe a következő szempontokat:

  • Ha az integrált rendszerek egyike elosztott tranzakciókra támaszkodik, például a Microsoft Elosztott tranzakció koordinátorára (DTC) a helyesség érdekében, deduplikációs mechanizmust kell implementálnia a hídon.

  • Ha az integrálandó rendszerek egyike nem használ üzenetkezelési infrastruktúrát, és nem módosítható, létrehozhatja az üzenetkezelési hidat a másik rendszer által használt infrastruktúra és egy SQL Server által emulált üzenetsor között. Az örökölt rendszer az SQL Server módosítási adatrögzítési funkciójával küldhet üzeneteket, hogy a módosításokat egy dedikált üzenetsor-táblába küldje. A híd továbbíthatja ezeket az üzeneteket a tényleges üzenetkezelési infrastruktúrának.

  • Minden üzenetkezelési infrastruktúrában használhat egyetlen üzenetsort, amelyet áthidaló üzenetsorként jelölnek ki. Ebben a topológiában konfigurálja a küldő rendszert úgy, hogy az adott üzenetsort használja célként a másik rendszernek küldött üzenettípusokhoz. Az egyes üzenetkezelési infrastruktúrákban több üzenetsorpárt is használhat, így a feladó nem tud a hídról. A célrendszer üzenetkezelési infrastruktúrájában minden célsorhoz létrejön egy árnyéksor . A híd üzeneteket továbbít az árnyéksorok és azok megfelelői között.

  • A kívánt rendelkezésre állási szolgáltatásiszint-szerződések (SLA-k) teljesítéséhez szükség lehet az üzenetkezelési híd vertikális felskálázására a versengő fogyasztók megközelítésével.

  • A rendszeres üzenetfeldolgozó összetevők az Újrapróbálkozási mintát használják az átmeneti hibák kezelésére. Az újrapróbálkozási számláló korlátja lehetővé teszi, hogy az összetevők észleljék a mérgező üzeneteket, és eltávolítsák őket az üzenetsorból a feldolgozás blokkolásának feloldásához. A híd esetében előfordulhat, hogy egy másik újrapróbálkozási szabályzatra van szükség, amely megakadályozza az üzenetek hamis azonosítását méregként, ha infrastruktúra-meghibásodás történik. Az áramkör-megszakító mintával szüneteltetheti a továbbítást.

Mikor érdemes ezt a mintát használni?

Az üzenetkezelési híd mintáját akkor használja, ha a következőkre van szüksége:

  • Meglévő rendszerek integrálása minimális módosítási igényekkel.
  • Olyan régi alkalmazásokat integrálhat, amelyek más üzenetkezelési technológiákat nem használhatnak.
  • Meglévő helyszíni alkalmazások kiterjesztése felhőalapú összetevőkkel.
  • Csatlakozás földrajzilag elosztott rendszereket, ha az internetkapcsolat nem stabil.
  • Egyetlen elosztott rendszer növekményes migrálása az egyik üzenetkezelési infrastruktúrából a másikba anélkül, hogy a teljes rendszert egyetlen erőfeszítéssel kellene migrálni.

Ez a minta nem feltétlenül megfelelő, ha:

  • Az érintett rendszerek közül legalább az egyik az egyik üzenetkezelési infrastruktúra olyan funkciójára támaszkodik, amely nincs jelen a másikban.
  • Az integráció szinkron jellegű, és a kezdeményező rendszer azonnali választ igényel.
  • Az integráció konkrét funkcionális vagy nem funkcionális követelményekkel rendelkezik, például biztonsági vagy adatvédelmi követelményekkel.
  • Az integrációhoz szükséges adatok mennyisége meghaladja az üzenetkezelő rendszer kapacitását, vagy költséges megoldássá teszi az üzenetküldést a problémára.

Számítási feladatok tervezése

Az tervezőknek értékelniük kell, hogyan használható az Üzenetkezelési híd minta a számítási feladat kialakításában az Azure Well-Architected Framework pilléreiben foglalt célok és alapelvek kezelésére. Példa:

Pillér Hogyan támogatja ez a minta a pillércélokat?
A költségoptimalizálás a számítási feladatok megtérülésének fenntartására és javítására összpontosít. Ez a közbenső lépés a meglévő rendszer hosszú élettartamát anélkül növelheti, hogy át kellene írnia azokat, mivel lehetővé teszi a más üzenetkezelési vagy eseménykezelési technológiát használó rendszerekkel való együttműködést.

- CO:07 Összetevő költségei
Az operatív kiválóság szabványosított folyamatok és a csapat kohéziója révén segít a számítási feladatok minőségének biztosításában. Ez a szétválasztás rugalmasságot biztosít az üzenetkezelési és eseménykezelési technológiák számítási feladaton belüli áttűnésekor, vagy ha heterogén követelményekkel rendelkezik a külső függőségektől.

- OE:06 Számítási feladatok módosításainak üzembe helyezése

Mint minden tervezési döntésnél, fontolja meg az ezzel a mintával bevezethető többi pillér céljaival szembeni kompromisszumokat.

Példa

Van egy .NET-keretrendszerben írt alkalmazás, amely a helyszínen üzemeltetett alkalmazottak ütemezését kezeli. Az alkalmazás jól strukturált, az MSMQ-n keresztül kommunikáló különálló összetevőkkel. Az alkalmazás működik, és a számítási feladatért felelős csapatnak nem áll szándékában újraírni. Az ütemezési adatok új felhasználóját kell felépíteni az üzleti igényeknek megfelelően, és az informatikai stratégia új, natív felhőbeli szoftvereket igényel a költségek és a szállítási idő optimalizálása érdekében.

Az aszinkron üzenetsor-alapú architektúra korábban a számítási feladatokért felelős csapatnál működött, így a csapat ugyanazt az architekturális megközelítést fogja használni, de a modern technológiával, a Service Bus-tal. A számítási feladatokért felelős csapat nem szeretne szinkron kommunikációt bevezetni a felhő és a helyszíni üzembe helyezés között, hogy csökkentse az egyiket érintő késést vagy elérhetetlenséget.

A csapat úgy dönt, hogy az Üzenetkezelési híd mintával csatlakoztatja a két rendszert. A minta két részből áll. Az egyik rész üzeneteket fogad a meglévő MSMQ-üzenetsorból, és továbbítja őket a Service Busnak. A másik rész a Service Bus üzeneteit veszi át, és továbbítja őket a meglévő MSMQ-üzenetsorba.

Az MSMQ-t és a Service Bust integráló üzenetkezelési híd ábrája.

Amikor a megvalósítási csapat ezt a megközelítést használja, a meglévő alkalmazásban meglévő infrastruktúrát használnak az új összetevőkkel való integrációhoz. A meglévő alkalmazás nem tudja, hogy az új összetevők az Azure-ban vannak üzemeltetve. Hasonlóképpen, az új összetevők ugyanúgy kommunikálnak az örökölt alkalmazással, mint egymás között, Service Bus-üzenetek küldésével. A híd üzeneteket továbbít a két rendszer között.

Közreműködők

Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.

Fő szerzők:

A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.

Következő lépések

  • Az Üzenetkezelési híd minta leírása a vállalati integrációs minták közösségéből.
  • Megtudhatja, hogyan implementálhat üzenetkezelési hidat a Spring Java-keretrendszerben.
  • A QPid-híd az AMQP-kompatibilis üzenetkezelési technológiák áthidalására használható.
  • Az NServiceBus üzenetkezelési híd egy üzenetsor-üzenetsor közötti híd .NET-implementációja, amely számos üzenetkezelési infrastruktúrát támogat, például az MSMQ-t, a Service Busot és az Azure Queue Storage-t.
  • Az NServiceBus.Router egy nyílt forráskódú projekt, amely implementálja az üzenetkezelési híd mintáját. Emellett lehetővé teszi több mint két technológia áthidalását egyetlen példányban, és fejlett üzenet-útválasztási képességekkel rendelkezik.
  • A versengő fogyasztók mintája biztosítja, hogy az üzenetkezelési híd implementációja képes kezelni a terhelést.
  • Az újrapróbálkozási minta lehetővé teszi, hogy az üzenetkezelési híd kezelje az átmeneti hibákat.
  • Az áramkör-megszakító minta fenntartja az erőforrásokat, ha a híd mindkét oldalán állásidő van.