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
Node.js - #2 - Sistema de Módulos - Rodrigo BranasRodrigo Branas
O documento discute o sistema de módulos no Node.js, explicando como criar e exportar módulos e como utilizá-los através da função require. É explicado que módulos podem exportar funções, objetos ou classes e serem localizados em pastas locais ou na pasta node_modules através do algoritmo de busca da função require.
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
O documento discute escopo e variáveis globais em Node.js. Ele explica que variáveis definidas dentro de um módulo são privadas, e mostra como criar variáveis globais usando o objeto global ou definindo variáveis em um módulo separado e requisitando-o.
O documento explica como calcular o número máximo de sub-redes e hosts em cada sub-rede usando bits "emprestados" da máscara de rede. Os bits emprestados são usados como expoente de 2 para encontrar o número de sub-redes, e os bits restantes são usados como expoente de 2 para encontrar o número de hosts por sub-rede. Uma tabela é montada com os números de rede, primeiro host, último host e broadcast de cada sub-rede.
Desenvolvendo interfaces ricas em java fx para ultrabook finalFelipe Pedroso
O documento discute o desenvolvimento de interfaces ricas para toque em JavaFX para Ultrabooks, abordando o tratamento de eventos de toque, gestos e uso de sensores por meio de JNI. Ele apresenta recursos de Ultrabooks, componentes de interface do usuário em JavaFX e sensores disponíveis, além de explicar como acessar sensores usando APIs do Windows e JNI.
O documento discute processos no Node.js, incluindo como obter informações sobre o processo atual, lidar com streams de entrada e saída, e tratar eventos como exit e uncaughtException.
The document describes a system called HOLMES that uses complex event processing (CEP) and machine learning to monitor data centers. It analyzes streams of events using CEP to detect known problems and an anomaly detection algorithm to find unknown issues. A visualization module provides real-time dashboards and historical views of events. The system was successfully implemented and accepted in a large production environment.
Node.js - #2 - Sistema de Módulos - Rodrigo BranasRodrigo Branas
O documento discute o sistema de módulos no Node.js, explicando como criar e exportar módulos e como utilizá-los através da função require. É explicado que módulos podem exportar funções, objetos ou classes e serem localizados em pastas locais ou na pasta node_modules através do algoritmo de busca da função require.
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
O documento discute escopo e variáveis globais em Node.js. Ele explica que variáveis definidas dentro de um módulo são privadas, e mostra como criar variáveis globais usando o objeto global ou definindo variáveis em um módulo separado e requisitando-o.
O documento explica como calcular o número máximo de sub-redes e hosts em cada sub-rede usando bits "emprestados" da máscara de rede. Os bits emprestados são usados como expoente de 2 para encontrar o número de sub-redes, e os bits restantes são usados como expoente de 2 para encontrar o número de hosts por sub-rede. Uma tabela é montada com os números de rede, primeiro host, último host e broadcast de cada sub-rede.
Desenvolvendo interfaces ricas em java fx para ultrabook finalFelipe Pedroso
O documento discute o desenvolvimento de interfaces ricas para toque em JavaFX para Ultrabooks, abordando o tratamento de eventos de toque, gestos e uso de sensores por meio de JNI. Ele apresenta recursos de Ultrabooks, componentes de interface do usuário em JavaFX e sensores disponíveis, além de explicar como acessar sensores usando APIs do Windows e JNI.
O documento discute processos no Node.js, incluindo como obter informações sobre o processo atual, lidar com streams de entrada e saída, e tratar eventos como exit e uncaughtException.
The document describes a system called HOLMES that uses complex event processing (CEP) and machine learning to monitor data centers. It analyzes streams of events using CEP to detect known problems and an anomaly detection algorithm to find unknown issues. A visualization module provides real-time dashboards and historical views of events. The system was successfully implemented and accepted in a large production environment.
Complex Event Processing in Practice at jDays 2012Peter Norrhall
This document discusses complex event processing (CEP) and different CEP frameworks. It provides an introduction to CEP, describes event stream analysis and patterns in CEP. It also demonstrates CEP using Esper and Storm through word count examples. Key frameworks discussed are Esper, Storm, and Disruptor. The document shows how Esper can be used to define event types, statements, and listeners to perform event processing and aggregation. It also compares performance of Esper, Storm and Disruptor on word count processing.
This document provides an overview of complex event processing (CEP) and Esper, an open source CEP engine. It defines CEP as analyzing and controlling interrelated events to understand modern distributed systems. Esper makes it easier to build CEP applications by providing an event processing language (EPL) to define event types, continuous queries, and event patterns similar to SQL. It supports features like filtering, aggregation, windows, correlations, and pattern detection on streaming event data. While powerful, Esper has limitations around memory usage, resilience, and distribution that must be considered.
Complex Event Processing - A brief overviewIstván Dávid
This document provides an overview of complex event processing (CEP). It defines key CEP concepts like events, event streams, and atomic vs complex events. It describes common CEP use cases and processing modes. It also discusses CEP infrastructure alternatives and notable CEP implementations like Esper and Drools Fusion. The document introduces the CEPWorkbench modeling tool and outlines future directions for CEP.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
O documento apresenta exemplos de logs de uma aplicação SVN que registam as ações dos utilizadores no repositório. São apresentadas duas formas de fazer logging: de forma errada, apenas registando mensagens de erro, e de forma correta, usando uma biblioteca de logging estruturada e gravando logs de diferentes níveis. É explicado como a instrumentação e testes automatizados ajudam a detetar e corrigir problemas mais rapidamente.
O documento discute a implementação de um sistema de monitoração inteligente na Globo.com. Ele apresenta a motivação, a arquitetura orientada a eventos proposta, as tecnologias de correlação de eventos e aprendizado de máquina utilizadas, e os próximos passos do projeto, como escalonamento, melhoria de algoritmos e inserção de camadas supervisionadas.
O documento apresenta uma arquitetura de referência para processamento de eventos complexos em tempo quase real utilizando sistemas de gerenciamento de regras de negócio. A arquitetura propõe o uso de ferramentas como Apache Spark, Apache Kafka e Drools/Kie para processar grandes volumes de dados gerados por eventos e aplicar regras de negócio definidas por usuários. Um caso de uso demonstrou que a arquitetura pode processar milhares de eventos por segundo conforme as regras definidas.
Amazon EC2 oferece uma ampla seleção de tipos de instâncias para suportar diversos casos de uso. Nesta sessão, entregaremos uma visão geral da plataforma de instâncias do Amazon EC2, das características mais importantes da plataforma e do conceito de gerações de instâncias. Nos aprofundamos nas escolhas da geração atual para as diferentes famílias de instâncias, incluindo as famílias de Propósito Geral (General Purpose), as otimizadas para Computação, Otimizadas para Armazenamento, Otimizadas para Memória e as familias com Computação Acelerada (GPU e FPGA). Também detalharemos as melhores práticas e compartilhamos dicas de desempenho para obter o máximo de suas instâncias do Amazon EC2.
https://aws.amazon.com/pt/ec2/
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaEmbarcados
José Morais é um engenheiro de sistemas embarcados e diretor da TecnoEVO. Ele escreve sobre IoT e desenvolveu um sistema de monitoramento e controle remoto que coleta dados de campo, os armazena em um banco de dados e exibe visualmente usando dashboards como o Grafana. José deu uma demonstração mostrando como monitorar sensores IoT do ESP32 até o Grafana.
Data Stream Mining: trabalhando com dados massivos. Apresentação exibida no TDC 18 de Porto Alegre, nas trilhas de Data Science. Uma breve explicação sobre o contexto data stream, exemplos e resultados aplicando regressão.
A plataforma OpenIoT é uma plataforma de middleware open source para Internet das Coisas que permite a coleta e processamento de dados de sensores, armazenamento na nuvem, descoberta e consultas de sensores e serviços de IoT. Sua arquitetura suporta ontologias, modelos semânticos e anotações para representar objetos interconectados e é composta por planos de utilidade, virtualização e físico. Exemplos de aplicações são Silver Angel para ajudar idosos e Smart Campus para localização na universidade.
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
Nesta sessão abordamos a performance de Sistemas de Informação desenvolvidos na plataforma ASP.NET com recurso a SQL Server com SGBD. Iremos explicar como surgem os problemas de performance em sistemas com alguns anos de existência e qual a abordagem a tomar, quando temos utilizadores insatisfeitos.
Abordaremos também alguns casos de sucesso no mercado a nível de sistemas de alta disponibilidade e como o mercado tem evoluído. De uma forma geral, pretendemos demonstrar técnicas de análise/tuning de performance em ASP.NET e sua evolução ao longo das várias versões, como também algumas técnicas de requisitos para obtenção e estruturação da informação.
Finalmente, o objetivo passa por divulgar procedimentos, técnicas e ferramentas que sirvam como uma referência que possam ser úteis caso surjam problemas de performance nos nossos sistemas de futuro, entre os quais : Do’s & Dont’s, Systematic Tuning, ASP.NET Trace, VS Profiling Tools, SQL Profiler entre outros.
O documento discute a arquitetura orientada a eventos (EDA), incluindo o padrão ECA (Evento, Condição, Ação). A EDA é útil para sistemas de monitoramento, alertas e automação de tarefas. O padrão ECA define regras na forma de "se evento X ocorrer e condição Y for verdadeira, execute a ação Z".
O documento apresenta uma palestra sobre arquitetura de microsserviços usando a biblioteca Spring Cloud Netflix. O palestrante discute problemas comuns em arquiteturas monolíticas e como serviços como Eureka, Ribbon, Hystrix e Zuul da biblioteca resolvem esses problemas, permitindo escalabilidade e tolerância a falhas. Ele também apresenta outras ferramentas como o Config Server e o Hystrix Dashboard.
O documento discute o desenvolvimento de interfaces ricas em JavaFX para Ultrabooks, abordando o uso de recursos de toque e gestos, assim como o acesso a sensores como acelerômetro e giroscópio através da API do Windows e JNI.
O documento apresenta um sistema de monitoramento chamado Prometheus. Ele discute a arquitetura do Prometheus, incluindo o servidor Prometheus, exportadores, AlertManager e Grafana. Também aborda conceitos como métricas, bancos de dados timeseries, instrumentação de código, push gateway e alertas.
O documento descreve os conceitos de processos em sistemas operacionais, incluindo seus estados, como são representados e gerenciados pelo sistema operacional. O SO precisa escalonar processos, alocar recursos e suportar comunicação entre processos. Processos podem estar em estados como executando, pronto, bloqueado ou suspenso. O SO usa tabelas e estruturas de dados como o bloco de controle do processo para gerenciar os recursos e estados dos processos.
Complex Event Processing in Practice at jDays 2012Peter Norrhall
This document discusses complex event processing (CEP) and different CEP frameworks. It provides an introduction to CEP, describes event stream analysis and patterns in CEP. It also demonstrates CEP using Esper and Storm through word count examples. Key frameworks discussed are Esper, Storm, and Disruptor. The document shows how Esper can be used to define event types, statements, and listeners to perform event processing and aggregation. It also compares performance of Esper, Storm and Disruptor on word count processing.
This document provides an overview of complex event processing (CEP) and Esper, an open source CEP engine. It defines CEP as analyzing and controlling interrelated events to understand modern distributed systems. Esper makes it easier to build CEP applications by providing an event processing language (EPL) to define event types, continuous queries, and event patterns similar to SQL. It supports features like filtering, aggregation, windows, correlations, and pattern detection on streaming event data. While powerful, Esper has limitations around memory usage, resilience, and distribution that must be considered.
Complex Event Processing - A brief overviewIstván Dávid
This document provides an overview of complex event processing (CEP). It defines key CEP concepts like events, event streams, and atomic vs complex events. It describes common CEP use cases and processing modes. It also discusses CEP infrastructure alternatives and notable CEP implementations like Esper and Drools Fusion. The document introduces the CEPWorkbench modeling tool and outlines future directions for CEP.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
O documento apresenta exemplos de logs de uma aplicação SVN que registam as ações dos utilizadores no repositório. São apresentadas duas formas de fazer logging: de forma errada, apenas registando mensagens de erro, e de forma correta, usando uma biblioteca de logging estruturada e gravando logs de diferentes níveis. É explicado como a instrumentação e testes automatizados ajudam a detetar e corrigir problemas mais rapidamente.
O documento discute a implementação de um sistema de monitoração inteligente na Globo.com. Ele apresenta a motivação, a arquitetura orientada a eventos proposta, as tecnologias de correlação de eventos e aprendizado de máquina utilizadas, e os próximos passos do projeto, como escalonamento, melhoria de algoritmos e inserção de camadas supervisionadas.
O documento apresenta uma arquitetura de referência para processamento de eventos complexos em tempo quase real utilizando sistemas de gerenciamento de regras de negócio. A arquitetura propõe o uso de ferramentas como Apache Spark, Apache Kafka e Drools/Kie para processar grandes volumes de dados gerados por eventos e aplicar regras de negócio definidas por usuários. Um caso de uso demonstrou que a arquitetura pode processar milhares de eventos por segundo conforme as regras definidas.
Amazon EC2 oferece uma ampla seleção de tipos de instâncias para suportar diversos casos de uso. Nesta sessão, entregaremos uma visão geral da plataforma de instâncias do Amazon EC2, das características mais importantes da plataforma e do conceito de gerações de instâncias. Nos aprofundamos nas escolhas da geração atual para as diferentes famílias de instâncias, incluindo as famílias de Propósito Geral (General Purpose), as otimizadas para Computação, Otimizadas para Armazenamento, Otimizadas para Memória e as familias com Computação Acelerada (GPU e FPGA). Também detalharemos as melhores práticas e compartilhamos dicas de desempenho para obter o máximo de suas instâncias do Amazon EC2.
https://aws.amazon.com/pt/ec2/
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaEmbarcados
José Morais é um engenheiro de sistemas embarcados e diretor da TecnoEVO. Ele escreve sobre IoT e desenvolveu um sistema de monitoramento e controle remoto que coleta dados de campo, os armazena em um banco de dados e exibe visualmente usando dashboards como o Grafana. José deu uma demonstração mostrando como monitorar sensores IoT do ESP32 até o Grafana.
Data Stream Mining: trabalhando com dados massivos. Apresentação exibida no TDC 18 de Porto Alegre, nas trilhas de Data Science. Uma breve explicação sobre o contexto data stream, exemplos e resultados aplicando regressão.
A plataforma OpenIoT é uma plataforma de middleware open source para Internet das Coisas que permite a coleta e processamento de dados de sensores, armazenamento na nuvem, descoberta e consultas de sensores e serviços de IoT. Sua arquitetura suporta ontologias, modelos semânticos e anotações para representar objetos interconectados e é composta por planos de utilidade, virtualização e físico. Exemplos de aplicações são Silver Angel para ajudar idosos e Smart Campus para localização na universidade.
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
Nesta sessão abordamos a performance de Sistemas de Informação desenvolvidos na plataforma ASP.NET com recurso a SQL Server com SGBD. Iremos explicar como surgem os problemas de performance em sistemas com alguns anos de existência e qual a abordagem a tomar, quando temos utilizadores insatisfeitos.
Abordaremos também alguns casos de sucesso no mercado a nível de sistemas de alta disponibilidade e como o mercado tem evoluído. De uma forma geral, pretendemos demonstrar técnicas de análise/tuning de performance em ASP.NET e sua evolução ao longo das várias versões, como também algumas técnicas de requisitos para obtenção e estruturação da informação.
Finalmente, o objetivo passa por divulgar procedimentos, técnicas e ferramentas que sirvam como uma referência que possam ser úteis caso surjam problemas de performance nos nossos sistemas de futuro, entre os quais : Do’s & Dont’s, Systematic Tuning, ASP.NET Trace, VS Profiling Tools, SQL Profiler entre outros.
O documento discute a arquitetura orientada a eventos (EDA), incluindo o padrão ECA (Evento, Condição, Ação). A EDA é útil para sistemas de monitoramento, alertas e automação de tarefas. O padrão ECA define regras na forma de "se evento X ocorrer e condição Y for verdadeira, execute a ação Z".
O documento apresenta uma palestra sobre arquitetura de microsserviços usando a biblioteca Spring Cloud Netflix. O palestrante discute problemas comuns em arquiteturas monolíticas e como serviços como Eureka, Ribbon, Hystrix e Zuul da biblioteca resolvem esses problemas, permitindo escalabilidade e tolerância a falhas. Ele também apresenta outras ferramentas como o Config Server e o Hystrix Dashboard.
O documento discute o desenvolvimento de interfaces ricas em JavaFX para Ultrabooks, abordando o uso de recursos de toque e gestos, assim como o acesso a sensores como acelerômetro e giroscópio através da API do Windows e JNI.
O documento apresenta um sistema de monitoramento chamado Prometheus. Ele discute a arquitetura do Prometheus, incluindo o servidor Prometheus, exportadores, AlertManager e Grafana. Também aborda conceitos como métricas, bancos de dados timeseries, instrumentação de código, push gateway e alertas.
O documento descreve os conceitos de processos em sistemas operacionais, incluindo seus estados, como são representados e gerenciados pelo sistema operacional. O SO precisa escalonar processos, alocar recursos e suportar comunicação entre processos. Processos podem estar em estados como executando, pronto, bloqueado ou suspenso. O SO usa tabelas e estruturas de dados como o bloco de controle do processo para gerenciar os recursos e estados dos processos.
TDC2017 | São Paulo - Trilha Modern Web How we figured out we had a SRE team ...tdc-globalcode
O documento introduz o conceito de Serverless Computing e Azure Functions. Ele descreve os benefícios do FaaS, eventos de entrada e saída, arquitetura e anatomia do Azure Functions. Além disso, apresenta o novo portal e cenários de uso como bots e IoT.
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftJuliana Chahoud
Minicurso de iOS efetuado durante a 17a Semcomp - Semana da Computação do ICMC USP São Carlos
http://semcomp.icmc.usp.br/17/programacao/minicurso/15/desenvolvendo-um-aplicativo-ios-com-swift/
O mercado de aplicativos é um dos que mais cresce em todo o mundo. Neste minicurso será demonstrado na prática como criar um aplicativo iOS desde o início até sua conclusão. O aplicativo será todo construído com a nova linguagem de programação da Apple, o Swift.
Os tópicos abordados durante a construção do aplicativo serão:
- Como preparar o ambiente de desenvolvimento
- Principais funcionalidades do Xcode, a interface de desenvolvimento
- Como criar e estruturar um projeto
- Características básicas da linguagem de programação Swift
- Criação de interfaces gráficas com Storyboards
- Como compilar e executar o aplicativo em diversos simuladores (iPhone, iPad, iOS 7 e iOS 8)
- Quais os próximos passos para seguir na área de desenvolvimento de aplicativos
Este documento discute como monitorar a infraestrutura usando o Elasticsearch. Ele descreve como o Elasticsearch, Kibana e Beats (Winlogbeat, Metricbeat) podem ser usados para indexar, pesquisar e analisar dados em tempo real de CPUs, rede, memória, disco e processos, e fornecer dashboards para visualização. Ele também explica como instalar e configurar esses produtos da Elastic.
Funcionamento interno do node.js e boas práticasKirmayr tomaz
- O documento apresenta os principais conceitos do funcionamento interno do Node.js, incluindo a estrutura, dependências e ferramentas.
- As partes fundamentais são o V8 para interpretar JavaScript e o Libuv para I/O assíncrono.
- O event loop é responsável por manter o código assíncrono executando de forma não bloqueante através da fila de tarefas e microtarefas.
Semelhante a Framework (N)Esper @ PT.JUG 2010/06 (20)
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. Processamento de eventos com Esper
2010/063/19
Agenda
- Eventos
- Processamento de eventos
- Esper / NEsper (.NET)
- Resumo / Mais informação
- Questões
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Processamento de eventos com Esper
2010/0617/19
Diagrama
Esper
OFFON
select ...select ...select ...
eventoeventoeventoeventoevento
match1match2
select ...
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