12
COMPLEX EVENT PROCESSING: FROM ESPER BACK TO AKKA Alexander Solovyev [email protected]

CEP: from Esper back to Akka

Embed Size (px)

DESCRIPTION

A short presentation for a Scala Meetup. EsterTech Esper and TypeSafe Akka were discussed in the context of Complex Event Processing.

Citation preview

Page 1: CEP: from Esper back to Akka

COMPLEX EVENT PROCESSING: FROM ESPER BACK TO AKKA

Alexander Solovyev [email protected]

Page 2: CEP: from Esper back to Akka

DESCRIPTION OF THE PROBLEM

Complex Event Processing: a method of tracking and analyzing event streams to identify meaningful patterns (such as opportunities or threats) and respond to them as quickly as possible.

Example: changing of…

•  …financial parameters of the client accounts •  e.g. margin level

•  …application parameters / indicators like… •  heartbeats, status of connections •  memory/CPU activity etc.

Page 3: CEP: from Esper back to Akka

ABOUT THE PROJECT IN A NUTSHELL

Monitoring Service

•  built on Scala and Akka •  input - a stream of asynchronous events •  HTTP as a transport

•  output - an alert or alerts in case of a problem

Page 4: CEP: from Esper back to Akka

BASIC TECHNICAL REQUIREMENTS

•  Scala, or Java, or whatever that can run on JVM •  in-process •  open-source

Nice to have: •  declarative DSL is a plus

Page 5: CEP: from Esper back to Akka

AVAILABLE OPTIONS

•  TIBCO StreamBase, Oracle CEP •  commercial

•  Storm •  …not mature at the moment of the choice •  but now might be considered: has a Trident DSL etc.

•  Apache Camel •  more about event routing & transformation •  albeit, http://camel.apache.org/cep.html

•  EsperTech Esper •  meets all the formal requirements •  has a commercial support

Page 6: CEP: from Esper back to Akka

OTHER INTERESTING CANDIDATES

•  Akka Streams •  Drools Fusion •  Pivotal Real-Time Intelligence for Telcos (RTI4T) •  Spark Streaming

Page 7: CEP: from Esper back to Akka

ESPER

Example: absence of heartbeats. Esper Event Processing Language, a bit simplified query:

select * from pattern [ every Event_A -> (timer:interval(10 sec) and not Event_B)]

…then write a simple Esper event listener and we are done. Isn’t it cute? J …wish it was so…

Page 8: CEP: from Esper back to Akka

Margin Level alerting

if within last T seconds margin level is above a given limit during N seconds in sum, than raise the margin level alert.

•  At least three alert levels.

•  No duplicates, no false positives.

MORE COMPLEX EXAMPLE

Page 9: CEP: from Esper back to Akka

ESPER PITFALLS

•  EPL has a steep learning curve •  has at least two dialects •  includes quite a few different built-in “views”, functions etc. •  documentation is a reference book plus a set of samples rather than a

tutorial

•  Unit-testing of actors gets more complicated (due to different groups of threads)

An impact on development, and which is even more important, on maintenance.

Page 10: CEP: from Esper back to Akka

THE ESCAPE Why wouldn’t just use the Akka framework?

•  out-of-box event handling

•  very cheap state: no need to think about thread synchronization etc.

•  timers to introduce notation of time

Indeed this is more verbose, but we get simplicity in lieu. P. S. Erlang experts often choose a similar approach for tasks like being described above – applying of the actor model.

Page 11: CEP: from Esper back to Akka

A NOTE FROM TYPESAFE

There are no technical blockers to use Akka and Esper together. An appropriate template is provided: •  http://typesafe.com/activator/template/akka-with-esper

Page 12: CEP: from Esper back to Akka

THANK YOU

…and your questions J