Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

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

on

  • 1,012 views

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 ...

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 esses padrões acontecem permitindo agir de acordo estes 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

Statistics

Views

Total Views
1,012
Slideshare-icon Views on SlideShare
1,008
Embed Views
4

Actions

Likes
0
Downloads
9
Comments
0

2 Embeds 4

http://www.linkedin.com 3
https://www.linkedin.com 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Esper
      Framework de Processamento de eventos
      Nuno
    • 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
    • Agenda
      • Eventos
      • Processamento de eventos
      • Esper / NEsper (.NET)
      • Resumo / Mais informação
      • Questões
    • 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
    • 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.
    • 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
    • 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...
    • 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)
    • 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 * fromCotacao (valor > 13.4).win:length(5)
      Selecciona os últimos 5 eventos do tipo “Cotacao” com valor > 13.4
      insert intoCotacoesImportantesselect * fromCotacaowhere 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
    • 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)
      }
      }
    • 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 ());
    • 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);
      ...
    • Potencialidades
      • Filtrar eventos
      // filtra por localização de um rectângulo
      select * from EVT (x in [4:10], y in [6:12])
      • Janelas temporais
      // conta todas a presenças na zona 10 nos últimos 30 segundos
      select count(*) from EVT (zona = 10).win:time(30 sec)
      • Agregação e contagem temporal
      // 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
      • Joins
      // 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
    • Potencialidades
      • Obtenção de dados históricos ou de referência
      // 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(*)
      • Subqueries
      // detecta ids desconhecidos
      select * from EVT
      where id not in
      (select id
      fromIdsConhecidos.std:unique(‘id’))
    • 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
    • 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
    • Diagrama
      evento
      evento
      evento
      evento
      evento
      Esper
      OFF
      ON
      match1
      match2
      select ...
      select ...
      select ...
      select ...
    • Mais informação
      Esper - http://esper.codehaus.org
      EsperTech - http://www.espertech.com
      Portal CEP - http://complexevents.com
      Google 
    • Questões
      Nuno