SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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
     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
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>
Eliminar documentos

Apagar por ID, mais eficiente

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



Apagar por Query

<delete>
      <query>category:supervillain</query>
</delete>
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
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?




    ?

Weitere ähnliche Inhalte

Was ist angesagt?

Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Invent IT Solutions
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
Mauro Duarte
 

Was ist angesagt? (20)

NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Desktop Linux na Tranquilidade
Desktop Linux na TranquilidadeDesktop Linux na Tranquilidade
Desktop Linux na Tranquilidade
 
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
Infnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na práticaInfnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na prática
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
07 - Atividade III
07 - Atividade III07 - Atividade III
07 - Atividade III
 
Servidores WEB
Servidores WEBServidores WEB
Servidores WEB
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
05 servidor dhcp
05   servidor dhcp05   servidor dhcp
05 servidor dhcp
 
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPUserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry Metrocamp
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
 

Ähnlich wie SAPO Broker

PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
elliando dias
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
iMasters
 

Ähnlich wie SAPO Broker (20)

Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Do Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio JugDo Rest Ao Restfull - Rio Jug
Do Rest Ao Restfull - Rio Jug
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 

Mehr von codebits

Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands On
codebits
 
Aplicações Web TV no Meo
Aplicações Web TV no MeoAplicações Web TV no Meo
Aplicações Web TV no Meo
codebits
 
Forms Usability 101
Forms Usability 101Forms Usability 101
Forms Usability 101
codebits
 
Speak up: como criar Speech-based apps
Speak up: como criar Speech-based appsSpeak up: como criar Speech-based apps
Speak up: como criar Speech-based apps
codebits
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-On
codebits
 
Mitos da Acessibilidade Web
Mitos da Acessibilidade WebMitos da Acessibilidade Web
Mitos da Acessibilidade Web
codebits
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
codebits
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
codebits
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
codebits
 
Exploring XMPP
Exploring XMPPExploring XMPP
Exploring XMPP
codebits
 
Sapo BUS Hands-On
Sapo BUS Hands-OnSapo BUS Hands-On
Sapo BUS Hands-On
codebits
 
Qtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencerQtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencer
codebits
 
Making the Chumby
Making the ChumbyMaking the Chumby
Making the Chumby
codebits
 
Globs - Gestão de Glossários
Globs - Gestão de GlossáriosGlobs - Gestão de Glossários
Globs - Gestão de Glossários
codebits
 
ATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de TraduçõesATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de Traduções
codebits
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Java
codebits
 
Sapo GIS Hands-On
Sapo GIS Hands-OnSapo GIS Hands-On
Sapo GIS Hands-On
codebits
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
codebits
 

Mehr von codebits (20)

Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands On
 
Aplicações Web TV no Meo
Aplicações Web TV no MeoAplicações Web TV no Meo
Aplicações Web TV no Meo
 
Forms Usability 101
Forms Usability 101Forms Usability 101
Forms Usability 101
 
Speak up: como criar Speech-based apps
Speak up: como criar Speech-based appsSpeak up: como criar Speech-based apps
Speak up: como criar Speech-based apps
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-On
 
Mitos da Acessibilidade Web
Mitos da Acessibilidade WebMitos da Acessibilidade Web
Mitos da Acessibilidade Web
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
 
CouchDB
CouchDBCouchDB
CouchDB
 
Getting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko FreerunnerGetting started with mobile devices development - Openmoko Freerunner
Getting started with mobile devices development - Openmoko Freerunner
 
Exploring XMPP
Exploring XMPPExploring XMPP
Exploring XMPP
 
Sapo BUS Hands-On
Sapo BUS Hands-OnSapo BUS Hands-On
Sapo BUS Hands-On
 
Qtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencerQtractor - An Audio/MIDI multi-track sequencer
Qtractor - An Audio/MIDI multi-track sequencer
 
Making the Chumby
Making the ChumbyMaking the Chumby
Making the Chumby
 
Globs - Gestão de Glossários
Globs - Gestão de GlossáriosGlobs - Gestão de Glossários
Globs - Gestão de Glossários
 
ATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de TraduçõesATrad - Sistema de Garantia de Qualidade de Traduções
ATrad - Sistema de Garantia de Qualidade de Traduções
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Java
 
Sapo GIS Hands-On
Sapo GIS Hands-OnSapo GIS Hands-On
Sapo GIS Hands-On
 
Gis@sapo
Gis@sapoGis@sapo
Gis@sapo
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
 

SAPO Broker

  • 1. Sapo-Broker & Solr Luis Neves <luis.neves@co.sapo.pt> CodeBits 2007 Lisboa
  • 2. Agenda Sapo-Broker ● Event-driven architecture (EDA) ● Message Oriented Middleware (MOM) ● Introdução a ”Messaging” ● Arquitectura ● Exemplos ● Solr: Pesquisa de texto livre ●
  • 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. 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. 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. 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. Modelos de Messaging Publish-Subscribe ● One-to-Many ● Point-to-Point ● One-to-One ●
  • 8. Publish-Subscribe Baseado em Tópicos ● Produtores e Consumidores ● O produtor desconhece os consumidores ● As mensagens são entregues a todos os ● subscritores
  • 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” ●
  • 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
  • 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. P2P demo Demo
  • 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. 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 ●
  • 19. Se só se lembrarem de uma coisa! Como é que eu vivia sem isto?!
  • 20. Pesquisas de texto livre com Solr ”And Now for Something Completely Different”
  • 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. 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. 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. 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. 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. 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. 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. 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 ● *:* ●
  • 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. 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> ●