Esper
Framework de Processamento de eventos
Nuno
Processamento de eventos com Esper
2010/062/19
Sobre mim
• Trabalho numa empresa que faz localização de viaturas
em tempo ...
Processamento de eventos com Esper
2010/063/19
Agenda
- Eventos
- Processamento de eventos
- Esper / NEsper (.NET)
- Resum...
Processamento de eventos com Esper
2010/064/19
Eventos
• Um evento caracteriza a alteração de um estado. Pode
ser:
– Uma c...
Processamento de eventos com Esper
2010/065/19
Processamento de eventos
• Estamos habituados a guardar a informação e depo...
Processamento de eventos com Esper
2010/066/19
Requisitos para o processamento de eventos
• Eventos podem estar relacionad...
Processamento de eventos com Esper
2010/067/19
Definições
• ESP – Event Stream Processing
– Processamento de fluxos de eve...
Processamento de eventos com Esper
2010/068/19
Esper / NEsper
• Motor de ESP/CEP
– Quando condição_Esper então o_código_ja...
Processamento de eventos com Esper
2010/069/19
Exemplos
• As “queries” e as condições são definidas com o recurso
a uma li...
Processamento de eventos com Esper
2010/0610/19
Criar Listeners (classe Listener)
import net.esper.client.*;
public class ...
Processamento de eventos com Esper
2010/0611/19
Registar Listeners
import net.esper.client.*;
// get da instância do motor...
Processamento de eventos com Esper
2010/0612/19
Registar eventos
import net.esper.client.*;
// get da instância do motor
E...
Processamento de eventos com Esper
2010/0613/19
Potencialidades
// filtra por localização de um rectângulo
select * from E...
Processamento de eventos com Esper
2010/0614/19
Potencialidades
// alerta para quando for atingido o valor mínimo para uma...
Processamento de eventos com Esper
2010/0615/19
Especificações
• Tipos de eventos
– POJO
– Legacy Java
– Propriedades anin...
Processamento de eventos com Esper
2010/0616/19
Sumário
• CEP/ESP
- Fluxos de dados avaliados contra as “queries” registad...
Processamento de eventos com Esper
2010/0617/19
Diagrama
Esper
OFFON
select ...select ...select ...
eventoeventoeventoeven...
Processamento de eventos com Esper
2010/0618/19
Mais informação
• Esper - http://esper.codehaus.org
• EsperTech - http://w...
Processamento de eventos com Esper
2010/0619/19
Questões
Nuno
Upcoming SlideShare
Loading in …5
×

Framework (N)Esper @ PT.JUG 2010/06

370
-1

Published on

Num sistema de informação, em alguns contextos, é necessário processar muita informação de forma constante e em simultâneo. Uma das formas de tratamento desta informação é caracterizando-a por tipos e identificando padrões. Isto permite intervir sempre que os padrões acontecem permitindo agir de acordo com isso de forma automática. Uma abordagem possível é a utilização de uma framework que englobe estes conceitos e que permita tratar a informação de forma autónoma e automática. A framework (N)Esper permite isso mesmo, com garantia de fiabilidade e performance, não descurando a facilidade de utilização e configuração. Em consequência da configuração efectuada, os padrões são identificados e os respectivos subscritores são notificados permitindo assim agir em conformidade, nos mais variados sistemas, quando esse padrão ocorre. A framework apresentada concretiza estes paradigmas de forma intuitiva e de fácil implementação. Uma abordagem tradicional com uma base de dados relacional não seria tão eficaz como demonstrado pela plataforma. Estes slides mostram uma descrição da framework e alguns exemplos. Foram apresentados num talk num evento do PT.JUG em Junho de 2010

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
370
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Framework (N)Esper @ PT.JUG 2010/06

  1. 1. Esper Framework de Processamento de eventos Nuno
  2. 2. Processamento de eventos com Esper 2010/062/19 Sobre mim • Trabalho numa empresa que faz localização de viaturas em tempo real • Desenvolvo em Java desde 2001 • Tenho particular interesse em tudo o que “flutua” em torno do Java • Entusiasta de desenvolvimento em geral
  3. 3. Processamento de eventos com Esper 2010/063/19 Agenda - Eventos - Processamento de eventos - Esper / NEsper (.NET) - Resumo / Mais informação - Questões
  4. 4. Processamento de eventos com Esper 2010/064/19 Eventos • Um evento caracteriza a alteração de um estado. Pode ser: – Uma cotação – O acknowlegde de um pagamento – Uma alteração de password – A medição de um sensor de pressão a cada 30 segundos – O tempo de resposta de um serviço • Pode ser representado por: – XML – POJO (Plain Old Java Object) – Pares chave/valor
  5. 5. Processamento de eventos com Esper 2010/065/19 Processamento de eventos • Estamos habituados a guardar a informação e depois executar queries para a obter e agir quando detectamos determinado padrão • No processamento de eventos a filosofia é diferente: Criamos as condições que queremos identificar e depois injectamos os dados no motor de eventos de forma a sermos notificados de quando determinada condição for identificada. Ou seja, primeiro definimos as “queries” e só depois introduzimos informação.
  6. 6. Processamento de eventos com Esper 2010/066/19 Requisitos para o processamento de eventos • Eventos podem estar relacionados: – Temporalmente – Ordem – Casualidade (aconteceu antes/depois) – ... • Fluxos de eventos – Grande fluxo, alta disponibilidade • Eventos alteram o seu estado frequentemente – Baixa latência de processamento • Quando A então B – Utilização fácil e intuitiva
  7. 7. Processamento de eventos com Esper 2010/067/19 Definições • ESP – Event Stream Processing – Processamento de fluxos de eventos • Faz a monitorização de dados de eventos, analiza-os e age em conformidade • ex: valor médio das acções da Brisa nos últimos 30 minutos • CEP – Complex Event Processing – Detecção de padrões dentro do(s) fluxo(s) de eventos • Detecta padrões nas relações entre os eventos do(s) fluxo(s) • ex: se as acções da Brisa subirem mais de 2% duas vezes, seguidas da descida de 3% das da Galp Energia, então... • Quando condição ESP/CEP então...
  8. 8. Processamento de eventos com Esper 2010/068/19 Esper / NEsper • Motor de ESP/CEP – Quando condição_Esper então o_código_java_habitual – Tem um footprint pequeno – É muito “ágil” tornando-se muito fácil de incluir no código existente – É open source (também existe a versão enterprise) – Junta o melhor dos dois mundos: ESP e CEP • Informação sobre a framework – A primeira release foi em Junho de 2006 (iniciou-se em Outubro de 2004) – NEsper (versão para .NET) - igual à versão Java – Versão Enterprise (cliente Web, monitorização de eventos, extensões JMX, EsperJDBC, suporte técnico, etc)
  9. 9. Processamento de eventos com Esper 2010/069/19 Exemplos • As “queries” e as condições são definidas com o recurso a uma linguagem semelhante ao que estamos muito habituados: SQL – exemplos: select * from Cotacao (valor > 13.4).win:length(5) Selecciona os últimos 5 eventos do tipo “Cotacao” com valor > 13.4 insert into CotacoesImportantes select * from Cotacao where Math.ceil (valor) > 13.4 Insere numa tabela virtual todas as “Cotações” em que o valor seja superior a 13.4 select conta, nome_conta, sum(valor) from Cotacao.win:time_batch(10 sec) group by conta Selecciona a soma dos valores das “Cotações”, agrupados por conta
  10. 10. Processamento de eventos com Esper 2010/0610/19 Criar Listeners (classe Listener) import net.esper.client.*; public class MyListener implements UpdateListener { // método invocado pelo motor public void update (EventBean[] newEvents, EventBean[] oldEvents) { // processamento do(s) evento(s) } }
  11. 11. Processamento de eventos com Esper 2010/0611/19 Registar Listeners import net.esper.client.*; // get da instância do motor EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(); // regista um statement EPStatement statement = engine.getEPAdministrator().createEPL (“sql_statement“, “nome_statement”); // adiciona um listener statement.addListener(new MyListener ());
  12. 12. Processamento de eventos com Esper 2010/0612/19 Registar eventos import net.esper.client.*; // get da instância do motor EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider (); // regista um statement EPRuntime runTimeEngine = engine.getRuntime(); ... Cotacao evento = new Cotacao (12345, “conta_1”, 13.4); runTimeEngine.sendEvent (evento); ...
  13. 13. Processamento de eventos com Esper 2010/0613/19 Potencialidades // filtra por localização de um rectângulo select * from EVT (x in [4:10], y in [6:12]) // conta todas a presenças na zona 10 nos últimos 30 segundos select count(*) from EVT (zona = 10).win:time(30 sec) // conta as presenças por zona nos últimos 10 minutos, a cada minuto select zona, count(*) as cnt from EVT.std:groupby(zona).win:time(10 min) output every 1 min // detecta quando ocorre uma entrada na zona 2 antes da zona 1 select Zona2.id from EVT(zona = 2).win:time(1 day) Zona2 left outer join EVT(zona = 1).win:time(1 day) Zona1 on Zona1.id = Zona2.id where Zona1.id is null • Filtrar eventos • Janelas temporais • Agregação e contagem temporal • Joins
  14. 14. Processamento de eventos com Esper 2010/0614/19 Potencialidades // alerta para quando for atingido o valor mínimo para uma zona select zona, count(*) from EVT.std:unique(id), sql:db[select mini from Minimum where zone=${EVT.zona}] having mini < count(*) • Obtenção de dados históricos ou de referência // detecta ids desconhecidos select * from EVT where id not in (select id from IdsConhecidos.std:unique(‘id’)) • Subqueries
  15. 15. Processamento de eventos com Esper 2010/0615/19 Especificações • Tipos de eventos – POJO – Legacy Java – Propriedades aninhadas (sem limite de profundidade), indexadas ou mapeadas (E4X – ECMAScript for XML) – XML/DOM + XPath • Performance (anunciada) – Mais de 500 000 eventos por segundo numa máquina com processador Dual Core a 2GHz com 1000 condições registadas no motor – Latência inferior e 3 microsegundos – Evolução linear entre os 100 000 e os 500 000 eventos por segundo neste hardware
  16. 16. Processamento de eventos com Esper 2010/0616/19 Sumário • CEP/ESP - Fluxos de dados avaliados contra as “queries” registadas despoletando listeners - Tempo e casualidade • Vantagens - EPL (Event Processing Language): tipo SQL e fácil de aprender - Footprint pequeno - Fácil de incluir em código existente - Bem documentada • EDA (Event Driven Application) - Ajuda a resolver muitos dos problemas desta abordagem - Tecnologia um pouco desconhecida, sendo pouco vista, mas com maturidade suficiente para ser largamente utilizada
  17. 17. Processamento de eventos com Esper 2010/0617/19 Diagrama Esper OFFON select ...select ...select ... eventoeventoeventoeventoevento match1match2 select ...
  18. 18. Processamento de eventos com Esper 2010/0618/19 Mais informação • Esper - http://esper.codehaus.org • EsperTech - http://www.espertech.com • Portal CEP - http://complexevents.com • Google 
  19. 19. Processamento de eventos com Esper 2010/0619/19 Questões Nuno
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×