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
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
7. Time-decoupling
Dispatcher
Publisher publish Subscriber
/Broker
T
I
M
E
Dispatcher
Publisher notify Subscriber
/Broker
Publish-Subscribe Middleware 7
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
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