sapo broker

Post on 06-Jun-2015

2.030 Views

Category:

Economy & Finance

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Sapo-Broker & Solr

Luis Neves

<luis.neves@co.sapo.pt>

CodeBits 2007

Lisboa

Agenda

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

● Solr: Pesquisa de texto livre

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

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

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

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

Modelos de Messaging

● Publish-Subscribe● One-to-Many

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

Publish-Subscribe

● Baseado em Tópicos● Produtores e Consumidores

● O produtor desconhece os consumidores

● As mensagens são entregues a todos os subscritores

Publish-Subscribe

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”

Pub-Sub

Demo

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

Point-to-Point

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

P2P demo

Demo

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

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

Broker quickstart

Demo

Se só se lembrarem de uma coisa!

Como é que eu vivia sem isto?!

Pesquisas de texto livre com Solr

”And Now for Something Completely Different”

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

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

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

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

Eliminar documentos

Apagar por ID, mais eficiente

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

</delete>

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

</delete>

Apagar por Query

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

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

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

● *:*

Solr Quickstart

Demo

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

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>

Perguntas?

?

top related