SlideShare uma empresa Scribd logo
1 de 42
Publish-Subscribe Middleware

                Pedro Fernandes
         Sistemas Distribuídos e Móveis
 Faculdade de Ciências da Universidade do Porto
                  2009/2010
Paradigma Publish-Subscribe
• Subscribers registam interesse em eventos ou
  num conjunto de eventos
  – Subscriber é o consumidor de eventos
• Publishers publicam eventos
  – Publisher é o gerador de eventos
• Subscribers recebem notificação dos eventos
  de forma assíncrona
• Dispatchers/Brokers são o elo de ligação entre
  ambos.
                   Publish-Subscribe Middleware    2
Paradigma Publish-Subscribe



                                                      subscribe/
                          Dispatcher                 unsubscribe
Publisher   publish                                                Subscriber
                           /Broker
                                                      notify




                      Publish-Subscribe Middleware                              3
Motivação
• Sistemas tightly-coupled não escalam
• Sistemas distribuídos de larga escala
  – componentes diferem:
     •   Localização
     •   Latência
     •   Tempo de vida
     •   …
• Loosely-coupled
  – Participantes operam de forma independente

                         Publish-Subscribe Middleware   4
Decoupling
• Principal característica do Publish-Subscribe:
  loosely-coupled
  – A geração e consumo de informação é
    independente
• Decoupling a diversos níveis:
  – Espaço
  – Tempo
  – Sincronização

                     Publish-Subscribe Middleware   5
Space-decoupling

                                                              Subscriber



                          Dispatcher
Publisher   publish                                  notify   Subscriber
                           /Broker



                                                              Subscriber




                      Publish-Subscribe Middleware                         6
Time-decoupling


                      Dispatcher
Publisher   publish                                       Subscriber
                       /Broker

                                                                       T
                                                                       I
                                                                       M
                                                                       E
                      Dispatcher
Publisher                                        notify   Subscriber
                       /Broker




                      Publish-Subscribe Middleware                         7
Synchronization-decoupling

Publisher                                  Subscriber




                 Dispatcher
                  /Broker




            Publish-Subscribe Middleware                8
Expressividade


• Topic-based
• Content-based
• outros
  – Hybrid-based
  – Type-based



                   Publish-Subscribe Middleware   9
Topic-based

• Subscreve tópicos
  – Identificados por keywords
• Nome dos tópicos expresso por intermédio de
  notação URL
• Exemplo:
         Eurecom/Courses/DSMWare

                   Publish-Subscribe Middleware   10
Content-based

• Considera o conteúdo dos eventos
  – Atributos internos dos dados
• Mais dinâmico do que o topic-based
• Exemplo:
      “Course=DSMWare and Grade>10”



                   Publish-Subscribe Middleware   11
Outros



• Hybrid-based

• Type-based



                 Publish-Subscribe Middleware   12
Performance vs Expressividade

• Expressividade:
  + content-based
  - topic-based
• Performance:
  + topic-based
  - content-based



                    Publish-Subscribe Middleware   13
Topologias


• Com dispatchers
  – Centralizado
  – Distribuído
• Sem dispatchers



                    Publish-Subscribe Middleware   14
Eventos

• Baixo nível
  – Mensagens
     • Explicitamente criadas pelas aplicações
     • Formato de texto ou XML
• Alto nível
  – Invocações
     • Interfaces bem definidos


                      Publish-Subscribe Middleware   15
Transmissão
• Ponto-a-ponto
  – Eventos são enviados para os Subscribers
    individualmente
  – Usado em sistemas centralizados
• Multi-ponto
  – Eventos são enviados a um conjunto de
    Subscribers
  – Eficiente e escalável

                   Publish-Subscribe Middleware   16
Quality of Service

• Persistência
  – Garantia que a mensagem não é perdida
• Prioridades
  – Mensagens são entregues consoante a sua prioridade
• Transacções
  – Operações múltiplas são agrupadas a nível atómico
• Confiança
  – Garantia de entrega

                      Publish-Subscribe Middleware       17
O que é um Middleware?


            Aplicação

           Middleware

           Transporte

               Rede

              Ligação

               Física




       Publish-Subscribe Middleware   18
Exemplos de Publish-Subscribe
              Middlewares

     Nome             Linguagens                  Patrocínio     Expressividade
     Biztalk              .NET                     Microsoft     Content-based
                                              Apache Software
   ActiveMQ               Java                                    (indefinido)
                                                Foundation
    Tuxedo          C, C++ e COBOL          Oracle Corporation   Content-based
                    C, COBOL, Perl e
WebSphereMQ                                            IBM        (indefinido)
                         Java
                                                  Object
Data Distribution
                    C, C++, C# e Java           Management        Topic-based
    Service
                                                  Group




                             Publish-Subscribe Middleware                         19
Data Distribution Service
                                                                        S1
                                                                      S={A,D}
   P1
 P={A,B}


                   D                                      J
                                            B

                       E
                                                          K
                                    A           F
               C


   P2
P={D,C,J}

                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         20
Data Distribution Service
                                                                            S1
                                                                          S={A,D}
   P1
 P={A,B}
            A

                       D                                      J
                                                B

                           E
                                                              K
                                        A           F
                   C


   P2
P={D,C,J}

                                                                   S4
                                                                  S={A}

                               Publish-Subscribe Middleware                         21
Data Distribution Service
                                                                                S1
                                                                              S={A,D}
   P1                                                                     A
 P={A,B}


                   D                                      J
                                            B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}                                                     A
                                                                   S4
                                                                  S={A}

                           Publish-Subscribe Middleware                                 22
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}
   P1
 P={A,B}


                   D                                      J
                                            B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         23
Data Distribution Service
                                                                                         A
                                                                            S1
                                                                          S={A,D}
   P1
 P={A,B}
            B

                       D                                      J
                                                B

                           E
                                                              K
                                        A
                                        A           F
                   C


   P2
P={D,C,J}
                                                                          A
                                                                   S4
                                                                  S={A}

                               Publish-Subscribe Middleware                         24
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}
   P1
 P={A,B}


                   D                                      J
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         25
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}
   P1
 P={A,B}

                                                                         S2
                   D                                      J           S={A,B,J}
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         26
Data Distribution Service
                                                                                         A
                                                                            S1
                                                                          S={A,D}
   P1
 P={A,B}

                                                                             S2
                   D                                      J               S={A,B,J}
                                           B
                                           B
                                                                      A
                                                               B
                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                          A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                             27
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}
   P1
 P={A,B}
                                                                                     A
                                                                         S2
                   D                                      J           S={A,B,J}      B
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         28
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}



                                                                                     A
                                                                         S2
                   D                                      J           S={A,B,J}      B
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C


   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         29
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}



                                                                                     A
                                                                         S2
                   D                                      J           S={A,B,J}      B
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C
                                                                         S3
                                                                      S={B,D,J}

   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         30
Data Distribution Service
                                                                                         A
                                                                            S1
                                                                          S={A,D}



                                                                                         A
                                                                             S2
                   D                                      J               S={A,B,J}      B
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C
                                                                             S3
                                                                      B   S={B,D,J}

   P2
P={D,C,J}
                                                                          A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                             31
Data Distribution Service
                                                                                     A
                                                                        S1
                                                                      S={A,D}



                                                                                     A
                                                                         S2
                   D                                      J           S={A,B,J}      B
                                           B
                                           B

                       E
                                                          K
                                    A
                                    A           F
               C                                                                     B
                                                                         S3
                                                                      S={B,D,J}

   P2
P={D,C,J}
                                                                      A
                                                               S4
                                                              S={A}

                           Publish-Subscribe Middleware                         32
Data Distribution Service
                                                                                         A
                                                                            S1
                                                                          S={A,D}



                                                                                         A
                                                                             S2
                       D                                      J           S={A,B,J}      B
                                               B
                                               B

                           E
                                                              K
                                        A
                                        A           F
                   C                                                                     B
                                                                             S3
                                                                          S={B,D,J}

   P2       J
P={D,C,J}
                                                                          A
                                                                   S4
                                                                  S={A}

                               Publish-Subscribe Middleware                         33
Data Distribution Service
                                                                                              A
                                                                                 S1
                                                                               S={A,D}



                                                                                              A
                                                                                  S2
                   D                                      JJ                   S={A,B,J}      B
                                           B
                                           B
                                                                           J
                       E
                                                          K
                                    A
                                    A           F
               C                                                                              B
                                                                                  S3
                                                                       J       S={B,D,J}

   P2
P={D,C,J}
                                                                               A
                                                                S4
                                                               S={A}

                           Publish-Subscribe Middleware                                  34
Data Distribution Service
                                                                                      A
                                                                         S1
                                                                       S={A,D}



                                                                                      A
                                                                          S2
                   D                                      JJ           S={A,B,J}      B
                                           B
                                           B
                                                                                      J

                       E
                                                          K
                                    A
                                    A           F
               C                                                                      B
                                                                          S3
                                                                       S={B,D,J}      J
   P2
P={D,C,J}
                                                                       A
                                                                S4
                                                               S={A}

                           Publish-Subscribe Middleware                          35
Data Distribution Service
                                                                                          A
                                                                             S1
                                                                           S={A,D}



                                                                                          A
                                                                              S2
                       D                                      JJ           S={A,B,J}      B
                                               B
                                               B
                                                                                          J

                           E
                                                              K
                                        A
                                        A           F
                   C                                                                      B
                                                                              S3
                                                                           S={B,D,J}      J
   P2       D
P={D,C,J}
                                                                           A
                                                                    S4
                                                                   S={A}

                               Publish-Subscribe Middleware                          36
Data Distribution Service
                                                                                          A
                                                                             S1
                                                                           S={A,D}
                                                                       D

                                                                                          A
                                                                              S2
                   D
                   D                                      JJ               S={A,B,J}      B
                                           B
                                           B
                                                                                          J

                       E
                                                          K
                                    A
                                    A           F
               C                                                                          B
                                                                              S3
                                                                       D   S={B,D,J}      J
   P2
P={D,C,J}
                                                                           A
                                                                S4
                                                               S={A}

                           Publish-Subscribe Middleware                              37
Data Distribution Service
                                                                                      A
                                                                         S1
                                                                       S={A,D}        D


                                                                                      A
                                                                          S2
                   D
                   D                                      JJ           S={A,B,J}      B
                                           B
                                           B
                                                                                      J

                       E
                                                          K
                                    A
                                    A           F
               C                                                                      B
                                                                          S3
                                                                       S={B,D,J}      J
                                                                                      D
   P2
P={D,C,J}
                                                                       A
                                                                S4
                                                               S={A}

                           Publish-Subscribe Middleware                          38
Conclusão
• Publish-Subscribe
   – Boa alternativa para sistemas loosely-coupled com
     necessidade de escalabilidade;
   – Decoupling
      • Espaço
      • Tempo
      • Sincronização
• Compromisso entre escabilidade, expressividade,
  QoS:
   – Depende da arquitectura e implementação do middleware

                        Publish-Subscribe Middleware     39
Obrigado pela atenção!


       Publish-Subscribe Middleware   40
Questões?


 Publish-Subscribe Middleware   41
Mais informações em:



• “The many faces of Publish/subscribe”
  ACM Computing Surveys vol. 35 no. 2, 2003




                 Publish-Subscribe Middleware   42

Mais conteúdo relacionado

Destaque

A scalable and reliable matching service for content based publish subscribe ...
A scalable and reliable matching service for content based publish subscribe ...A scalable and reliable matching service for content based publish subscribe ...
A scalable and reliable matching service for content based publish subscribe ...somnath goud
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven ArchitectureFabien Doiron
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeSumant Tambe
 
XSiena: The Content-Based Publish/Subscribe System
XSiena: The Content-Based Publish/Subscribe SystemXSiena: The Content-Based Publish/Subscribe System
XSiena: The Content-Based Publish/Subscribe SystemZbigniew Jerzak
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven ArchitectureStefan Norberg
 

Destaque (6)

A scalable and reliable matching service for content based publish subscribe ...
A scalable and reliable matching service for content based publish subscribe ...A scalable and reliable matching service for content based publish subscribe ...
A scalable and reliable matching service for content based publish subscribe ...
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
HiveServer2
HiveServer2HiveServer2
HiveServer2
 
XSiena: The Content-Based Publish/Subscribe System
XSiena: The Content-Based Publish/Subscribe SystemXSiena: The Content-Based Publish/Subscribe System
XSiena: The Content-Based Publish/Subscribe System
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 

Último

CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfManuais Formação
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfAlissonMiranda22
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxssuserf54fa01
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 

Último (20)

CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdf
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 

Publish-Subscribe Middlewares

  • 1. Publish-Subscribe Middleware Pedro Fernandes Sistemas Distribuídos e Móveis Faculdade de Ciências da Universidade do Porto 2009/2010
  • 2. Paradigma Publish-Subscribe • Subscribers registam interesse em eventos ou num conjunto de eventos – Subscriber é o consumidor de eventos • Publishers publicam eventos – Publisher é o gerador de eventos • Subscribers recebem notificação dos eventos de forma assíncrona • Dispatchers/Brokers são o elo de ligação entre ambos. Publish-Subscribe Middleware 2
  • 3. Paradigma Publish-Subscribe subscribe/ Dispatcher unsubscribe Publisher publish Subscriber /Broker notify Publish-Subscribe Middleware 3
  • 4. Motivação • Sistemas tightly-coupled não escalam • Sistemas distribuídos de larga escala – componentes diferem: • Localização • Latência • Tempo de vida • … • Loosely-coupled – Participantes operam de forma independente Publish-Subscribe Middleware 4
  • 5. Decoupling • Principal característica do Publish-Subscribe: loosely-coupled – A geração e consumo de informação é independente • Decoupling a diversos níveis: – Espaço – Tempo – Sincronização Publish-Subscribe Middleware 5
  • 6. Space-decoupling Subscriber Dispatcher Publisher publish notify Subscriber /Broker Subscriber Publish-Subscribe Middleware 6
  • 7. Time-decoupling Dispatcher Publisher publish Subscriber /Broker T I M E Dispatcher Publisher notify Subscriber /Broker Publish-Subscribe Middleware 7
  • 8. Synchronization-decoupling Publisher Subscriber Dispatcher /Broker Publish-Subscribe Middleware 8
  • 9. Expressividade • Topic-based • Content-based • outros – Hybrid-based – Type-based Publish-Subscribe Middleware 9
  • 10. Topic-based • Subscreve tópicos – Identificados por keywords • Nome dos tópicos expresso por intermédio de notação URL • Exemplo: Eurecom/Courses/DSMWare Publish-Subscribe Middleware 10
  • 11. Content-based • Considera o conteúdo dos eventos – Atributos internos dos dados • Mais dinâmico do que o topic-based • Exemplo: “Course=DSMWare and Grade>10” Publish-Subscribe Middleware 11
  • 12. Outros • Hybrid-based • Type-based Publish-Subscribe Middleware 12
  • 13. Performance vs Expressividade • Expressividade: + content-based - topic-based • Performance: + topic-based - content-based Publish-Subscribe Middleware 13
  • 14. Topologias • Com dispatchers – Centralizado – Distribuído • Sem dispatchers Publish-Subscribe Middleware 14
  • 15. Eventos • Baixo nível – Mensagens • Explicitamente criadas pelas aplicações • Formato de texto ou XML • Alto nível – Invocações • Interfaces bem definidos Publish-Subscribe Middleware 15
  • 16. Transmissão • Ponto-a-ponto – Eventos são enviados para os Subscribers individualmente – Usado em sistemas centralizados • Multi-ponto – Eventos são enviados a um conjunto de Subscribers – Eficiente e escalável Publish-Subscribe Middleware 16
  • 17. Quality of Service • Persistência – Garantia que a mensagem não é perdida • Prioridades – Mensagens são entregues consoante a sua prioridade • Transacções – Operações múltiplas são agrupadas a nível atómico • Confiança – Garantia de entrega Publish-Subscribe Middleware 17
  • 18. O que é um Middleware? Aplicação Middleware Transporte Rede Ligação Física Publish-Subscribe Middleware 18
  • 19. Exemplos de Publish-Subscribe Middlewares Nome Linguagens Patrocínio Expressividade Biztalk .NET Microsoft Content-based Apache Software ActiveMQ Java (indefinido) Foundation Tuxedo C, C++ e COBOL Oracle Corporation Content-based C, COBOL, Perl e WebSphereMQ IBM (indefinido) Java Object Data Distribution C, C++, C# e Java Management Topic-based Service Group Publish-Subscribe Middleware 19
  • 20. Data Distribution Service S1 S={A,D} P1 P={A,B} D J B E K A F C P2 P={D,C,J} S4 S={A} Publish-Subscribe Middleware 20
  • 21. Data Distribution Service S1 S={A,D} P1 P={A,B} A D J B E K A F C P2 P={D,C,J} S4 S={A} Publish-Subscribe Middleware 21
  • 22. Data Distribution Service S1 S={A,D} P1 A P={A,B} D J B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 22
  • 23. Data Distribution Service A S1 S={A,D} P1 P={A,B} D J B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 23
  • 24. Data Distribution Service A S1 S={A,D} P1 P={A,B} B D J B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 24
  • 25. Data Distribution Service A S1 S={A,D} P1 P={A,B} D J B B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 25
  • 26. Data Distribution Service A S1 S={A,D} P1 P={A,B} S2 D J S={A,B,J} B B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 26
  • 27. Data Distribution Service A S1 S={A,D} P1 P={A,B} S2 D J S={A,B,J} B B A B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 27
  • 28. Data Distribution Service A S1 S={A,D} P1 P={A,B} A S2 D J S={A,B,J} B B B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 28
  • 29. Data Distribution Service A S1 S={A,D} A S2 D J S={A,B,J} B B B E K A A F C P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 29
  • 30. Data Distribution Service A S1 S={A,D} A S2 D J S={A,B,J} B B B E K A A F C S3 S={B,D,J} P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 30
  • 31. Data Distribution Service A S1 S={A,D} A S2 D J S={A,B,J} B B B E K A A F C S3 B S={B,D,J} P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 31
  • 32. Data Distribution Service A S1 S={A,D} A S2 D J S={A,B,J} B B B E K A A F C B S3 S={B,D,J} P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 32
  • 33. Data Distribution Service A S1 S={A,D} A S2 D J S={A,B,J} B B B E K A A F C B S3 S={B,D,J} P2 J P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 33
  • 34. Data Distribution Service A S1 S={A,D} A S2 D JJ S={A,B,J} B B B J E K A A F C B S3 J S={B,D,J} P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 34
  • 35. Data Distribution Service A S1 S={A,D} A S2 D JJ S={A,B,J} B B B J E K A A F C B S3 S={B,D,J} J P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 35
  • 36. Data Distribution Service A S1 S={A,D} A S2 D JJ S={A,B,J} B B B J E K A A F C B S3 S={B,D,J} J P2 D P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 36
  • 37. Data Distribution Service A S1 S={A,D} D A S2 D D JJ S={A,B,J} B B B J E K A A F C B S3 D S={B,D,J} J P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 37
  • 38. Data Distribution Service A S1 S={A,D} D A S2 D D JJ S={A,B,J} B B B J E K A A F C B S3 S={B,D,J} J D P2 P={D,C,J} A S4 S={A} Publish-Subscribe Middleware 38
  • 39. Conclusão • Publish-Subscribe – Boa alternativa para sistemas loosely-coupled com necessidade de escalabilidade; – Decoupling • Espaço • Tempo • Sincronização • Compromisso entre escabilidade, expressividade, QoS: – Depende da arquitectura e implementação do middleware Publish-Subscribe Middleware 39
  • 40. Obrigado pela atenção! Publish-Subscribe Middleware 40
  • 42. Mais informações em: • “The many faces of Publish/subscribe” ACM Computing Surveys vol. 35 no. 2, 2003 Publish-Subscribe Middleware 42