Üzenetkezelési platform kiválasztása

Befejeződött

Számos kommunikációs platform érhető el az elosztott alkalmazások megbízhatóságának javítása érdekében, köztük a Microsoft Azure-ban is. Minden platform egy olyan eszköz, amely más célt szolgál. Fontos, hogy az alkalmazás minden követelményéhez válassza ki a megfelelő eszközt. Tekintse meg a lehetőségeket az Azure Service Busban.

A Contoso Bikes által javasolt rendelési és nyomon követési alkalmazás elosztott architektúrája több összetevőt igényel, beleértve a webhelyet, az adattárolást és a háttérszolgáltatást. Az alkalmazás összetevőit számos különböző módon kötheti össze, és egyetlen alkalmazás több technika előnyeit is kihasználhatja.

El kell döntenie, hogy milyen technikákat használjon az új Contoso Bikes alkalmazásban. Az első lépés az egyes helyek kiértékelése, ahol több rész közötti kommunikáció zajlik. Egyes összetevőknek időben kell futniuk ahhoz, hogy az alkalmazás egyáltalán elvégezhesse a feladatát. Néhány fontos lehet, de nem az idő szempontjából kritikus. Végül a többi összetevő, például a mobilalkalmazás-értesítések, egy kicsit választhatóbbak.

Döntés az üzenetek és események között

Az üzenetek és az események is datagramok: az egyik összetevőből a másikba küldött adatcsomagok. Eleinte aprónak tűnő módon különböznek egymástól, de a különbségek jelentős különbségeket okozhatnak az alkalmazás tervezőiben.

Üzenetek

Az elosztott alkalmazások terminológiájában az üzenet meghatározó jellemzője, hogy az alkalmazás általános integritása a beérkezett üzenetekre támaszkodhat. Tekintsen az üzenetekre úgy, hogy egy összetevő átadja a munkafolyamat stafétabotját egy másik összetevőnek. A teljes munkafolyamat létfontosságú üzleti folyamat lehet, és az üzenet az összetevőket összetartó habarcs.

Az üzenetek általában a tényleges adatokat tartalmazzák, nem csak az adatokra mutató hivatkozást (például azonosítót vagy URL-címet). A datagram részeként történő adatküldés kevésbé törékeny, mint egy hivatkozás küldése. Az üzenetkezelési architektúra garantálja az üzenetek kézbesítését, és mivel nincs szükség további keresésekre, az üzenet megbízhatóan kezelhető. A küldő alkalmazásnak azonban pontosan tudnia kell, hogy milyen adatokat kell tartalmaznia ahhoz, hogy ne küldjön túl sok adatot, ami szükségtelen munkát igényelne a fogadó összetevőtől. Ebben az értelemben az üzenet feladója és fogadója gyakran szigorú adatszerződéssel van összekapcsolva.

A Contoso Bicycles új architektúrájában a megrendelés leadásakor a vállalat valószínűleg üzeneteket fog használni. A webes előtér- vagy mobilalkalmazás üzenetet küld a háttérfeldolgozó összetevőknek. A háttérrendszerben olyan lépésekre kerül sor, mint az ügyfélhez legközelebbi üzletbe való útválasztás és a hitelkártyás fizetés.

Events

Az események értesítik a felhasználót arról, hogy történt valami. Az események kisebb súllyal esnek latba, mint az üzenetek, és leggyakrabban szórásos kommunikációhoz használatosak.

Az események a következő jellemzőkkel rendelkeznek:

  • Az esemény több fogadónak is elküldhető, vagy egyáltalán egyiknek sem.
  • Az eseményeket gyakran „üzenetelosztásra” szánják, és nagyszámú feliratkozóval rendelkeznek mindegyik kiadónál.
  • Az esemény közzétevőjének nincs várakozása a fogadó összetevő által végrehajtandó művelettel kapcsolatban.

A kerékpáralkatrész-láncok valószínűleg eseményeket használnak az állapotváltozásokról szóló felhasználói értesítésekhez. Az állapotváltozási események elküldhetők az Azure Event Gridbe, majd az Azure Functionsbe, illetve az Azure Notification Hubsba egy teljesen kiszolgáló nélküli megoldáshoz.

Az események és az üzenetek közötti különbség azért meghatározó, mert a kommunikációs platformokat általában úgy tervezik, hogy vagy az egyiket, vagy a másikat kezeljék. A Service Bus az üzenetek kezelésére lett tervezve. Ha eseményeket szeretne küldeni, valószínűleg az Event Gridet választja.

Az Azure-ban az Azure Event Hubs is megtalálható, de leggyakrabban az elemzéshez használt, nagy sebességű kommunikáció egy adott típusához használják. Ha például hálózati érzékelőkkel rendelkezik a gyártási raktárakban, az Event Hubs és az Azure Stream Analytics használatával figyelheti a hőmérsékletváltozások olyan mintáit, amelyek nemkívánatos tűzre vagy alkatrész-kopásra utalhatnak.

Service Bus-témakörök és üzenetsorok

Az Azure Service Bus kétféleképpen válthat üzeneteket: üzenetsorok és témakörök.

Mi az az üzenetsor?

A Service Bus-üzenetsorok az üzenetek egyszerű ideiglenes tárolási helye. Az üzeneteket egy feladó összetevő adja hozzá az üzenetsorhoz. Egy célösszetevő megnyitja az üzenetsor elején álló üzenetet. Normális körülmények között minden üzenetet csak egy fogadó fogad.

Diagram that shows a sample message queue with one sender sending the messages to the queue and one receiver retrieving them one by one from the queue.

Az üzenetsorok szétválasztják a párosított forrás- és célösszetevőket, elszigetelve a célösszetevőket a nagy forgalomtól.

A csúcsidők során előfordulhat, hogy az üzenetek gyorsabban érkeznek, mint a célösszetevők. Mivel a forrásösszetevők nem rendelkeznek közvetlen kapcsolattal a célhelyhez, a forrás nem változik, és az üzenetsor nőni fog. A célösszetevők eltávolítják az üzeneteket az üzenetsorból, mivel képesek kezelni őket. Ha csökken az igény, a célösszetevők felzárkózhatnak, és az üzenetsor rövidül.

Az üzenetsorok anélkül reagálnak a nagy igényre, hogy erőforrásokat kellene hozzáadniuk a rendszerhez. A gyorsan kezelendő üzenetek esetében azonban a célösszetevő több példányának létrehozása lehetővé teszi számukra a terhelés megosztását. Minden üzenetet csak egy példány kezel. Így hatékonyan skálázhatja a teljes alkalmazást úgy, hogy csak erőforrásokat ad hozzá a ténylegesen szükséges összetevőkhöz.

Mi az a témakör?

A Service Bus-témakörök hasonlóak az üzenetsorokhoz, de egy témakör több előfizetéssel is rendelkezhet. Ez azt jelenti, hogy több célösszetevő is előfizethet egy adott témakörre, így az egyes üzenetek több fogadónak lesznek kézbesítve. A feliratkozások szűrni is tudják a témakörök üzeneteit, és csak a releváns üzeneteket fogadják. A feliratkozások ugyanúgy biztosítják a leválasztott kommunikációt, mint az üzenetsorok, és ugyanúgy reagálnak a nagy forgalomra. A témakörök akkor hasznosak, ha az egyes üzeneteket egyszerre több célösszetevőhöz szeretnénk továbbítani.

Megjegyzés:

A témakörök nem támogatottak az Alapszintű tarifacsomagban.

Diagram that shows one sender sending messages to multiple receivers through a topic that contains three subscriptions. These subscriptions are used by three receivers to retrieve the relevant messages.

Service Bus-üzenetsorok és Storage-üzenetsorok

Két Azure-szolgáltatás tartalmaz üzenetsorokat: Service Bus és Azure Storage. Általános útmutatóként a tárolási üzenetsorok használata egyszerűbb, de kevésbé kifinomultak és kevésbé rugalmasak, mint a Service Bus-üzenetsorok.

A Service Bus-üzenetsorok fő előnyei a következők:

  • Támogatja a nagyobb, 256 KB-os (standard szintű) vagy 100 MB-os (prémium szintű) üzeneteket üzenetenként, szemben az Azure Storage üzenetsor-üzeneteinek 64 KB-ával.
  • Támogatja mind a legfeljebb egyszer, mind a legalább egyszer történő kézbesítést. Válasszon a nagyon kis eséllyel, hogy egy üzenet elveszik, vagy egy nagyon kis eséllyel kezelik kétszer.
  • Garantálja az első, első utáni (FIFO) megrendelést. Az üzenetek kezelése a hozzáadott sorrendben történik. Bár a FIFO az üzenetsorok normál működése, az alapértelmezett FIFO-minta megváltozik, ha a szervezet szekvenciált vagy ütemezett üzeneteket állít be, vagy olyan megszakítások során, mint a rendszer összeomlása. További információ: Az Azure Storage-üzenetsorok és az Azure Service Bus-üzenetsorok összehasonlítása.
  • Több üzenetet is csoportosíthat egy tranzakcióban. Ha a tranzakció egyik üzenete nem kézbesíthető, a tranzakció összes üzenete nem lesz kézbesítve.
  • Támogatja a szerepköralapú biztonságot.
  • Nincs szükség célösszetevőkre az üzenetsor folyamatos lekérdezéséhez.

A Storage-üzenetsorok előnyei:

  • Korlátlan üzenetsorméret (szemben a Service Bus-üzenetsorok 80-GB-os méretkorlátjával)
  • Napló fenntartása az összes üzenetről

A kommunikációs technológia kiválasztása

Megismerte a különböző fogalmakat és az Azure által biztosított implementációkat. Ezután gondolja át, hogy a döntési folyamatnak hogyan kell kinéznie az egyes kommunikációkhoz.

Considerations

Az üzenetek küldésére és fogadására szolgáló módszer kiválasztásakor vegye figyelembe a következő kérdéseket:

  • A kommunikáció egy esemény? Ha igen, használjon Event Gridet vagy Event Hubsot.

  • Egy üzenetet egyszerre több célhoz kell továbbítani? Ha igen, használjon egy Service Bus-témakört. Ellenkező esetben használjon Service Bus-üzenetsort.

Üzenetsorok: Service Bus és tároló

Ha úgy dönt, hogy várólistára van szüksége, szűkítse tovább a választást.

Válassza ki a Service Bus-üzenetsort, ha:

  • A kézbesítésre vonatkozó garanciára van szüksége.
  • FIFO-garanciára van szüksége (ha más beállítások nem előzik meg az alapértelmezett FIFO-sorrendet).
  • Tranzakciókban szeretné csoportosítani az üzeneteket.
  • Az üzeneteket az üzenetsor lekérdezése nélkül szeretné megkapni.
  • Szerepköralapú hozzáférést kell biztosítania az üzenetsorokhoz.
  • A standard szinten 64 KB-nál nagyobb, de 256 KB-nál kisebb üzeneteket kell kezelnie, a prémium szinten pedig 100 MB-ot.
  • Az üzenetsor mérete nem nő 80 GB-nál.
  • Szeretne üzenetek kötegeit közzétenni és felhasználni.

Válasszon egy tárolási üzenetsort, ha:

  • Szüksége van egy egyszerű üzenetsorra, különös extra követelmények nélkül.
  • Auditnaplót szeretne kapni az üzenetsoron áthaladó összes üzenetről.
  • Az üzenetsor mérete várhatóan meghaladja a 80 GB-ot.
  • Nyomon szeretné követni az üzenetsoron belüli üzenet feldolgozásának előrehaladását.

Bár az elosztott alkalmazások összetevői képesek közvetlenül kommunikálni, gyakran növelheti a kommunikáció megbízhatóságát egy köztes kommunikációs platform, például az Azure Event Hubs vagy az Azure Event Grid használatával.

Az Event Hubs és az Event Grid olyan eseményekhez készült, amelyek csak egy eseményről értesítik a címzetteket, és nem tartalmazzák az eseményhez társított nyers adatokat. Az Azure Event Hubs nagy sebességű, elemzési típusú eseményekhez készült.

Az Azure Service Bus és a tárolási üzenetsorok üzenetekhez tartoznak, amelyeket bármely alkalmazás-munkafolyamat alapvető részeinek kötéséhez használhat.

Ha a követelmények egyszerűek, ha az egyes üzeneteket csak egy célhelyre szeretné elküldeni, vagy ha a lehető leggyorsabban szeretne kódot írni, akkor a legjobb megoldás lehet a tárolási üzenetsor. Egyéb esetben a Service Bus-üzenetsorok sokkal több lehetőséget és rugalmasságot nyújtanak.

Ha egy üzenetet több feliratkozónak szeretne elküldeni, használjon egy Service Bus-témakört.