Érdekes

Mit jelent az, hogy “Esemény-Vezérelt”?

Eredeti Martin Fowler az https://martinfowler.com/articles/201701-event-driven.html

Készült 17.08.2017

A vége felé a tavaly részt vettem egy műhely kollégáimmal ThoughtWorks, hogy megvitassák a természet “esemény-vezérelt” alkalmazások. Az elmúlt néhány évben építettünk sok rendszerek sokat használja az események, már gyakran dicsérte, gyakran átkozott. Az Észak-Amerikai iroda szervezett csúcstalálkozó, ThoughtWorks vezető fejlesztők a világ minden tájáról jöttek, hogy osszák meg ötleteiket.

A legnagyobb eredmény a csúcson volt, felismerve, hogy amikor az emberek arról beszélnek, hogy “esemény”, akkor valójában azt jelenti, hogy valami egészen más dolog. Így töltöttünk sok időt akar ugratni, amit néhány hasznos mintákat lehet. Ez a megjegyzés egy rövid összefoglaló a legfontosabbak azonosítottuk.


Esemény Értesítés

Ez történik, amikor a rendszer elküldi az esemény üzeneteit, hogy értesítse más rendszerek a változás, a domain. Kulcsfontosságú eleme esemény értesítést, hogy a forrás rendszer nem igazán érdekel a válasz. Gyakran nem várok választ, vagy ha van egy válasz, hogy a forrás nem érdekel, csak közvetett. Lenne egy jelentős távolságot a logika flow, hogy elküldi az esemény, valamint a logika flow, hogy válaszol néhány reakció, hogy ez az esemény.

Esemény értesítést, az jó, mert azt jelenti, hogy alacsony szintje a csatlakozó, és nagyon egyszerű beállítani. Válhat azonban problematikus, ha tényleg van egy logikus flow fut át különböző esemény értesítést. A probléma az, hogy nehéz lehet egy ilyen áramlási nem kifejezett bármely program a szöveget. Gyakran az egyetlen módja, hogy rájöjjek, ez az áramlás a monitoring egy élő rendszer. Ez lehet, hogy nehéz, hogy a hibakeresés, módosítás ilyen áramlását. A veszély az, hogy nagyon könnyű, hogy szépen független rendszerek esemény értesítést, anélkül, hogy szem elől tévesztenénk, hogy a nagyobb léptékű áramlását, így be magad a baj az elkövetkező években. A minta még mindig nagyon hasznos, de óvatosnak kell lenni, a csapda.

Egy egyszerű példa erre a csapda az, amikor egy esemény használni, mint egy passzív-agresszív parancsot. Ez akkor történik, amikor a forrás rendszer elvárja, hogy a címzett elvégezni a műveletet, majd az kellene, hogy egy parancsot, üzenetet mutatják, hogy a szándék, de a stílus az üzenet, mint egy esemény helyett.

Egy esemény, nem kell cipelni a sok adat, gyakran csak néhány azonosítóját, valamint egy linket vissza a feladónak, hogy le lehet kérdezni a további információkért. A vevő tudja, hogy valami megváltozott, talán egy minimális információt, a természet, a változás, de akkor kérést bocsát ki, vissza a feladónak eldönteni, hogy mi legyen a következő lépés.

Esemény-Sor Állami Transzfer

Ez a minta mutatja, amikor szeretné frissíteni az ügyfelek a rendszer oly módon, hogy nem kell felvenni a kapcsolatot a forrás rendszer annak érdekében, hogy a további munkához. Egy ügyfél irányítási rendszer lehet, hogy tűz ki, események, amikor egy ügyfél változások a részleteket (például cím) események részletes adatait tartalmazza az adatokat, hogy megváltozott. A címzett vissza tudja majd frissíteni a saját példányát, ügyfél adatok, a változások, úgy, hogy nem kell beszélni, hogy a fő vásárlói rendszer, annak érdekében, hogy működjön a jövőben.

Nyilvánvaló le-oldalán ez a minta, hogy sok adat schlepped körül sok példányban. De ez kisebb problémát jelent, egy olyan korban, bőséges tároló. Mit nyerünk, nagyobb rugalmassága, mivel a címzett rendszerek a funkciót, ha az ügyfél a rendszer elérhetetlenné válik. Mi csökkenti a késleltetést, mivel nincs távoli hívás eléréséhez szükséges ügyfél-tájékoztatás. Nem kell aggódnia a terhelést az ügyfél rendszer kielégíteni lekérdezések a fogyasztói rendszerek. De lesz benne több komplexitás a vevő, mivel rendezni fenntartása, mind az állam, amikor általában könnyebb, csak felhívni a feladó további információk, ha szükséges.

Esemény-Beszerzés

Az alapvető ötlet az esemény beszerzés az, hogy ha egy változás, hogy az állami rendszer rögzítjük, hogy az állam megváltoztatni, mint egy esemény, akkor magabiztosan újjáépíteni a rendszer állam által újrafeldolgozás az események bármikor a jövőben. Az esemény bolt válik a fő forrása az igazság, a rendszer állami pusztán származik. A programozók, a legjobb példa erre a verzió-ellenőrzési rendszer. A napló minden követ el az az esemény, tárolni, illetve a működő példányt a forrás a fa a rendszer állapotáról.

Esemény-beszerzés bevezet egy csomó kérdést, ami nem mennék bele itt, de szeretnék kiemelni néhány gyakori tévhitek. Nincs szükség esemény feldolgozás aszinkron, vegyük azt az esetet, frissítése a helyi git repository – ez teljesen egy szinkron működés, mint frissítése egy központi változat-ellenőrzési rendszer, mint a subversion. Biztos, hogy az összes követ lehetővé teszi, hogy mindenféle érdekes viselkedés, git a nagy példa, de a core elkövetni alapvetően egy egyszerű művelet.

Egy másik gyakori hiba, hogy azt feltételezem, hogy mindenki használja esemény forrású rendszert kell érteni, valamint a hozzáférés az eseménynapló, hogy meghatározza hasznos adatok. De a tudás, az esemény napló korlátozott lehet. Írok a szerkesztő, hogy a tudatlan minden követ el az a forrás, fa, csak azt feltételezi, hogy van egy fájl a lemezen. A feldolgozás egy esemény forrású rendszer alapja lehet egy hasznos működő példányt. Egyetlen elem, ami igazán kell, az információ, az esemény napló kellett volna, hogy manipulálják. Mi több dolgozó másolatok a különböző séma, ha ez segít; de általában kell lennie egy világos, szétválasztásának domain-feldolgozás, valamint származó egy működő példányt a eseménynapló.

Amikor dolgozik egy esemény napló, gyakran hasznos építeni pillanatképek a működő példányt, így nem kell, hogy feldolgozza az eseményeket, a semmiből minden alkalommal, amikor szüksége van egy működő példányt. Valóban van egy kettősség itt van, nézd meg a napló, mint akár egy lista a változásokról, vagy ahogy államok listáját. Tudjuk levezetni az egyik, mint a másik. Verzió-ellenőrzési rendszerek gyakran összekeverik a pillanatképek, a delták, a eseménynapló annak érdekében, hogy a lehető legjobb teljesítményt. [1]

Esemény-beszerzés sok érdekes előnyöket, amelyek könnyen jutott eszembe, amikor arra gondoltam értékének változat-ellenőrzési rendszerek. Az eseménynapló rendelkezik egy erős ellenőrzési részleg (számviteli tranzakciók esemény forrás számla egyenlegét). Újra tudjuk teremteni a történelmi államok által visszajátszása az eseménynapló egy bizonyos pontig. Felfedezhetjük az alternatív történetek befecskendezésével feltételezett események, amikor visszajátszása. Esemény beszerzés hihető legyen, hogy a nem-tartós dolgozik másolatok, mint egy Emlék-Kép.

Esemény beszerzése van a probléma. Visszajátszása események problematikus, amikor az eredmények függnek kölcsönhatások kívül rendszerek. Ki kell találnunk, hogyan kell kezelni a változásokat a séma az események. Sokan úgy találják, hogy az esemény feldolgozása hozzáteszi, sok a komplexitás, hogy egy alkalmazás (bár nem csoda, ha többet miatt szegény távolságot az összetevők, hogy ebből egy működő példányt, alkatrészek, amelyek a domain-feldolgozás).

CQRS

Parancs Lekérdezés Felelősséget a Szegregáció (Command Query Responsibility Segregation – CQRS) az az elképzelés, hogy külön adatszerkezetek az írás-olvasás információkat. Szigorúan CQRS nem igazán eseményekről, mivel használhatja CQRS nélkül események jelen a design. De általában az emberek összekapcsolják a CQRS a korábbi mintákat, ezért jelenlétük a csúcstalálkozón.

Az indoklás a CQRS, hogy a komplex terület, az egyetlen modellt, hogy elbírjon olvas, ír, túl bonyolult, lehet egyszerűsíteni elválasztja a modellek. Ez különösen vonzó, ha van egy különbség hozzáférés minták, mint például a sok olvas, nagyon kevés írja. De a nyereség segítségével CQRS lehet kiegyensúlyozott ellen a további bonyolítja, hogy külön-külön modellek. Én meg sok kollégám nagyon óvatos használata CQRS, megtalálni gyakran visszaélnek.

Értelme az, ezeket a mintákat

Mint egyfajta szoftver botanikus, lelkes, hogy mintákat gyűjtsön, ez egy nehéz terepen is. A fő probléma az, zavaros a különböző mintákat. Az egyik projekt a hozzáértő, tapasztalt, a projekt menedzsere elmondta, hogy az esemény beszerzés egy katasztrófa volt – bármilyen változás nem történt meg kétszer a munka frissíteni mind az írni-olvasni modellek. Csak ez a mondat azt észleli, hogy egy esetleges félreértések között esemény-beszerzés, CQRS – szóval hogyan lehet kitalálni, hogy melyik volt a tettes? A műszaki vezető a projekt azt állította, hogy a fő probléma az volt, sok aszinkron kommunikáció, minden bizonnyal ismert, komplexitás-emlékeztető, de nem egy szükséges része vagy esemény-beszerzés vagy CQRS. Továbbá vigyáznunk kell, hogy ezek a minták jó, jó helyen, rossz, ha tedd a rossz terep. De nehéz kitalálni, hogy mi a jó a terep, amikor összemossa a tényleges a mintákat.

Szeretnék írni egy végleges értekezés, amely rendezi a zűrzavar, ad szilárd irányelvek, hogy hogyan kell csinálni minden egyes minta nos, amikor azt kell használni. Sajnos nincs idő, hogy csináld. Én írom ezt a levelet, abban a reményben, hogy hasznos lesz, de nem vagyok egészen tisztában azzal, hogy ez jócskán elmarad, mi szükség van rá.

Lábjegyzetek

1: En néha hallom, hogy az emberek azt mondják, hogy git nem egy példa esemény beszerzés, mert üzletek államok fájlokat, valamint a fák .git/tárgyak. Hanem az, hogy egy rendszert használ, a változások, vagy pillanatképek a belső tárhely nem befolyásolja-e ez az esemény forrása. Git boldogan fog megidézni egy listát a változásokat a kereslet. Amikor tömöríti az adatokat a packfiles, a kombinációját használja pillanatképek változik, a mix kiválasztott teljesítménybeli indokok miatt.

 

Vissza a főoldalra