Complex Event Processing Sebastian Schmidbauer 18.01.2011 Cirquent im Profil Kompetenzen Zahlen 350 1748 1747 2000 1722 300 1800 1600 1515 250 200 1041 1400 1200 1180 1000 150 247 100 266 286 260 600 165 139 800 400 50 200 0 0 2003 2004 2005 2006 Umsatz in Mio. € 2007 2008 Mitarbeiter Umsatzverteilung Standorte Deutschland Hamburg Köln Frankfurt . . . Ettlingen München (Zentrale) . .. . .. Österreich . Wien Schweiz Zürich Bern UK London Birmingham 2008 Seite 2 Agenda 1 Motivation zu CEP 2 Einsatzgebiete für CEP 3 Realisierung von CEP am Beispiel von Esper 4 Fazit Seite 3 Agenda 1 Motivation zu CEP 2 Einsatzgebiete für CEP 3 Realisierung von CEP am Beispiel von Esper 4 Fazit Seite 4 Die Wal-Mart Story ? | Seite 5 Seite 5 Was ist CEP? Erkennen eines Vorgangs anhand verschiedener Ereignisse ? ! Seite 6 Was kann/ermöglicht CEP im Allgemeinen? Mustererkennung, d.h. Suchen nach bestimmten zuvor definierten Eventkonstellationen (Complex Events) auf multiplen Eventstreams in Echtzeit. Einteilung der Messabschnitte in Fenster (Zeitfenster / Längenfenster) Algo Trading (Algorithmische Funktionen wie min, max, avg, etc.) über Millionen von Events hinweg in Echtzeit. Abgleich Messwerte mit historischen Daten Reagieren auf komplexe Situationen in Echtzeit Seite 7 Abgrenzungen Bekannt ist es (noch) nicht: CEP in der Gartner Hype Cycle Sichtbarkeit Web Services BPM CEP SOA Zeit Technischer Auslöser Übertriebene Erwartungen Ernüchterung Aufklärung Produktivität Seite 8 Agenda 1 Motivation zu CEP 2 Einsatzgebiete für CEP 3 Realisierung von CEP am Beispiel von Esper 4 Fazit Seite 9 Anwendungsbeispiel: Fraud Case Management – Gartner Inc. Kreditkartenbetrug im Internet ist mittlerweile viermal so hoch wie im „Real Life“ Traditionelle Bekämpfungsmethoden sind meist zeitaufwendig und ineffektiv, da große Datenmengen bewältigt werden müssen CEP ermöglicht Betrugsbekämpfung Online/Offline, kundenübergreifend und in Echtzeit Überwachung sämtlicher Transaktionen und Vergleich mit bekannten verdächtigen Ablaufmustern und Verhaltensweisen Sofortige Gegenmaßnahmen wie z.B. Transaktion ablehnen, Konto sperren oder manuelle Nachverfolgung einleiten Seite 10 Anwendungsbeispiel: Automatisierter Aktienhandel Liegt der Preis einer Aktie über dem Durchschnitt der letzten zehn Sekunden? Analyse riesiger Datenströme bestehend aus einzelnen Börseninformationen Reagieren auf Kursschwankungen in Millisekunden Automatisiertes Ausführen von Kauf- oder Verkaufsaktionen in Echtzeit Verwendung mathematischer Algorithmen (Algo Trading) Seite 11 Agenda 1 Motivation zu CEP 2 Einsatzgebiete für CEP 3 Realisierung von CEP am Beispiel von Esper 4 Fazit Seite 12 Was ist Esper ? Bei Esper handelt es sich um eine codehaus Implementierung einer CEPEngine Die Esper Engine ist frei verfügbar Eine EsperHA (High Availability) Version sowie diverse andere kostenpflichtige Versionen können kommerziell erworben werden Erhältlich für Java und .NET (Nesper) http://esper.codehaus.org Seite 13 Esper Architektur Seite 14 Was bietet Esper ? Eine an SQL angelehnte Event Processing Language (EPL) zur Datenstromanalyse Pattern Matching zur Mustererkennung Einteilung der Messabschnitte in Fenster (Zeitfenster / Längenfenster) Algorithmische Funktionen (Algo Trading) avg min max count etc. Verarbeitung von POJO, Node oder Map Objekten Seite 15 Die Esper EPL Alle Events, die von der Esper Engine behandelt werden sollen, müssen zuerst registriert werden Auf ein unter dem Namen „Fonds“ registriertes Event kann anschließend einfach über die EPL zugegriffen werden select avg(price) from Fonds where isin = “LU0123456789“ Soll nach Ausführung eines EPL Statements eine Operation folgen, kann das Statement mit einer Listenerklasse verknüpft werden. Ein Listener kann beliebige Implementierungen enthalten Seite 16 Datenströme Die von der Engine behandelten Events werden in Streams abgelegt Bei Insert Streams werden nur aktuelle Events an die Listener gemeldet Bei Remove Streams werden sowohl die aktuellen als auch die ausscheidenden Events an die Listener gemeldet Seite 17 Längenfenster Ein Längenfenster enthält eine zuvor konfigurierte Anzahl an Events select min(price) from Fonds.win:length(5) where isin = “LU0123456789“ Seite 18 Zeitfenster Ein Zeitfenster enthält alle Events über eine konfigurierte Zeitspanne select isin, count(*) as count from Fonds.win:time(4 sec) group by isin output all every 4 seconds order by isin Seite 19 Batch Fenster Ein Batch Fenster übergibt nach Eintreffen einer bestimmten Anzahl Events (Length Batch) oder nach Verstreichen einer bestimmten Zeitspanne (Time Batch) alle betroffenen Events an den Listener select sum(amount) as amount from Order.win:time_batch(5 sec) Seite 20 Joinen von Datenströmen Zu Identifizierung von Eventkonstellationen, die sich nicht nur auf einen Datenstrom beschränken, können Joins über eine beliebige Anzahl von Datenströmen definiert werden select Stream1.* from Stream1.win:time(1 min), Stream2.win:time(1 min) where Stream1.UserId = Stream2.UserId Seite 21 Pattern Matching (Mustererkennung) select * from pattern[every a=ObjectA -> b=ObjectB -> c=ObjectC] select * from pattern[not a=Order -> b=OrderBestaetigung(orderid = a.orderid) where timer:within(10 min)]] Esper unterstützt verschiedene Patterns, die z.B. zur zeitlichen Steuerung oder zur Reihenfolgekontrolle verwendet werden können Seite 22 Agenda 1 Motivation zu CEP 2 Einsatzgebiete für CEP 3 Realisierung von CEP am Beispiel von Esper 4 Fazit Seite 23 Fazit - CEP CEP ermöglicht es, komplexe Sachverhalte „sichtbar“ zu machen Eventbasierte Systeme können mittels CEP überwacht bzw. gesteuert werden CEP macht Geschäftsprozesse transparent Mittels CEP können beliebig komplexe „reale“ Ereignisse modelliert und auf die IT-Welt übertragen werden Seite 24 Fazit - Esper Der Open-Source-Kernel ist sehr ausgereift und erfüllt alle Anforderungen an eine CEP Engine Esper kann hinreichend generische Daten zur Weiterverarbeitung liefern Esper kann gut und einfach in bestehende Anwendungslandschaften integriert werden, da Open Source (Java, .NET) Die Esper Modellierungssprache (EPL) ist einfach erlernbar und ähnelt sehr der Datenbankabfragesprache SQL Auch Nicht-IT-Experten ist es möglich, mit Esper komplexe Events zu definieren Seite 25 Kontaktdaten Sebastian Schmidbauer Senior Consultant Cirquent GmbH Königsbergerstr. 29 60487 Frankfurt a.M. Telefon +49 69 97261-257 Fax +49 69 97261-70 Mobil +49 172 6968 791 [email protected] www.cirquent.de Seite 26