SAPO Broker

2.176 visualizações

Publicada em

Plataforma de brokering do SAPO. Aplicações orientadas a eventos. Exemplos de tópicos e aplicações práticas.

0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.176
No SlideShare
0
A partir de incorporações
0
Número de incorporações
55
Ações
Compartilhamentos
0
Downloads
29
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

SAPO Broker

  1. 1. Sapo-Broker & Solr Luis Neves <luis.neves@co.sapo.pt> CodeBits 2007 Lisboa
  2. 2. Agenda Sapo-Broker ● Event-driven architecture (EDA) ● Message Oriented Middleware (MOM) ● Introdução a ”Messaging” ● Arquitectura ● Exemplos ● Solr: Pesquisa de texto livre ●
  3. 3. Event-driven architecture Mudança significativa de estado ● minuto 49->50 !! ● Alguns exemplos ● mudança de temperatura de x->y ● email que passa de recebido->apagado ● bilhete que passa de disponível->vendido ●
  4. 4. Características de EDA Os eventos são propagados ● Os eventos são ”pontuais” ● A comunicação é assíncrona ● A granularidade dos eventos é baixa ● Os eventos são processados ●
  5. 5. Importância de EDA O produtor desconhece por completo o ● consumidor A ”informação de estado” é reduzida ou ● mesmo completamente eliminada Complementa SOA uma vez que os ● serviços podem ser iniciados como resposta a eventos
  6. 6. Message-oriented middleware Infraestrutura que permite a troca de ● mensagens em sistemas distríbuidos Fornece ”queueing” e ”handling” de mensagens ● Bastante usado em soluções de integração ● entre sistemas díspares Exemplos: ● IBM MQSeries ● TIBCO ● ActiveMQ ● Sapo-Broker :-) ●
  7. 7. Modelos de Messaging Publish-Subscribe ● One-to-Many ● Point-to-Point ● One-to-One ●
  8. 8. Publish-Subscribe Baseado em Tópicos ● Produtores e Consumidores ● O produtor desconhece os consumidores ● As mensagens são entregues a todos os ● subscritores
  9. 9. Publish-Subscribe
  10. 10. Vantagens de Pub-Sub Ideal para publicar eventos de negócio ● apenas os interessados recebem as mensagens ● ”Observer pattern” distríbuida ● Promove ”Event Driven Architechture” ●
  11. 11. Pub-Sub Demo
  12. 12. Point-to-Point Baseado em Queues ● Mensagens são enviadas para Queues ● Entregues uma e apenas uma vez ● Entregue apenas a um consumidor ● Retenção de mensagens em Queue ● Independência temporal ● As mensagens são guardadas até serem consumidas ● ou expiradas
  13. 13. Point-to-Point
  14. 14. Vantagens de P2P Ideal para ”load-balancing” de ● consumidores Monitorizar Queues é fácil ● Tamanho e ”throughput” ● Re-entrega de mensagens ● As falhas parciais são bem toleradas ● por exemplo falhas devido a manutenção ●
  15. 15. P2P demo Demo
  16. 16. Sapo-Broker Rápido e altamente escalável ● rede distribuída de ”brokers” que agem como um ● só Polivalente ● Livrarias para C, PHP, Perl, Python e .NET ● Fácil de usar ● a configuração necessária é reduzida ● Aberto ● Código livre: GPL ●
  17. 17. Sapo-Broker: Juicy bits Wildcard Subscriptions ● ”/foo/>”. Tudo o que está abaixo de ”foo” ● ”/foo/#/bar”. Match com ”/foo/x/bar” e ”/foo/y/bar” ● Queues Virtuais ● Queues que são populadas por tópicos ● HTTP Endpoint ● Mensagens com Prioridade ●
  18. 18. Broker quickstart Demo
  19. 19. Se só se lembrarem de uma coisa! Como é que eu vivia sem isto?!
  20. 20. Pesquisas de texto livre com Solr ”And Now for Something Completely Different”
  21. 21. Lucene <http://lucene.apache.org> Livraria para pesquisa de texto livre com ● elevada “performance”. Foco: Indexação + Pesquisa de Documentos ● “Documento” é apenas uma lista de tuplos nome+valor ● Não fornece “crawlers” nem extracção de ● texto Análise de texto flexível (tokenizers + ● token filters) 100% Java, sem dependências externas, sem ● ficheiros de configuração
  22. 22. Solr <http://lucene.apache.org/solr/> Servidor de pesquisa baseado em Lucene ● Interface XML/HTTP, JSON ● Pesquisa facetada (contagem por categoria) ● ”Schema” flexível que permite definir campos ● e tipos de dados Hit Highlighting ● Arquitectura extensível ● Interface Web para administração ● Java5, basta colocar um ficheiro WAR no ● servidor
  23. 23. Aplicação Indexer Webapp Document super_name: Mr. Fantastic Query Response Query name: Reed Richards (matching docs) (powers:agility) category: superhero powers: elasticity http://solr/update http://solr/select admin update select XML response writer Solr JSON response writer Servlet Container XML Update Handler Standard request handler CSV Update Handler Custom request handler Lucene
  24. 24. Adicionar documentos HTTP POST para http://localhost:8080/solr/update <add> <doc> <field name=“id”>05991</field> <field name=“name”>Peter Parker</field> <field name=“supername”>Spider-Man</field> <field name=“category”>superhero</field> <field name=“powers”>agility</field> <field name=“powers”>spider-sense</field> </doc> </add>
  25. 25. Eliminar documentos Apagar por ID, mais eficiente <delete> <id>05591</id> <id>32552</id> </delete> Apagar por Query <delete> <query>category:supervillain</query> </delete>
  26. 26. Aplicar as alterações <commit /> <optimize /> Todas as alterações visíveis apenas ● depois de emitir <commit /> <optimize /> semelhante ao ”commit” ● mas rearranja os ficheiros em disco para permitir maior velocidade de pesquisa
  27. 27. Sintaxe de pesquisa carro vermelho ● carro OR vermelho ● por omissão o operador usado é o OR ● +carro +vermelho -marca:ferrari ● carro AND vermelho NOT marca:ferrari ● tipo:desportivo^10 description:desportivo ● description:”carro curvas”~100 ●
  28. 28. Sintaxe de pesquisa (cont.) releaseDate:[2000 TO 2007] ● Pesquisa com wildcards: sup?r, su*r, super* ● carro~ ● ”Fuzzy search”: Distância de Levenshtein ● Semelhança mínima: carro~0.7 ● *:* ●
  29. 29. Solr Quickstart Demo
  30. 30. Se só se lembrarem de uma coisa! Rápido ● Poderoso e configurável ● Excelente relevância de resultados de ● pesquisa Produto com maturidade ● Características semelhantes a produtos que ● custam muito $$$ Comunidade fantástica ● Programadores de Lucene, peritos em IR ● Consultadoria á borla: soluções e ● problemas são partilhados
  31. 31. Help me! WWW ● <http://trac.softwarelivre.sapo.pt/broker> ● <http://lucene.apache.org/solr> ● <http://wiki.apache.org/solr> ● Luis Neves ● email: <luis.neves@co.sapo.pt> ● xmpp: <lfs_neves@sapo.pt> ●
  32. 32. Perguntas? ?

×