Follow Us on Twitter

Leid datastromen in goede banen met Complex Event Processing van Oracle

Augustus 2012 - Voor veel organisaties wordt de noodzaak om adequaat en snel (real-time) te acteren op datastromen, die door de bedrijfsprocessen vloeien, steeds groter. Niet alleen neemt de hoeveelheid data almaar toe, ook worden gegevens steeds complexer. Een gedegen, integrale, analyse van deze gegevens is noodzakelijk om juiste vervolgacties te kunnen nemen (en zo concurrerende organisaties voor te blijven).

Door de implementatie van een Event-Driven-Architecture (EDA) kan aan bovenstaande wensen en eisen worden voldaan. Binnen een dergelijke architectuur vormen events de triggers voor gedrag binnen applicaties.

Events zijn gebeurtenissen die hebben plaatsgehad. Hierbij valt bijvoorbeeld te denken aan de creatie van verkooporder, een beursaandeel dat een bepaalde koers bereikt, of temperatuurmetingen in een koelsysteem. Op basis van de kenmerken van een event volgt specifiek applicatiegedrag.

Oracle biedt sinds enige jaren een complete oplossing voor EDA, als onderdeel van de Fusion Middleware-stack. Oracle Event Processing (OEP), voorheen nog Complex Event Prossessing (CEP) genoemd, maakt het mogelijk om een EDA te verwezenlijken. De OEP engine verzorgt het uitvoeren van, potentieel complexe, analyses op datastromen. Hierbij wordt een hoge throughput en zeer lage latency (microseconden) gerealiseerd.

In dit Whitebook wordt dieper ingegaan op de opzet en werking van de Oracle Event Processor. We hanteren hier verder oude productnaam Complex Event Processor of CEP.

Architectuur

Afbeelding 1 toont een vereenvoudigde weergave van een event-driven systeem. De CEP-server en de daarbinnen gedeployede event-driven applicaties vormen de spin in het web. De applicaties acteren op events die zich bevinden in de datastromen waarmee de applicaties worden gevoed. De CEP verwerkt deze vervolgens en biedt de verwerkte gegevens aan zogenaamde 'event sinks' aan. Dit zijn feitelijk alle systemen en consoles die geïnteresseerd zijn in deze output, en hierop derhalve geabonneerd zijn.


Afbeelding 1 – Schematische weergave van een event-driven systeem

De verwerking binnen de CEP-server wordt primair gestuurd door verwerkingsregels. Deze regels worden gedefinieerd in  Continuous Query Language (CQL), een sterk aan SQL verwante taal. Verderop in dit Whitebook is een voorbeeld uitgewerkt waarin CQL wordt gebruikt.

Onder de motorkap

Het hart van de CEP-server wordt gevormd door de JRockit RealTime-jvm. Deze ‘opgevoerde’ versie van JRockit zorgt voor een hoge performance - een hoge doorvoersnelheid van data en een zeer lage wachttijd (latency). Oracle claimt responsetijden van microseconden voor goed getunede applicaties.
De snelheid van JRockit RealTime  is voornamelijk te danken aan het gebruik van deterministic garbage collection.

Componenten binnen een Event-Driven Applicatie

Een event-driven applicatie in CEP-termen bestaat uit een aantal componenten die met elkaar verbonden worden tot een Event Processing Network (EPN). Een EPN geeft in feite de topologie van de applicatie weer. Event Processing Networks kunnen zeer complex van opzet worden. Het is namelijk mogelijk de diverse componenten te 'nesten', wat resulteert in een hiërarchie van verwerkingsstappen. In elke stap kan een willekeurig aantal filters en aggregaties worden geplaatst.
De volgende componenttypen worden onderkend:

Adapters

Adapters zijn direct gekoppeld aan de in- of uitgaande datastromen. Ze zijn zich bewust van de in- en outbound protocollen en vertalen de data naar een genormaliseerd formaat, dat door de processor verwerkt kan worden.

Channels

Channels fungeren primair als queue voor te verwerken event-data, alvorens de opvolgende component in het EPN (bv. een processor of adapter) gereed is om de data te ontvangen en te verwerken.

Processors

Het echte werk wordt gedaan door de processors. Op basis van, met behulp van CQL gedefinieerde, verwerkingsregels wordt event-data hier verwerkt.

(Event) Beans

Voordat verwerkte event-data aan de event-sinks wordt doorgegeven kan hier business logica worden uitgevoerd. Beans binnen de CEP-server worden vaak geïmplementeerd als POJO’s (Plain Old Java Objects).

Event-driven applicaties ontwikkelen met Eclipse

Voor het ontwikkelen van event-driven CEP-applicaties stelt Oracle een plug-in beschikbaar voor de Eclipse IDE.
Als voorbeeld gebruiken we een applicatie die uit een inkomende datastroom events filtert die aan een bepaald criterium voldoen. De inkomende datastroom bevat in onze situatie diverse disciplines van de recente Olympische Spelen in Londen met de medaillewinnaars (land, naam en positie).
Onze applicatie heeft als doel om de Nederlandse medaillewinnaars uit deze stroom te filteren.

Afbeelding 2 toont de applicatie in Eclipse, met het ontworpen EPN:


Afbeelding 2 – Projectstructuur en EPN voor een event-driven applicatie in de Eclipse IDE

We deployen de applicatie vanuit Eclipse naar de CEP-server:

Afbeelding 3 – Deployment van een event-driven applicatie vanuit Eclipse IDE

Om een inkomende datastroom te na te bootsen maken we gebruik van de door Oracle meegeleverde adapter van het type csvgen. Deze adapter loopt oneindig door een aangeboden csv-file waardoor een continue, oneindige datastroom met events wordt gesimuleerd.
De csv-file die we gebruiken ziet er als volgt uit:


 
Afbeelding 4 – Csv-bestand met simulatiedata

Met behulp van de standaard in de CEP-server-installatie aanwezige runloadgen-utility voeden we vervolgens dit bestand aan de applicatie:


Afbeelding 5 – Starten van de runloadgen-utility

De CEP-Visualizer – applicatiebeheer, -monitoring en -tuning

Een geïnstalleerde CEP-server bevat standaard een runtime-console, de CEP Visualizer.
Met behulp van de CEP Visualizer kunnen gedeployede event-driven applicaties beheerd, gemonitord en getuned worden.
Om te zien of onze demo-applicatie correct werkt moeten we de output-stream in de gaten houden.
De gedefinieerde output-adapter alertOutput dient de Nederlandse medaillewinnaars uit de resultaat-datastroom te filteren.

We initiëren een testclient voor de ingebouwde http-server en abonneren ons op het resultaatalert-kanaal:


Afbeelding 6 – Abonneren op events van het resultaatalert-kanaal

Na een druk op de Refresh-button zien we dat de door Nederland behaalde medailles netjes uit de inkomende datastroom worden gefilterd.

Op het tabblad CQL Rules binnen de CEP Visualizer kunnen we de in een processor geïmplementeerde verwerkingsregels bekijken, inclusief het gebruikte CQL-querystatement.

Afbeelding 7 toont de CQL Rules-tab binnen de CEP Visualizer, met de in de voorbeeldapplicatie gebruikte CQL-verwerkingsregel.


Afbeelding – 7 De in de ResultatenProcessor geïmplementeerde CQL-regel

Afsluiting

De Complex Event Processor binnen Oracle EDA Suite kan worden gezien als een robuust middel om een (bijna) real-time verwerking van datastromen te realiseren.

Onder de motorkap zorgt de JRockit RealTime-jvm voor een hoge tot zeer hoge doorvoersnelheid en een zeer lage wachttijd (microseconden).

Door de mogelijkheid tot het creëren van geneste verwerkingsstappen binnen een Event Processing Network (EPN) kunnen zeer geavanceerde verwerkingsregels worden gerealiseerd.

Ontwikkeling van event-driven applicaties gebeurt in hoge mate declaratief binnen Eclipse. Eenmaal gedeployed kunnen de applicaties met behulp van de CEP Visualizer gemonitord, beheerd en getuned worden. Het runtime kunnen aanpassen en definiëren van de verwerkingsregels draagt bij aan de flexibiliteit van het product.

Het volle potentieel van  deze Oracle Fusion Middleware-component kan worden benut in omgevingen waar sprake is van een grote hoeveelheid, continu aangeboden, data die een complexe verwerking dient te ondergaan in een zo kort mogelijke tijd. Het inzetten van de Complex Event Processor binnen het IT-landschap is derhalve  niet voor alle organisaties even noodzakelijk.  Daarentegen kan CEP ook wel degelijk zijn nut bewijzen in EDA’s waar het datavolume, de complexiteit van verwerking en de factor tijd wat minder prominent zijn.

Eén voorbeeld van een bedrijfstak die in hoge mate belang kan hebben bij de inzet van de Complex Event Processor is de financiële sector. CEP  kan bijvoorbeeld bij banken en beleggingsinstanties helpen bij de geautomatiseerde aan- of verkoop van aandelen op basis van specifieke koersontwikkelingspatronen.  

Referenties

Reacties

Ik ben wel benieuwd naar de belangrijkste verschillen met het Event delivery network (EDN) dat je in een SOA Suite composite application kunt gebruiken (d.m.v. publish en subscribe op events). 
En kun je met een SOA Suite composite application ook aansluiten op Oracle CEP?

 

Peter,

Het Event Delivery Network binnen SOA Suite 11g kan worden gezien als de generieke oplossing voor publish/subscribe van business events.

De Complex Event Processing-engine is primair gericht op het (zeer) snel uitvoeren van (potentieel) complexe bewerkingen op event-stromen met een hoog volume.

CEP is derhalve niet zozeer een tegenhanger van EDN, maar kan naast EDN een specifieke rol vervullen binnen SOA Suite 11g.

Vanwege het feit dat OEP een integraal onderdeel vormt van de 11g Fusion Middleware-stack is het prima mogelijk een composite application te laten werken met OEP, zowel aan de leverende als aan de ontvangende kant van de CEP-engine. 

 

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.