Arquitetura de TI - Complex Event Processing

Olá tudo bem ?

Com o lançamento do SQL 2008R2 nós ganhamos uma nova funcionalidade chamada de CEP , Complex Event Processing. SQL 2008R2 StreamInsight é uma plataforma de "Complex Event Processing" que fornece a funcionalidade de processar milhões de eventos de várias origens com baixa latência. A base desta nova capacidade é a plataforma .NET que fornece a possibilidade de desenvolver rapidamente aplicações CEP com alta escalabilidade e redundância.

Benefícios de StreamInsight:

  • Altamente otimizada para a transferência de dados com baixa latência (In-Memory)
  • Desenvolvimento em .Net com classes novas
  • Capacidade de implantação flexível (DLL,Standalone,Farm)
  • Gerenciamento e “Troubleshooting” integrada

Comparação entre Arquiteturas RDBMS e CEP

Agora você vai pensar porque não usar sistemas RDBMS para aplicações CEP ? Não seria mais fácil carregamos os dados recebidos no banco de dados e então executar consultas de forma contínua com os dados armazenados? Isto irá funcionar, mas podem correr alguns problemas como:

 RDBMS:

  • Alta latência por causa da persistência em disco
  • Escalabilidade horizontal
  • Desenvolvimento for a da plataforma.Net
image

Sistemas CEP:

imageSistemas de CEP trabalham sobre a premissa de todo processamento aconteça em memoria sem uma camada de persistência em disco. Os eventos entram via adaptadores de entrada e são entrega para a engine de CEP aonde o processamento e realizado de forma contínua sobre os dados com consultas estáticas. Os resultados das consultas alimentaram à saída de adaptadores que entregam os dados para as aplicações que necessitam de dados. Assim nos podemos garantir baixa latência com milhões de eventos.

 

image 

Exemplos de Aplicações CEP:

  • Existem vários exemplos de aplicações aonde a utilização seria útil como na área financeira, manufatura, analise de transito e analise de BI em tempo real. Fatores importantes que precisam ser considerados no processo de decisão são a tolerância da latência e a quantidade de eventos per segundo.

 

Arquitetura StreamInsight

Podemos dividir a arquitetura do StreamInsight em:

  • Eventos,
  • Adaptadores (Entrada, Saida)
  • Query Templates
  • Query Instances
  • Diagnostic Views
image

Eventos

image
Eventos representam dados que mudam durante um tempo definido. Um exemplo muito comum são agregadores de informações tickers,twitter, temperaturas, chão de fabrica ou transações na área de cartão de créditos. Vocês podem considerar todo tipo de dados um evento que pode ser consumido via um adaptador de entrada.

Adaptadores (Entrada ou Saida)

image
Os adaptadores são o componente fundamental de processamento de eventos complexos (CEP). Resumindo, adaptadores oferecem interfaces que abstrai como os eventos são produzidos ou consumidos pela infraestrutura CEP. Na maioria, o conceito de um adaptador é como o mecanismo fundamental para interagir com sistemas heterogêneos. Seguindo os mesmos princípios, StreamInsight usa adaptadores para modelar o fluxo de eventos dentro ou fora do hospedeiro CEP. Além disso, StreamInsight permite que um modelo de programação flexível, que permite aos desenvolvedores estender a infraestrutura básica através de adaptadores customizados. Um adaptador StreamInsight pode ser classificado como entrada ou saída, dependendo do fluxo de eventos. Um adaptadores de entrada aceita um conjunto de eventos a partir de fonte de dados no seu formato nativo, traduzi-los e redireciona-los em um aplicativo StreamInsight. Da mesma forma, um adaptador de saída recebe eventos a partir de um pedido StreamInsight traduzi-los em seu formato nativo e enviá-los para a aplicação de destino.

Query Templates

image
Um “Query Template” é a unidade fundamental da composição da consulta. É a estrutura que define a lógica de negócio necessária para analisar de forma contínua e processar eventos enviados para o servidor CEP. Uma vez que os dados foram entregues para o servidor StreamInsight, o processamento pode ser realizado de forma contínua sobre os dados. Em outras palavras, como os eventos são inseridos no servidor, esses eventos são processados por consultas permanentes, que emitem os eventos de saída processada. Essas consultas permanentes são escritos na linguagem de LINQ. LINQ é um mecanismo para expressar consultas declarativas sobre conjuntos de dados que é totalmente integrado em uma linguagemt, como C #. Na versão atual, suporta apenas StreamInsight C # . Esta arquitetura foi adaptado para a plataforma StreamInsight, resultando em uma forte integração do servidor StreamInsight com C #.

Query Instances

image
Vincular um “Query Template” com uma entrada específica e um adaptador de saída cria uma “Query Instance” no servidor StreamInsight. “Query Instances” podem ser iniciados, parados, e gerenciados no servidor StreamInsight. Quando os dados são trazidos para o servidor StreamInsight através de adaptadores de entrada, o cálculo pode ser realizado continuamente ao longo dos dados. Em outras palavras, como eventos individuais chegam ao servidor, esses eventos são processados por consultas permanentes, que emitem os eventos de saída em resposta à chegada dos eventos de entrada

Diagnostic Views

image
Monitoramento da situação de um servidor StreamInsight envolve o acompanhamento da saúde global do sistema e desempenho da consulta. O estado de um servidor StreamInsight é capturado pelo acompanhamento da StreamInsight consultas em execução no servidor e pelo acompanhamento da forma como as entidades que compõem uma consulta StreamInsight está usando recursos do sistema. Você pode obter informações sobre o acompanhamento, utilizando os API diagnósticos. Como pré-requisito para utilizar esta API, você deve ter os serviços de Web habilitado em ambos os modos de implementação. A ilustração mostra os eventos para você entender como você pode usar estes atributos de acompanhamento.

Com base nesses pontos de medição, as seguintes métricas podem ser derivadas:

  • Incoming – Grava eventos de entrada em todos os adaptadores de entrada. Esta é uma medida da taxa de chegada da matéria-prima de entrada de eventos na consulta da placa de entrada.
  • Consumed - Grava eventos consumida pelo servidor StreamInsight, isto é, entre todos os operadores que imediatamente a seguir as placas de entrada. Esta é uma medida dos acontecimentos enfileirados para o servidor.
  • Produzido - Grava todos os eventos que estão deixando o último operador que precede imediatamente o adaptador de saíd
  • Outgoing - Grava todos os eventos que saem da placa de saída. Esta é uma medida da taxa de saída caso do servidor StreamInsight

 

 

 

Modelos de Implementação

Microsoft StreamInsight suporta dois cenários de implementação:

Explicit:

  • O modelo de desenvolvimento explícito fornece um ambiente de aplicação CEP, permitindo que o desenvolvedor do aplicativo crie e registra explicitamente todos os objetos necessários para transformar e processar eventos que entram e saem . Isto dá ao desenvolvedor o controle completo de sua aplicação CEP e ambiente de desenvolvimento usando o client-side modelo de objeto API.

Implicit:

  • O modelo de desenvolvimento implícita fornece um ambiente fácil de usar, que esconde muito da complexidade associada com o modelo explícito de desenvolvimento. Ele faz isso ao permitir que o servidor CEP para atuar como a interface que criar e registrar a maior parte dos objetos necessários para transformar e processar eventos que entram e saem do servidor CEP. Isto permite ao desenvolvedor focar seus esforços no desenvolvimento da lógica de consulta necessários para processar e analisar os acontecimentos dentro do servidor CEP. O servidor hospede múltiplas aplicações StreamInsight, usuários compartilhando o servidor.

Pré-requisitos Hardware e Sistemas Operacionais

Hardware:

  • Recomendado: 2.2 GHz ou maior CPU, 1024 MB ou mais.
  • Mínimo: 1.6 GHz CPU, 384 MB RAM

StreamInsight suporta seguintes sistemas operacionais:

  • Windows XP Service Pack 2 (x86,x64)
  • Windows Server 2003 Service Pack 2 (x86,x64)
  • Windows Server 2003 R2 (x86,x64)
  • Windows Vista (x86 , x64)
  • Windows Server 2008 (x86,x64)
  • Windows 7 (x86,x64)

Uma instalação de StreamInsight é constituída pelos seguintes elementos principais:

  • Classes como um set de DLLs
  • Documentações
  • StreamInsight hoste, Windows Service
  • StreamInsight Event Flow Debugger tool
  • Pacote SQL CE

 

Se vocês gostariam saber mais sobre este assunto:

Ate logo, Markus

Technorati Tags: Infrastructure Architecture in a box,StreamInisght,SQL 2008R2