A lecke végére meg tudod mondani, mikor előnyös az eseményvezérelt szerkezet, milyen költségekkel jár a hét szempont szerint, és mikor érdemes szinkron hívást megtartani.
Miért kell külön?
Az események csábítóak: lazán kapcsoltnak és rugalmasnak látszanak. A költségük viszont nem a termelő oldalán jelentkezik, hanem a rendszer egészének megértésében, az adatok frissességében és az ismétlődő, késő vagy rossz sorrendű üzenetek kezelésében.
Mikor erős?
Az Azure Architecture Center szerint az eseményvezérelt stílus ott kiemelkedő, ahol kis késleltetésű, közel valós idejű feldolgozás kell (például eszközadatok, tőzsdei rendszerek, nagy adatfolyamok), és kitűnő skálázhatóságot és hibaizolációt ad. A termelők és a fogyasztók függetlenül fejleszthetők és skálázhatók, és a közvetítő pufferelése segíthet az átmeneti hibáknál.
Mik a költségei?
Ugyanez a leírás kihívásként említi a kézbesítési garanciát, az események sorrendjét és az elosztott komponensek közötti végső konzisztenciát.
Szempont
Hatás
Csatolás
Kisebb futásidejű függés, de az esemény szerződése (típus, azonosító, verzió, jelentés) közös függés marad
Deployolhatóság
Termelő és fogyasztó külön kiadható, ha a séma kompatibilis
Skálázás
A fogyasztók külön skálázhatók
Adatkezelés
Adatmásolatok keletkeznek, és gondozásuk a fogyasztó dolga
Konzisztencia
Végső konzisztencia; a felhasználó saját módosítását is késve láthatja
Hibakezelés
Ismétlés, duplikáció, késői és sorrenden kívüli üzenetek (8. fejezet)
Költség
A folyamat követése, a megfigyelés és a hibakeresés nehezebb
Követhetőség
Event notification esetén a teljes folyamat nem látható egyetlen helyen. Egy új fogyasztó látszólag ártatlan feliratkozása új üzleti visszacsatolást is létrehozhat. Ezért a folyamat követéséhez azonosítókra, megfigyelésre és dokumentált eseményszerződésre van szükség (5.2, 8. fejezet).
Az esemény szerződése
Az eseménynek stabil típusa, azonosítója, sémaverziója és üzleti jelentése legyen. Az időbélyeg nem garantál globális sorrendet. Az adatgazda ne a teljes belső tábláját küldje automatikusan minden változáskor: a publikus esemény az együttműködés szerződése, nem a belső adatbázis tükre. Az esemény vihet teljes adatot (kisebb függés, nagyobb séma) vagy csak azonosítót (kisebb séma, visszakérdezés, vagyis szinkron függés).
Mikor tartsuk meg a szinkron hívást?
Ha azonnali döntés kell (jogosultság, foglalás eredménye), a közvetlen válasz természetes. Az események jól illenek a hosszú feldolgozáshoz és a több önálló reakcióhoz. Nem minden szolgáltatáshívást kell eseményre cserélni, mert az aszinkron működés ára a függő állapot, a késői eredmény és a több helyen követett folyamat (6.2).
Az eseményvezérelt megoldások kompromisszumai
Célok
A lecke végére meg tudod mondani, mikor előnyös az eseményvezérelt szerkezet, milyen költségekkel jár a hét szempont szerint, és mikor érdemes szinkron hívást megtartani.
Miért kell külön?
Az események csábítóak: lazán kapcsoltnak és rugalmasnak látszanak. A költségük viszont nem a termelő oldalán jelentkezik, hanem a rendszer egészének megértésében, az adatok frissességében és az ismétlődő, késő vagy rossz sorrendű üzenetek kezelésében.
Mikor erős?
Az Azure Architecture Center szerint az eseményvezérelt stílus ott kiemelkedő, ahol kis késleltetésű, közel valós idejű feldolgozás kell (például eszközadatok, tőzsdei rendszerek, nagy adatfolyamok), és kitűnő skálázhatóságot és hibaizolációt ad. A termelők és a fogyasztók függetlenül fejleszthetők és skálázhatók, és a közvetítő pufferelése segíthet az átmeneti hibáknál.
Mik a költségei?
Ugyanez a leírás kihívásként említi a kézbesítési garanciát, az események sorrendjét és az elosztott komponensek közötti végső konzisztenciát.
Követhetőség
Event notification esetén a teljes folyamat nem látható egyetlen helyen. Egy új fogyasztó látszólag ártatlan feliratkozása új üzleti visszacsatolást is létrehozhat. Ezért a folyamat követéséhez azonosítókra, megfigyelésre és dokumentált eseményszerződésre van szükség (5.2, 8. fejezet).
Az esemény szerződése
Az eseménynek stabil típusa, azonosítója, sémaverziója és üzleti jelentése legyen. Az időbélyeg nem garantál globális sorrendet. Az adatgazda ne a teljes belső tábláját küldje automatikusan minden változáskor: a publikus esemény az együttműködés szerződése, nem a belső adatbázis tükre. Az esemény vihet teljes adatot (kisebb függés, nagyobb séma) vagy csak azonosítót (kisebb séma, visszakérdezés, vagyis szinkron függés).
Mikor tartsuk meg a szinkron hívást?
Ha azonnali döntés kell (jogosultság, foglalás eredménye), a közvetlen válasz természetes. Az események jól illenek a hosszú feldolgozáshoz és a több önálló reakcióhoz. Nem minden szolgáltatáshívást kell eseményre cserélni, mert az aszinkron működés ára a függő állapot, a késői eredmény és a több helyen követett folyamat (6.2).
flowchart TD Q{"Azonnali válasz kell<br/>a hívónak?"} -->|"Igen"| S["Szinkron kérés–válasz"] Q -->|"Nem"| R{"Több független<br/>reakció kell?"} R -->|"Igen"| E["Esemény"] R -->|"Nem"| K["Parancs, sor"]Gyakori tévhitek
Röviden
Ellenőrző kérdések
Források