SAPO Broker

32
Sapo-Broker & Solr Luis Neves <[email protected]> CodeBits 2007 Lisboa

description

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

Transcript of SAPO Broker

Page 1: SAPO Broker

Sapo-Broker & Solr

Luis Neves

<[email protected]>

CodeBits 2007

Lisboa

Page 2: SAPO Broker

Agenda

● Sapo-Broker● Event-driven architecture (EDA)● Message Oriented Middleware (MOM)● Introdução a ”Messaging”● Arquitectura● Exemplos

● Solr: Pesquisa de texto livre

Page 3: SAPO Broker

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

Page 4: SAPO Broker

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

Page 5: SAPO Broker

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

Page 6: SAPO Broker

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 :-)

Page 7: SAPO Broker

Modelos de Messaging

● Publish-Subscribe● One-to-Many

● Point-to-Point● One-to-One

Page 8: SAPO Broker

Publish-Subscribe

● Baseado em Tópicos● Produtores e Consumidores

● O produtor desconhece os consumidores

● As mensagens são entregues a todos os subscritores

Page 9: SAPO Broker

Publish-Subscribe

Page 10: SAPO Broker

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”

Page 11: SAPO Broker

Pub-Sub

Demo

Page 12: SAPO Broker

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

Page 13: SAPO Broker

Point-to-Point

Page 14: SAPO Broker

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

Page 15: SAPO Broker

P2P demo

Demo

Page 16: SAPO Broker

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

Page 17: SAPO Broker

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

Page 18: SAPO Broker

Broker quickstart

Demo

Page 19: SAPO Broker

Se só se lembrarem de uma coisa!

Como é que eu vivia sem isto?!

Page 20: SAPO Broker

Pesquisas de texto livre com Solr

”And Now for Something Completely Different”

Page 21: SAPO Broker

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

Page 22: SAPO Broker

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

Page 23: SAPO Broker

Aplicação

admin update select

Standard request handler

Custom request handler

XML response writer

JSON response writer

XML Update Handler

CSV Update Handler

Lucene

Documentsuper_name: Mr. Fantasticname: Reed Richardscategory: superheropowers: elasticity

Query Response(matching docs)Query

(powers:agility)

http://solr/update http://solr/select

Ser

vlet

Con

tain

er Solr

WebappIndexer

Page 24: SAPO Broker

Adicionar documentos

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

HTTP POST para http://localhost:8080/solr/update

Page 25: SAPO Broker

Eliminar documentos

Apagar por ID, mais eficiente

<delete><id>05591</id><id>32552</id>

</delete>

<delete><query>category:supervillain</query>

</delete>

Apagar por Query

Page 26: SAPO Broker

Aplicar as alterações

● 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

<commit /><optimize />

Page 27: SAPO Broker

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

Page 28: SAPO Broker

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

● *:*

Page 29: SAPO Broker

Solr Quickstart

Demo

Page 30: SAPO Broker

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

Page 31: SAPO Broker

Help me!

● WWW● <http://trac.softwarelivre.sapo.pt/broker>● <http://lucene.apache.org/solr>● <http://wiki.apache.org/solr>

● Luis Neves● email: <[email protected]>● xmpp: <[email protected]>

Page 32: SAPO Broker

Perguntas?

?