Event Aggregator

385 views

Published on

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
385
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Como exemplo, se tivermos transações em bolsa, podemos estar interessados em saber qual o volume numa dada acção ou conjunto de acções num determinado intervalo temporal (e.g. hora, dia, mês). Para evitar a enorme duplicação de esforço caso cada cliente final tenha que fazer os cálculos, é interessante esta informação ser computada de uma forma distribuída e disponibilizada pelo sistema.
  • Hadoop não tem suporte pra Mac OS  MongoDB - replicação no estilo Master/Slave CouchDB - é necessária uma cópia total ou parcial em cada nó que a use Cassandra - Não tem noção da localização dos nodos, o que traria problemas de latência nos cálculos
  • clientIdCounter é controlado pelo agregador Além destes há um bucket de controlo para usernames e passes replicado por varios nós (default=3)
  • ou entao o maximo do dia X ao dia Y tipo -> nenhum, diario, mensal e anual modo -> o tipo de agregação (maximo, minimo, media, …)
  • Event Aggregator

    1. 1. Event Aggregator Fábio Silva Luís Ferreira Tiago Sá Departamento de Informática Universidade do Minho
    2. 2. Agenda <ul><li>Introdução </li></ul><ul><ul><li>Objectivos </li></ul></ul><ul><ul><li>Características </li></ul></ul><ul><li>AMQP </li></ul><ul><li>Persistência de dados </li></ul><ul><li>Arquitectura do sistema </li></ul><ul><li>Eventos </li></ul><ul><li>Estado actual </li></ul><ul><li>Conclusão </li></ul>08/15/10 Event Aggregator
    3. 3. Introdução <ul><li>Sistema de disseminação de eventos , escalável e fiável. </li></ul><ul><ul><li>Eventos simples , gerados por produtores, </li></ul></ul><ul><ul><li>Eventos complexos , resultantes da agregação da informação original </li></ul></ul><ul><li>Caso de estudo: </li></ul><ul><ul><li>Transacções da bolsa de valores </li></ul></ul>08/15/10 Event Aggregator
    4. 4. Introdução - Objectivos <ul><li>Sistema distribuído que permita a disseminação, agregação e processamento de eventos de forma fiável e escalável. </li></ul><ul><li>Calcular funções sobre séries temporais, e permitir especificar a geração e subscrição de eventos complexos, função da informação calculada . </li></ul><ul><li>Possível armazenar informação histórica sobre eventos, num sistema de armazenamento de dados distribuído. </li></ul><ul><li>Tolerância a faltas por replicação, distribuindo os dados por vários nós. </li></ul>08/15/10 Event Aggregator
    5. 5. Introdução - Características <ul><li>Utilizar como sistema de messaging de base o AMQP. </li></ul><ul><li>Utilizar uma key-value store distribuída para armazenamento persistente de informação. </li></ul><ul><li>Disponibilizar funcionalidade de agregação e processamento de séries temporais (e.g. contar, soma, mínimo, máximo e médias móveis). </li></ul><ul><li>Permitir subscrever eventos complexos, em função da informação calculada. </li></ul>08/15/10 Event Aggregator
    6. 6. AMQP <ul><li>AMQP </li></ul><ul><ul><li>Advanced Message Queuing Protocol </li></ul></ul><ul><li>Protocolo aberto de messaging </li></ul><ul><li>Especificações de infra-estrutura de messaging, para conectar aplicações </li></ul><ul><li>Independente da plataforma </li></ul><ul><li>Protocolo em desenvolvimento – versão 1.0 em progresso. </li></ul>08/15/10 Event Aggregator
    7. 7. AMQP – Produtos <ul><li>AMQP Infrastructure – installable on the latest 3 versions of Fedora Linux </li></ul><ul><li>OpenAMQ, by iMatix </li></ul><ul><li>Qpid, by Apache </li></ul><ul><ul><li>Pouca documentação, implementação em Java não suporta broker federation </li></ul></ul><ul><li>RabbitMQ by Rabbit Technologies </li></ul><ul><ul><li>Boa documentação, comunidade activa </li></ul></ul><ul><ul><li>Sistema completo, múltiplos bokers </li></ul></ul><ul><li>Red Hat Enterprise MRG, by Red Hat </li></ul>08/15/10 Event Aggregator
    8. 8. Persistência de dados – Key-value store <ul><li>MongoDB, CouchDB e Cassandra; </li></ul><ul><li>Nenhuma delas tem noção da localização dos dados; </li></ul><ul><li>Não é bom para OLAP (On-line A nalytical Processing); </li></ul><ul><li>Riak e Hadoop: </li></ul><ul><ul><li>Riak oferece funcionalidades de MapReduce ; </li></ul></ul><ul><li>A função de Map é executada no vnode(s) responsável pela chave; </li></ul>08/15/10 Event Aggregator
    9. 9. Persistência de dados – Key-value store <ul><li>Estrutura </li></ul>08/15/10 Event Aggregator <Bucket Name> <key> <value> <key> <value> ... <Bucket Name> <key> <value> <key> <value> ...
    10. 10. Arquitectura do Sistema 08/15/10 Event Aggregator
    11. 11. Arquitectura do Sistema <ul><ul><li>Brokers do RabbitMQ a correr em modo cluster; </li></ul></ul><ul><ul><li>Nodos da cloud do sistema são elementos da key-value store distibuída, Riak; </li></ul></ul><ul><ul><li>Um conjunto de clientes do sistema para subscrever, desubscrever e processar eventos agregados; </li></ul></ul><ul><ul><li>Cada cliente deverá conter uma fila única no RabbitMQ; </li></ul></ul><ul><ul><li>Existe uma fila do sistema, que os broker escutam concurrentemente, para processar subscrições e fim de subscrições; </li></ul></ul><ul><ul><li>Cada mensagem publicada é enviada para o cluster de RabbitMQ e guardada no Riak. </li></ul></ul>08/15/10 Event Aggregator
    12. 12. Organisação Broker RabbitMQ Broker RabbitMQ Exchange:Clientes Filas de clientes Fila do Sistema 08/15/10 Event Aggregator
    13. 13. Processo de Agregação de eventos <ul><li>Cliente subscreve um evento agregado; </li></ul><ul><li>Um dos agregadores recebe o pedido; </li></ul><ul><li>Verifica se o pedido já está a ser processado para algum cliente; </li></ul><ul><ul><li>Caso exista: </li></ul></ul><ul><ul><ul><li>junta a subscrição à sua fila de cliente; </li></ul></ul></ul><ul><ul><li>Caso não exista: </li></ul></ul><ul><ul><ul><li>cria um alarme no broker com a frequência do evento; </li></ul></ul></ul><ul><ul><ul><li>Quando o alarme é acionado, verifica a lista de eventos que podem ser processados. Efectua a sua agregação, publicando os eventos no Riak e nos brokers do RabitMQ. </li></ul></ul></ul>08/15/10 Event Aggregator
    14. 14. Modelo de dados <ul><li>XRaw </li></ul><ul><ul><li>&quot;AAAA/MM/DD/clientIdCounter&quot; : &quot;Valor” </li></ul></ul><ul><li>XDailyMaximum </li></ul><ul><ul><li>&quot;AAAA/MM/DD&quot; : &quot;MáximoDiário” </li></ul></ul><ul><li>XDailyMinimum </li></ul><ul><ul><li>&quot;AAAA/MM/DD&quot; : &quot;MínimoDiário” </li></ul></ul><ul><li>XDailyAverage </li></ul><ul><ul><li>&quot;AAAA/MM/DD&quot; : &quot;MédiaDiária” </li></ul></ul><ul><li>Xmonthly </li></ul><ul><ul><li>&quot;AAAA/MM/Maximum&quot; : &quot;Valor&quot; </li></ul></ul>08/15/10 Event Aggregator
    15. 15. Eventos <ul><li>Existem dois tipos de eventos - simples e agregados </li></ul><ul><li>Eventos simples, são compostos por: </li></ul><ul><ul><li>nome da acção | data | tipo | modo | valor </li></ul></ul><ul><li>Evento agregado: </li></ul><ul><ul><li>calculado a partir de vários eventos simples </li></ul></ul><ul><ul><li>tipos disponibilizados: máximo, mínimo , média, contar e somar </li></ul></ul><ul><li>Granularidade: dia </li></ul><ul><li>Podem ser pedidos através de intervalos </li></ul>08/15/10 Event Aggregator
    16. 16. Estado actual <ul><li>Subscrição simples </li></ul><ul><li>Publicação e difusão simples </li></ul><ul><li>Unsubscribe simples </li></ul><ul><li>Protótipo de um cliente </li></ul><ul><li>Prototipo de um agregador </li></ul><ul><li>Cálculo de estatísticas na key-store </li></ul>08/15/10 Event Aggregator
    17. 17. Conclusões e trabalho futuro <ul><li>Nesta fase inicial, foi direccionado o esforço para a recolha de requisitos e análise das ferramentas disponíveis. </li></ul><ul><li>Quem atende o pedido inicial do cliente? Qual a identidade do serviço? </li></ul><ul><li>Tolerância a faltas: </li></ul><ul><ul><li>No caso de um broker falhar, os restantes seguram as mensagens em cache até este acordar, ou descartam? </li></ul></ul>08/15/10 Event Aggregator

    ×