On Github mschewe / cep-dsms-presentation
by Christoph Biesinger, Mark Schewe
Crb: Mein Name ist Christop Biesinger, ich studiere Informatik
Msc: Mein Name ist Mark Schewe, ich studiere auch Informatik
Crb: Thema
Msc: Die Fachwelt ist sich bisher uneinig ob CEP die nächste große Revolution der IT-Branche ist
Msc: Nur ein alter Hut, welcher altbekannte Konzepte nur neu zusammen gestellt.
Msc: Um nur einige Konzepte zu nennen Publish/Subscribe oder auch Loose Kopplung von System oder ganz einfach die Asynchrone Verarbeitung von Anfragen
Msc: Auf diese Konzepte werden wir aber zum Teil noch im Verlauf der Präsentation eingehen.
Crb
$ cat /dev/urandom | fancy_processing
Crb
Crb: Reihenfolge beliebig
Crb: potentiell unendlich lang
Crb: nicht moeglich alles zu speichern
Crb: nur kleiner Teil speicherbar
Crb: Keine Exakten Ergebnisse
Crb: begrenzter Speicher + Verarbeitungszeit
Crb: Probleme: zeitkritisch -> Echtzeitsysteme
Crb: verwaltet Aufgaben
Crb: fuehrt Aufgaben aus
Crb: Ergebnisse anhand der Datenstromquelle
Crb: Add/Remove Datenstromquellen
Crb: Add/Remove Anfragen(Query)
Crb: Daemons:
Crb: dynamische Anfrageoptimierer, Speichermanager
Crb: Scheduler(zeitliche Anordnung)
Crb: Eingehend DS, Ausgehend DS
Crb: persistente Daten vs. Fluechtige Datenstroeme
Crb: Zuefaelliger Zugriff vs. Sequentieller Zugriff
Crb: Einmalige Anfragen vs. Kontinuierliche Anfragen
keine oder gerineg Zeitanforderung vs. Echtzeitanforderung
Msc: Kommen wir nun zu dem zweiten großen Thema, Complex Event Processing
Msc: Uns ist es nicht leicht gefallen, die Grenze zwischen CEP und DSMS zu ziehen, aber dies fällt der Fachwelt auch nicht so ganz einfach.
Msc: Im Grunde sind wir der Meinung, dass es einfach historisch gewachsen ist und es zwei unterschiedliche Herangehensweisen an das Thema sind.
Msc: Also stellen wir uns zuerst die Frage was CEP eigentlich ist.
Msc: Früher war Programmieren relativ einfach. Es gab klar definierte Ströme von Programm und Daten.
Msc: Hier in unserem Beispiel sind wir vielleicht ein wenig weit in die Historie zurückgegangen.
Msc: Aber es gab nur das EVA Prizip - Eingabe (hier durch Lochkarten, auf welchen die Daten und das Programm war). Verarbeitung (hier auf einem Mainframe) Ausgabe (hier auf dem Drucker)
Event Processing in Action - Opher Etzion & Peter Niblett (page 22)
Msc: Heute geht der Trend zu hochkomplexen Netzwerken, bei dem über viele Schnittstellen verschiede System miteinander kommunizieren.
Chr: Service Orientated Architecture (Vater dieser Ideen / Request-Response)
Msc: Event Driven Architecture & Complex Event Processing (eher Verarbeitung von Stream)
Bruns, Ralf and Jürgen Dunkel - Event-Driven Architecture
Event Processing in Action - Opher Etzion & Peter Niblett (page 43)
Msc: Die einzelnen Bestandteile eines EPN können als ein DSMS angesehen werden
Event Processing in Action - Opher Etzion & Peter Niblett (page 56)
Event Processing in Action - Opher Etzion & Peter Niblett (page 57)
Event Processing in Action - Opher Etzion & Peter Niblett (page 52)
An event is an occurrence within a particular system or domain; it is something that has happened, or is contemplated as having happened in that domain. The word event is also used to mean a programming entity that represents such an occurrence in a computing system.
Crb: Ereignis = Aktivitaet, Vorgang, Entscheidung
Crb: Etwas, das passiert ist oder evtl. passieren wird
Crb: Zustandsaenderung
Crb: event type/event class
Crb: Klasse gleichartiger Ereignisse
Crb: definiert Attribute (event properties)
Chr: Ereignis Zusammenhaenge
Chr: Die Zeit ordnet Ereignisse auf dem Zeitstrahl.
Chr: E1 verursacht E2
Chr: E1, E2, E3 kennzeichnen EA
Specifies the condition and combination of one or more events
Detection is made with event algebra
Chr: Bedinung und Reihenfolge
Chr: Die Detektion finden mit Hilfe von Event Algebra (boolschen Algebra statt)
A → B
A == B
∧ and ∨
¬
Sequenzoperator
Simultanoperator
Boolsche Operatoren (Schnittmenge und Vereinigungsmenge)
Negationsoperator
Event Processing in Action - Opher Etzion & Peter Niblett (page 63)
Event Processing in Action - Opher Etzion & Peter Niblett (page 83)
Esper
on pattern[every b=BidRequest(storeManual=true)->timer:interval(2 min)] insert into AssignmentManual select d.* from DeliveryBid d where requestId=b. requestId order by ranking desc limit 5;
Apama event processing language
if isAuto then { DeliveryBid db; on DeliveryBid(store=dr.store):db within(ASSIGNMENT_TIME){ assignmentTimer.quit(); route Assignment(dr.requestId, dr.store, db.driver, dr.addresseeLocationPointX, dr.addresseeLocationPointY, db.committedPickUpTime, dr.requiredDeliveryTime); watchForPickUp(dr, db.driver, db.committedPickUpTime); watchForDelivery(dr, db.driver); } }
Crb: Esper:
Crb: 1.Z detect pattern
Crb: 2.Z send event
Crb:Apama
Crb: "on DeliveryBid(.." detect pattern
Crb: "route Assignment(.." send event