SlideShare uma empresa Scribd logo
1 de 5
Publish-Subscribe Middleware
                                                          Pedro Fernandes
                                                     Departamento de Ciência de
                                                           Computadores
                                               Faculdade de Ciências da Universidade
                                                             do Porto


RESUMO                                                               interessados. Um evento pode ser visto como uma mensagem
Neste artigo vamos descrever os conceitos associados ao              enviada por um produtor de informação e implicitamente
paradigma de Publish-Subscribe, assim como alguns                    endereçada ao conjunto de todos os consumidores que
Middlewares que os implementam.                                      subscreveram esse género de evento. (ver Figura 1)


Palavras-chave
Publish-Subscriber Middleware.

1. INTRODUÇÃO                                                                     Figura 1: Paradigma Publish-Subscribe.
As aplicações de software, fruto da miniaturização e mobilidade
crescente dos equipamentos, estão cada vez mais a necessitar de      As necessidades de processamento de informação neste género
seguir modelos distribuídos. Hoje em dia, as aplicações              de paradigma são imensas. Sendo que a plataforma de
necessitam de comutar dados de e para muitos outros nós              middleware está encarregue de executar o processamento,
computacionais vizinhos, agregando muitas vezes o seu poder          filtrando informação para teoricamente milhões de utilizadores,
computacional, num sistema em rede cada vez mais extenso.            dadas as suas alterações de localização, alteração de perfil (i.e.,
Este género de aplicações encontra diversas finalidades:             as subscrições que fazem no momento) e a informação estática e
aeroespaciais, militares, industriais e comerciais. [1]              dinâmica do meio ambiente. [1] O local, no seio do sistema, onde
Comum a todas estas aplicações está a necessidade de colectar        é feito esse processamento vai depender depois da topologia
continuamente dados e integrá-los de forma distribuída entre um      adoptada (como veremos no tópico 3.2).
largo conjunto de utilizadores, sítios e aplicações. A aplicação     Estes novos sistemas necessitam de novos padrões e algoritmos
tem pois de filtrar e distribuir dados relevantes para o interesse   de comunicação. Dos vários middlewares que surgiram para
dos utilizadores e outros componentes, de uma forma persistente.     colmatar as novas exigências, temos que a maior parte inclui as
Mais abstractamente, na maior parte dos cenários, a maioria dos      arquitecturas publish-subscribe. Estas representam actualmente
referidos nós constituem entidades desconhecidas das restantes e     os padrões mais eficientes para a transmissão de dados desde o
tanto a fonte dos dados como o destinatário podem por vezes não      produtor até aos muitos consumidores. [2]
estar presentes na rede ao mesmo tempo. [1]
O paradigma tradicional de request-response, altamente
                                                                     2.1 O que é um Middleware?
advogado como um paradigma de computação distribuída de
                                                                     Um middleware é uma peça de software reutilizável que reside
eleição, não é adequado para encarar estes novos desafios. Nesse
                                                                     entre as camadas de aplicação e o sistema operativo, camadas de
modelo clássico de abordagem dita pull-based, um cliente, que
                                                                     rede e camadas físicas. (Figura 2)
necessite de updates instantâneos de informação, necessitaria de
questionar o provider (ou servidor) continuamente, levando a
congestão da rede.
Os requisitos actuais estão a levar a necessidade de adopção de
modelos de disseminação de informação que, ofereçam aos
utilizadores informação pertinente com um elevado grau de
disponibilidade, através duma abordagem push-based. É este tipo
de abordagem que o paradigma publish-subscribe segue.


2. PARADIGMA
Este paradigma constitui um simples modelo de interacção que
consiste em produtores (publishers) de informação, que publicam            Figura 2: Localização do Middleware no modelo OSI.
eventos no sistema, e pelos consumidores (subscribers) de
informação, que subscrevem os eventos que lhes interessam            O principal papel do middleware é então o de interligar as
dentro do sistema. O sistema de publish-subscribe assegura a         aplicações com as restantes camadas de mais baixo nível, assim
notificação por ordem temporal dos eventos aos subscribers
como outras infra-estruturas, coordenando a forma como as          3.2 Topologia
aplicações interagem entre si.                                     Na topologia dos event dispatcher podemos ter duas opções de
O recurso a middlewares é especialmente importante em              configuração: centralizado ou distribuído. No primeiro caso
situações onde os processos executam em plataformas ou             temos um componente único que age como event dispatcher, o
arquitecturas diferentes, visto potenciar a interoperabilidade e   que potencialmente reduz a escalabilidade do sistema e introduz
comunicação das mesmas.                                            um ponto único de falha.
                                                                   No caso de middlewares publish subscribe que providenciem
                                                                   arquitecturas distribuídas verifica-se um conjunto de dispatching
3. PUBLISH-SUBSCRIBE MIDDLEWARE                                    servers inter-ligados que, cooperam na colecta de subscrições
As aplicações que exploram os mecanismos do publish-subscribe      vindas de clientes e no roteamento dos eventos, com o objectivo
middleware organizam os seus clientes como colecções de            de reduzir a sobrecarga da rede e aumentar a escalabilidade da
componentes autónomos, que interagem publicando notificações       mesma. [1]
de eventos, ao mesmo tempo que subscrevem as classes de            É natural que, em sistemas com arquitectura distribuída, cada
eventos nas quais estão interessados. O event dispatcher (ou       middleware apresente estratégias diferentes para os seus
event broker) é o componente da arquitectura responsável por       dispatchers, no que concerne ao processamento de eventos e
colectar as subscrições e enviar os eventos para os subscribers.   subscrições proveniente de um mesmo conjunto de clientes. [2]
(ver Figura 1)
                                                                   Existem mesmo alguns sistemas de publish-subscribe que
Dado o enorme potencial deste paradigma, nos últimos anos têm      eliminam por completo os dispatchers, deixando a tarefa de
sido desenvolvidos um grande número de publish-subscribe           roteamento e filtragem encarregue aos próprios publishers e
middlewares, alguns deles com diferentes abordagens para o         subscribers, permitindo assim que as mensagens sejam
mesmo paradigma.                                                   transmitidas directamente entre ambos. [7]
Em cada uma dessas abordagens são criadas Application
Programming Interface (API) específicas que permitem então
controlar o fluxo de comunicação entre os subscribers, os
                                                                   3.3 Eventos
                                                                   As unidades trocadas entre publishers, dispatchers e subscribers
publishers e os dispatchers.
                                                                   dentro do sistema publish-subscribe designam-se por eventos. Ao
De entre essas diversas abordagens, destacamos alguns pontos       nível dos eventos podemos destacar dois tipos: baixo e alto nível.
que consideramos preponderantes para o sucesso de um
                                                                   Os eventos de baixo nível incluem as mensagens de texto ou
middleware deste género:
                                                                   formatos mais complexos como o XML. (que favorece, em larga
                                                                   medida, a troca de mensagens entre plataformas assentes em
3.1 Expressividade                                                 sistemas operativos ou arquitecturas diferentes)
A expressividade da linguagem de subscrição delineia a             Os eventos de alto nível incluem a invocação de métodos
separação entre sistemas considerados topic-based, onde as         remotos. Nestes casos é conveniente que existam Interfaces pré-
subscrições identificam apenas as classes dos eventos              definidas, para que a comunicação consiga estabelecer-se entre
pretendidos (enunciados por intermédio de URL1), e os sistemas     os componentes.
content-based, onde as subscrições contêm expressões
                                                                   Outra das características dos eventos é o facto de serem stateless.
(chamados de event patterns) que permitem um sofisticado           Conceptualmente, os eventos não têm persistência no sistema
mecanismo de busca, no próprio conteúdo do evento, orientado       nem forma de confirmar a sua recepção. Eles são enviados
aos assuntos pretendidos. [7]                                      apenas para os componentes que subscreveram o evento antes de
Estes são os graus de expressividade mais comuns, mas existem      este ser publicado. No entanto é possível contornar esta
algumas publicações que enunciam outros mais. Nomeadamente         característica, como veremos mais adiante. [6]
a type-based e a hybrid-based.
As type-based valem-se das capacidades das próprias linguagens
de programação em definir tipos e subtipos, classificando dessa    3.4 Transmissão
forma os eventos. Proporciona-se assim um grau mais elevado de     Ao nível da transmissão podemos ter dois tipos: ponto-a-ponto ou
especialização, que a maior parte dos outros métodos de            multi-ponto.
subscrição (especialmente o topic-based) não suporta. [5]          As transmissões ponto-a-ponto são mais comuns em sistemas
No caso do hybrid-based, propõe-se estabelecer um mecanismo        request-response      que,   operam     segundo     arquitecturas
simbiótico entre content-based e topic-based, oferecendo dessa     centralizadas, onde os eventos são enviados individualmente para
forma uma maior escalabilidade decorrente do uso de técnicas de    o cliente respectivo.
comunicação sofisticadas e orientadas para a resolução de          Em multi-ponto, os eventos são transmitidos directamente para
situações muito específicas. [4]                                   um conjunto de subscribers que estão interessados nos mesmos.
                                                                   Esta forma de transmissão permite uma maior escalabilidade e
                                                                   eficiência. [6]
1
    Uniform Resource Locator
3.5 Quality of Service
Alguns dos middlewares possibilitam catalogar os eventos com                      Instabilidade de throughtput (períodos de forte
uma série de parâmetros extra que, ajudam a implementar                           sobrecarga contrastam com outros de total silêncio)
mecanismos de suporte ao publish-subscribe e assim colmatar
                                                                                  Lentidão - quando mais e mais aplicações/componentes
algumas das suas lacunas. [6]
                                                                                  usam a infra-estrutura (mesmo quando tratam de
Alguns dos benefícios dessa simbiose traduzem-se a nível de:                      eventos diferentes)
         Persistência: garantia de que o evento não é extraviado;                 IP broadcast storms (que ao saturarem a rede local
         Prioridades: eventos podem ser catalogados consoante a                   podem levar a desactivação da mesma)
         sua importância;
         Transacções: eventos relacionados          podem      ser
         agrupados a nível atómico;
                                                                     6. EXEMPLOS DE PUBLISH-SUBSCRIBE
                                                                     MIDDLEWARE
         Confiança: garantia de entrega dos eventos.                 A nível conceptual o paradigma publish-subscribe fornece já uma
                                                                     série de características base que, dependendo do objectivo de
                                                                     cada middleware e das suas necessidades, podem ser exploradas.
4. VANTAGENS                                                         Mas para além disso existem uma série de mecanismos extra
Recapitulando, o paradigma de publish-subscribe introduz uma         (como já vimos) que podem ser implementados em conjunto para
série de vantagens, em relação a outros (como o request-             adicionar mais capacidades ao middleware.
response), que os middlewares que o utilizam podem potenciar.
                                                                     Na tabela seguinte, podemos ver alguns dos principais
Desde logo porque os publishers são loosely-coupled em relação       middlewares que implementam serviços baseados em publish-
aos subscribers, ou seja, não necessitam sequer de saber da sua      subscribe e que estão disponíveis no mercado. (ver Tabela 1)
existência. Estando o foco direccionado para o evento, tanto os
subscribers como os publishers permanecem ignorantes
relativamente a topologia do sistema onde se encontram. Cada               Tabela 1: Alguns Publish-Subscribe Middlewares. [8-13]
um deles pode operar independentemente do outro.                           Nome          Linguagem        Patrocínio      Expressividade
Num paradigma request-response (dito tightly-coupled), o cliente          BizTalk           .NET           Microsoft      Content-based
não pode enviar mensagens enquanto o processo do servidor não            ActiveMQ           Java        Apache Software     (indefinido)
estiver a executar. Nem o servidor pode receber mensagens                                                 Foundation
enquanto o cliente não executar o pedido.
                                                                           Tuxedo          C,C++ e          Oracle        Content-based
Portanto, em publish-subscribe o sistema está desacoplado não                              COBOL          Corporation
só a nível de sincronização, mas também a nível temporal e           WebSphere MQ        C, COBOL,           IBM            (indefinido)
espacial. [6]                                                                            Perl e Java
Para sistemas de média escala, os paradigmas de publish-                    Data         C,C++,C# e        Object          Topic-based
subscribe providenciam uma melhor escalabilidade do que os               Distribution       Java         Management
                                                                           Service                         Group
tradicionais request-response. Seja por operações paralelas,
caching de mensagens ou diferentes tipologias de routing.
No entanto, e à medida que os sistemas escalam para tornar-se        Podemos então explorar mais em pormenor algumas das
datacenters com centenas de servidores partilhando a                 características desses middlewares. Nomeadamente do Data
infraestrutura publish-subscribe, estas grandes vantagens podem      Distribution System, que é um standard muito conhecido para
tornar-se problemáticas.                                             mecanismos publish-subscribe; o WebSphere MQ que é dos
                                                                     mecanismos com mais tradição e mais utilizados actualmente a
                                                                     nível de produção; o Tuxedo por ter sido recentemente adquirido
5. DESVANTAGENS                                                      por uma das empresas em maior expansão no mundo das novas
Os problemas mais sérios do publish-subscribe advêm dos              tecnologias.
efeitos secundários de um dos seus trunfos: o facto da relação
                                                                     6.1.1 Data Distribution System
entre publisher e subscriber ser loosely-coupled. [7]
                                                                     O Data Distribution Service (DDS) surge fruto do consórcio
Por exemplo, quando uma aplicação necessita de uma garantia de       entre os dois maiores impulsionadores do DDS: American Real-
entrega, (i.e., de que a mensagem é sempre entregue ou que caso      Time Innovations e o French Thales Group. Ambas as
não seja possível confirmar a entrega, o publisher é informado) o    instituições juntaram esforços no sentido de criar uma
sistema publish-subscribe em si, conceptualmente, não tem            especificação única que, foi mais tarde aprovada pela Object
forma de providenciar essa certeza.                                  Management Group2, resultando em 2003 no aparecimento da
As dificuldades em escalar, para sistemas de muito grande            primeira versão do DDS.
dimensão, acabam também por traduzir-se em mais
desvantagens:                                                        2
                                                                         Também responsável por standards como UML e CORBA.
O DDS é uma especificação de publish-subscribe middleware           envia, o Queue Manager armazena a mensagem até que o
para sistemas distribuídos, criado em resposta a necessidade de     receptor a peça de novo.
standardização de modelos publish-subscribe em tempo real e         A ordem de todas as mensagens é assim também preservada
centrados na troca de dados.                                        através do uso de ordenação FIFO, para cada tipo de prioridade.
O middleware do DDS simplifica a programação de redes               [11]
complexas, implementando um modelo de publish-subscribe
para envio e recepção de dados, eventos e comandos entre os
componentes. Componentes que estejam a produzir informação          6.1.3 Tuxedo
(publishers) criam tópicos (por exemplo, temperatura,               O Tuxedo foi originalmente desenvolvido pela AT&T em 1983
localização, pressão) e publicam amostras. O DDS encarrega-se       com o objectivo de criar e administrar sistemas de suporte a
então da entrega das amostras a todos os subscribers que            operações e processamento de transacções online (OLTP). Após
declararam interesse no tópico respectivo.                          uma série de aquisições e fusões a empresa BEA Systems, na
O DDS trata de todos os aspectos necessários a entrega da           altura detentora dos direitos do Tuxedo, acabou por ser adquirida
mensagem automaticamente, sem requerer qualquer intervenção         pela Oracle em 2008.
por parte das aplicações do utilizador. Alguns desses aspectos      O middleware Tuxedo foi desenhado desde o início para dar
prendem-se com:                                                     suporte a aplicações de alta disponibilidade e providenciar
                                                                    mecanismos escaláveis que possibilitassem centenas de
                                                                    transacções por segundo em sistemas distribuídos comuns.
            determinar quem vai receber as mensagens
                                                                    A sua base assenta fortemente no mecanismo de Bulletin Board
            onde estão localizados os destinatários                 (BB) responsável pelo clustering do sistema. Este consiste num
            o que acontece caso a mensagem não seja entregue        segmento de memória partilhada que contêm o estado do
                                                                    domínio gerido pelo Tuxedo. Servidores, serviços, transacções e
                                                                    clientes estão todos registados no BB providenciando assim uma
O DDS permite que o utilizador especifique uma série de             visão global do estado particular de cada um dos componentes.
parâmetros QoS3 de forma a configurar os mecanismos de
                                                                    Para assegurar a manutenção desses dados existe um processo
descoberta automática de mensagens e especificar os
                                                                    chamado Bulletin Board Liaison (BBL) que executa em cada um
comportamentos a ter quando envia e recebe as mesmas.
                                                                    dos componentes de forma a manter a cópia central do BB
O DDS permite também executar automaticamente mecanismos            sempre actualizada. [10]
de redundância entre os publishers, caso algum deles falhe.
Dessa forma garante-se que os subscribers recebem sempre uma
amostra dos dados cuja prioridade tenha sido configurada como
elevada e cujo período de validade não tenha ainda expirado. Isto   7. CONCLUSÃO
ocorre de forma transparente para o subscriber. [8]                 Decorrente do facto de assentar num mecanismo loosely-coupled,
                                                                    o paradigma de Publish-Subscribe apresenta-se como a melhor
                                                                    alternativa para comunicação entre sistemas que necessitem de
6.1.2 WebSphere MQ                                                  uma elevada escalabilidade. Proporcionando um desacoplamento
O WebSphere MQ (WMQ) representa a evolução do trabalho              a nível de: sincronização, tempo e espaço.
desenvolvido pela IBM desde 1992 na primeira versão do seu          No entanto, deve-se ter alguma reserva na sua utilização uma vez
MQSeries.                                                           que, dependendo da arquitectura pretendida e a utilização mais
                                                                    intensiva do sistema, as suas características podem tornar-se
O middleware WMQ providencia a chamada one-time delivery de
mensagens entre uma larga variedade de plataformas. Este            problemáticas. Originando instabilidade de throughput, IP
                                                                    broadcast storms e lentidão na obtenção de resposta.
middleware enfatiza a segurança e robustez (através do uso de
logs) do tráfego de mensagens, para que nunca sejam dadas como      Apesar de tudo, existe um grande suporte ao paradigma Publish-
perdidas num sistema bem configurado.                               Subscribe vindo de algumas das referências no mundo das novas
O agente principal de comunicação no WMQ é o Queue                  tecnologias: Oracle, IBM e Microsoft, são exemplos disso.
Manager. Este trata do armazenamento, temporização, triggering      No futuro, fruto desse suporte, prevê-se então o aparecimento de
e todas as outras funções não relacionadas com o trajecto a         mais e melhores middlewares que tirem partido das
percorrer pelos dados.                                              características conceptuais do Publish-Subscribe, e se possível
O middleware WMQ providencia assim aos programadores um             resolvam algumas das suas lacunas.
mecanismo para alcançar arquitecturas onde as mensagens são         Prevê-se também a adopção consistente deste paradigma em
enviadas de uma aplicação para outra, sem que ambas                 aplicações direccionadas a dispositivos móveis, nomeadamente
necessitem de estar a executar ao mesmo tempo. Se uma               para telemóveis. [1]
aplicação receptora não está a escuta, quando o remetente a


3
    Quality of Service
[7] Publish-Subscribe
8. REFERÊNCIAS                                                       http://en.wikipedia.org/wiki/Publish/subscribe
                                                                     4 de Dezembro 2009.
[1] Gianpaolo Cugola and Arno Jacobsen. Using
    Publish/Subscribe Middleware for Mobile Systems. Mobile      [8] Data Distribution Service
    Computing and Communications Review, Volume 1,                   http://en.wikipedia.org/wiki/Data_Distribution_Service
    Number 2.
                                                                     4 de Dezembro 2009.
[2] Mohamed Mastouri and Salem Hasnaoui. Performance of a
    Publish/Subscribe Middleware for the Real-Time               [9] Apache ActiveMQ
    Distributed Control systems. IJCSNS, VOL.7 No.1, Janeiro         http://en.wikipedia.org/wiki/Apache_ActiveMQ
    2007                                                             4 de Dezembro 2009.
[3] Bogumil Zieba, Maurice Glandrup, Marten van Sinderen,        [10] Tuxedo
    Maarten Wegdam. Reconfiguration Service for
    Publish/Subscribe Middleware. European Research                  http://en.wikipedia.org/wiki/Tuxedo_(software)
    Programme.                                                       4 de Dezembro 2009.
[4] Roman Szarowrski. Hybrid Publish-Subscribe: A                [11] IBM WebSphere MQ
    compromise approuch for large scale. Czech Technical
                                                                     http://en.wikipedia.org/wiki/IBM_WebSphere_MQ
    University in Prague.
                                                                     4 de Dezembro 2009.
[5] Patrick Eugster, Rachid Guerraoui. Type-Based
    Publish/Subscribe. Agilent Laboratories Scotland,            [12] Microsoft BizTalk Server
    Edinburgh.                                                       http://en.wikipedia.org/wiki/Microsoft_BizTalk_Server
[6] Patrick Eugster, Pascal Felber, Rachid Guerraoui. The many       4 de Dezembro 2009.
    faces of Publish-Subscribe Middleware. ACM Computing
    Surveys vol. 35 no. 2, 2003

Mais conteúdo relacionado

Mais procurados

[AWSマイスターシリーズ] Amazon SQS / SNS
[AWSマイスターシリーズ] Amazon SQS / SNS[AWSマイスターシリーズ] Amazon SQS / SNS
[AWSマイスターシリーズ] Amazon SQS / SNS
Amazon Web Services Japan
 

Mais procurados (20)

weather-data-processing-using-python
weather-data-processing-using-pythonweather-data-processing-using-python
weather-data-processing-using-python
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
20150219 初めての「embulk」
20150219 初めての「embulk」20150219 初めての「embulk」
20150219 初めての「embulk」
 
ここが良かったDatadog
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadog
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
 
[AWSマイスターシリーズ] Amazon SQS / SNS
[AWSマイスターシリーズ] Amazon SQS / SNS[AWSマイスターシリーズ] Amazon SQS / SNS
[AWSマイスターシリーズ] Amazon SQS / SNS
 
온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)
온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)
온프레미스 쿠버네티스에서도 로드밸런서를 (w MetalLB)
 
20170919 AWS Black Belt Online Seminar AWS Database Migration Service
20170919 AWS Black Belt Online Seminar AWS Database Migration Service20170919 AWS Black Belt Online Seminar AWS Database Migration Service
20170919 AWS Black Belt Online Seminar AWS Database Migration Service
 
Ansible入門.pptx
Ansible入門.pptxAnsible入門.pptx
Ansible入門.pptx
 
Automatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot FrameworkAutomatisations des tests fonctionnels avec Robot Framework
Automatisations des tests fonctionnels avec Robot Framework
 
Appium: Automation for Mobile Apps
Appium: Automation for Mobile AppsAppium: Automation for Mobile Apps
Appium: Automation for Mobile Apps
 
Amazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみたAmazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみた
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
Desenvolvendo Apps Nativos com Flutter
Desenvolvendo Apps Nativos com FlutterDesenvolvendo Apps Nativos com Flutter
Desenvolvendo Apps Nativos com Flutter
 
Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!
 
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
徹底解説!Project Lambdaのすべて リターンズ[祝Java8Launch #jjug]
 
Universal Links対応をした話
Universal Links対応をした話Universal Links対応をした話
Universal Links対応をした話
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
 
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
 

Destaque

Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
Markus Christen
 
Publisher subscriber pattern
Publisher subscriber patternPublisher subscriber pattern
Publisher subscriber pattern
DaeMyung Kang
 
Publish subscribe model overview
Publish subscribe model overviewPublish subscribe model overview
Publish subscribe model overview
Ishraq Al Fataftah
 

Destaque (16)

Publish-Subscribe Middlewares
Publish-Subscribe MiddlewaresPublish-Subscribe Middlewares
Publish-Subscribe Middlewares
 
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 ...
 
Sd capitulo01
Sd capitulo01Sd capitulo01
Sd capitulo01
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
 
Padrões de Projeto - Observer
Padrões de Projeto - ObserverPadrões de Projeto - Observer
Padrões de Projeto - Observer
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto Observer
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Publisher subscriber pattern
Publisher subscriber patternPublisher subscriber pattern
Publisher subscriber pattern
 
Publish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event AggregatorPublish & Subscribe to events using an Event Aggregator
Publish & Subscribe to events using an Event Aggregator
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Publish subscribe model overview
Publish subscribe model overviewPublish subscribe model overview
Publish subscribe model overview
 
Algoritmos - Procedimentos
Algoritmos - ProcedimentosAlgoritmos - Procedimentos
Algoritmos - Procedimentos
 
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
 
Observer - Padrões de projeto
Observer - Padrões de projetoObserver - Padrões de projeto
Observer - Padrões de projeto
 
Padrões de Projeto - Design Patterns
Padrões de Projeto - Design PatternsPadrões de Projeto - Design Patterns
Padrões de Projeto - Design Patterns
 

Semelhante a Publish-Subscribe Middlewares

Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
Portal_do_Estudante_SD
 

Semelhante a Publish-Subscribe Middlewares (20)

Artigo sd
Artigo sdArtigo sd
Artigo sd
 
TOP Middleware-Basico-20181023.pdf
TOP Middleware-Basico-20181023.pdfTOP Middleware-Basico-20181023.pdf
TOP Middleware-Basico-20181023.pdf
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
 
Sistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo realSistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo real
 
Conceitos basicos
Conceitos basicosConceitos basicos
Conceitos basicos
 
Distributed Systems - Exercises
Distributed Systems - ExercisesDistributed Systems - Exercises
Distributed Systems - Exercises
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
Modular Monoliths - Como é possível organizar sua aplicação para habilitar um...
 
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
TDC2018SP | Trilha Microservices - Modular Monoliths - Como e possivel organi...
 
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
Um Injetor de Falhas para a Avaliação de Aplicações Distribuídas Baseadas no ...
 
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃOCOMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Utilização de sistemas distribuidos
Utilização de sistemas distribuidosUtilização de sistemas distribuidos
Utilização de sistemas distribuidos
 
Introducao.2s
Introducao.2sIntroducao.2s
Introducao.2s
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Linguagens Dinamicas vs Tradicionais / Potencialidades e riscos de EAI/ESB, S...
Linguagens Dinamicas vs Tradicionais / Potencialidades e riscos de EAI/ESB, S...Linguagens Dinamicas vs Tradicionais / Potencialidades e riscos de EAI/ESB, S...
Linguagens Dinamicas vs Tradicionais / Potencialidades e riscos de EAI/ESB, S...
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativos
 
Middleware
MiddlewareMiddleware
Middleware
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em Nuvem
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1
 

Último

19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 

Último (20)

O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
classe gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptxclasse gramatical Substantivo apresentação..pptx
classe gramatical Substantivo apresentação..pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdfAPRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
APRESENTAÇÃO - BEHAVIORISMO - TEORIA DA APRENDIZAGEM.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 

Publish-Subscribe Middlewares

  • 1. Publish-Subscribe Middleware Pedro Fernandes Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto RESUMO interessados. Um evento pode ser visto como uma mensagem Neste artigo vamos descrever os conceitos associados ao enviada por um produtor de informação e implicitamente paradigma de Publish-Subscribe, assim como alguns endereçada ao conjunto de todos os consumidores que Middlewares que os implementam. subscreveram esse género de evento. (ver Figura 1) Palavras-chave Publish-Subscriber Middleware. 1. INTRODUÇÃO Figura 1: Paradigma Publish-Subscribe. As aplicações de software, fruto da miniaturização e mobilidade crescente dos equipamentos, estão cada vez mais a necessitar de As necessidades de processamento de informação neste género seguir modelos distribuídos. Hoje em dia, as aplicações de paradigma são imensas. Sendo que a plataforma de necessitam de comutar dados de e para muitos outros nós middleware está encarregue de executar o processamento, computacionais vizinhos, agregando muitas vezes o seu poder filtrando informação para teoricamente milhões de utilizadores, computacional, num sistema em rede cada vez mais extenso. dadas as suas alterações de localização, alteração de perfil (i.e., Este género de aplicações encontra diversas finalidades: as subscrições que fazem no momento) e a informação estática e aeroespaciais, militares, industriais e comerciais. [1] dinâmica do meio ambiente. [1] O local, no seio do sistema, onde Comum a todas estas aplicações está a necessidade de colectar é feito esse processamento vai depender depois da topologia continuamente dados e integrá-los de forma distribuída entre um adoptada (como veremos no tópico 3.2). largo conjunto de utilizadores, sítios e aplicações. A aplicação Estes novos sistemas necessitam de novos padrões e algoritmos tem pois de filtrar e distribuir dados relevantes para o interesse de comunicação. Dos vários middlewares que surgiram para dos utilizadores e outros componentes, de uma forma persistente. colmatar as novas exigências, temos que a maior parte inclui as Mais abstractamente, na maior parte dos cenários, a maioria dos arquitecturas publish-subscribe. Estas representam actualmente referidos nós constituem entidades desconhecidas das restantes e os padrões mais eficientes para a transmissão de dados desde o tanto a fonte dos dados como o destinatário podem por vezes não produtor até aos muitos consumidores. [2] estar presentes na rede ao mesmo tempo. [1] O paradigma tradicional de request-response, altamente 2.1 O que é um Middleware? advogado como um paradigma de computação distribuída de Um middleware é uma peça de software reutilizável que reside eleição, não é adequado para encarar estes novos desafios. Nesse entre as camadas de aplicação e o sistema operativo, camadas de modelo clássico de abordagem dita pull-based, um cliente, que rede e camadas físicas. (Figura 2) necessite de updates instantâneos de informação, necessitaria de questionar o provider (ou servidor) continuamente, levando a congestão da rede. Os requisitos actuais estão a levar a necessidade de adopção de modelos de disseminação de informação que, ofereçam aos utilizadores informação pertinente com um elevado grau de disponibilidade, através duma abordagem push-based. É este tipo de abordagem que o paradigma publish-subscribe segue. 2. PARADIGMA Este paradigma constitui um simples modelo de interacção que consiste em produtores (publishers) de informação, que publicam Figura 2: Localização do Middleware no modelo OSI. eventos no sistema, e pelos consumidores (subscribers) de informação, que subscrevem os eventos que lhes interessam O principal papel do middleware é então o de interligar as dentro do sistema. O sistema de publish-subscribe assegura a aplicações com as restantes camadas de mais baixo nível, assim notificação por ordem temporal dos eventos aos subscribers
  • 2. como outras infra-estruturas, coordenando a forma como as 3.2 Topologia aplicações interagem entre si. Na topologia dos event dispatcher podemos ter duas opções de O recurso a middlewares é especialmente importante em configuração: centralizado ou distribuído. No primeiro caso situações onde os processos executam em plataformas ou temos um componente único que age como event dispatcher, o arquitecturas diferentes, visto potenciar a interoperabilidade e que potencialmente reduz a escalabilidade do sistema e introduz comunicação das mesmas. um ponto único de falha. No caso de middlewares publish subscribe que providenciem arquitecturas distribuídas verifica-se um conjunto de dispatching 3. PUBLISH-SUBSCRIBE MIDDLEWARE servers inter-ligados que, cooperam na colecta de subscrições As aplicações que exploram os mecanismos do publish-subscribe vindas de clientes e no roteamento dos eventos, com o objectivo middleware organizam os seus clientes como colecções de de reduzir a sobrecarga da rede e aumentar a escalabilidade da componentes autónomos, que interagem publicando notificações mesma. [1] de eventos, ao mesmo tempo que subscrevem as classes de É natural que, em sistemas com arquitectura distribuída, cada eventos nas quais estão interessados. O event dispatcher (ou middleware apresente estratégias diferentes para os seus event broker) é o componente da arquitectura responsável por dispatchers, no que concerne ao processamento de eventos e colectar as subscrições e enviar os eventos para os subscribers. subscrições proveniente de um mesmo conjunto de clientes. [2] (ver Figura 1) Existem mesmo alguns sistemas de publish-subscribe que Dado o enorme potencial deste paradigma, nos últimos anos têm eliminam por completo os dispatchers, deixando a tarefa de sido desenvolvidos um grande número de publish-subscribe roteamento e filtragem encarregue aos próprios publishers e middlewares, alguns deles com diferentes abordagens para o subscribers, permitindo assim que as mensagens sejam mesmo paradigma. transmitidas directamente entre ambos. [7] Em cada uma dessas abordagens são criadas Application Programming Interface (API) específicas que permitem então controlar o fluxo de comunicação entre os subscribers, os 3.3 Eventos As unidades trocadas entre publishers, dispatchers e subscribers publishers e os dispatchers. dentro do sistema publish-subscribe designam-se por eventos. Ao De entre essas diversas abordagens, destacamos alguns pontos nível dos eventos podemos destacar dois tipos: baixo e alto nível. que consideramos preponderantes para o sucesso de um Os eventos de baixo nível incluem as mensagens de texto ou middleware deste género: formatos mais complexos como o XML. (que favorece, em larga medida, a troca de mensagens entre plataformas assentes em 3.1 Expressividade sistemas operativos ou arquitecturas diferentes) A expressividade da linguagem de subscrição delineia a Os eventos de alto nível incluem a invocação de métodos separação entre sistemas considerados topic-based, onde as remotos. Nestes casos é conveniente que existam Interfaces pré- subscrições identificam apenas as classes dos eventos definidas, para que a comunicação consiga estabelecer-se entre pretendidos (enunciados por intermédio de URL1), e os sistemas os componentes. content-based, onde as subscrições contêm expressões Outra das características dos eventos é o facto de serem stateless. (chamados de event patterns) que permitem um sofisticado Conceptualmente, os eventos não têm persistência no sistema mecanismo de busca, no próprio conteúdo do evento, orientado nem forma de confirmar a sua recepção. Eles são enviados aos assuntos pretendidos. [7] apenas para os componentes que subscreveram o evento antes de Estes são os graus de expressividade mais comuns, mas existem este ser publicado. No entanto é possível contornar esta algumas publicações que enunciam outros mais. Nomeadamente característica, como veremos mais adiante. [6] a type-based e a hybrid-based. As type-based valem-se das capacidades das próprias linguagens de programação em definir tipos e subtipos, classificando dessa 3.4 Transmissão forma os eventos. Proporciona-se assim um grau mais elevado de Ao nível da transmissão podemos ter dois tipos: ponto-a-ponto ou especialização, que a maior parte dos outros métodos de multi-ponto. subscrição (especialmente o topic-based) não suporta. [5] As transmissões ponto-a-ponto são mais comuns em sistemas No caso do hybrid-based, propõe-se estabelecer um mecanismo request-response que, operam segundo arquitecturas simbiótico entre content-based e topic-based, oferecendo dessa centralizadas, onde os eventos são enviados individualmente para forma uma maior escalabilidade decorrente do uso de técnicas de o cliente respectivo. comunicação sofisticadas e orientadas para a resolução de Em multi-ponto, os eventos são transmitidos directamente para situações muito específicas. [4] um conjunto de subscribers que estão interessados nos mesmos. Esta forma de transmissão permite uma maior escalabilidade e eficiência. [6] 1 Uniform Resource Locator
  • 3. 3.5 Quality of Service Alguns dos middlewares possibilitam catalogar os eventos com Instabilidade de throughtput (períodos de forte uma série de parâmetros extra que, ajudam a implementar sobrecarga contrastam com outros de total silêncio) mecanismos de suporte ao publish-subscribe e assim colmatar Lentidão - quando mais e mais aplicações/componentes algumas das suas lacunas. [6] usam a infra-estrutura (mesmo quando tratam de Alguns dos benefícios dessa simbiose traduzem-se a nível de: eventos diferentes) Persistência: garantia de que o evento não é extraviado; IP broadcast storms (que ao saturarem a rede local Prioridades: eventos podem ser catalogados consoante a podem levar a desactivação da mesma) sua importância; Transacções: eventos relacionados podem ser agrupados a nível atómico; 6. EXEMPLOS DE PUBLISH-SUBSCRIBE MIDDLEWARE Confiança: garantia de entrega dos eventos. A nível conceptual o paradigma publish-subscribe fornece já uma série de características base que, dependendo do objectivo de cada middleware e das suas necessidades, podem ser exploradas. 4. VANTAGENS Mas para além disso existem uma série de mecanismos extra Recapitulando, o paradigma de publish-subscribe introduz uma (como já vimos) que podem ser implementados em conjunto para série de vantagens, em relação a outros (como o request- adicionar mais capacidades ao middleware. response), que os middlewares que o utilizam podem potenciar. Na tabela seguinte, podemos ver alguns dos principais Desde logo porque os publishers são loosely-coupled em relação middlewares que implementam serviços baseados em publish- aos subscribers, ou seja, não necessitam sequer de saber da sua subscribe e que estão disponíveis no mercado. (ver Tabela 1) existência. Estando o foco direccionado para o evento, tanto os subscribers como os publishers permanecem ignorantes relativamente a topologia do sistema onde se encontram. Cada Tabela 1: Alguns Publish-Subscribe Middlewares. [8-13] um deles pode operar independentemente do outro. Nome Linguagem Patrocínio Expressividade Num paradigma request-response (dito tightly-coupled), o cliente BizTalk .NET Microsoft Content-based não pode enviar mensagens enquanto o processo do servidor não ActiveMQ Java Apache Software (indefinido) estiver a executar. Nem o servidor pode receber mensagens Foundation enquanto o cliente não executar o pedido. Tuxedo C,C++ e Oracle Content-based Portanto, em publish-subscribe o sistema está desacoplado não COBOL Corporation só a nível de sincronização, mas também a nível temporal e WebSphere MQ C, COBOL, IBM (indefinido) espacial. [6] Perl e Java Para sistemas de média escala, os paradigmas de publish- Data C,C++,C# e Object Topic-based subscribe providenciam uma melhor escalabilidade do que os Distribution Java Management Service Group tradicionais request-response. Seja por operações paralelas, caching de mensagens ou diferentes tipologias de routing. No entanto, e à medida que os sistemas escalam para tornar-se Podemos então explorar mais em pormenor algumas das datacenters com centenas de servidores partilhando a características desses middlewares. Nomeadamente do Data infraestrutura publish-subscribe, estas grandes vantagens podem Distribution System, que é um standard muito conhecido para tornar-se problemáticas. mecanismos publish-subscribe; o WebSphere MQ que é dos mecanismos com mais tradição e mais utilizados actualmente a nível de produção; o Tuxedo por ter sido recentemente adquirido 5. DESVANTAGENS por uma das empresas em maior expansão no mundo das novas Os problemas mais sérios do publish-subscribe advêm dos tecnologias. efeitos secundários de um dos seus trunfos: o facto da relação 6.1.1 Data Distribution System entre publisher e subscriber ser loosely-coupled. [7] O Data Distribution Service (DDS) surge fruto do consórcio Por exemplo, quando uma aplicação necessita de uma garantia de entre os dois maiores impulsionadores do DDS: American Real- entrega, (i.e., de que a mensagem é sempre entregue ou que caso Time Innovations e o French Thales Group. Ambas as não seja possível confirmar a entrega, o publisher é informado) o instituições juntaram esforços no sentido de criar uma sistema publish-subscribe em si, conceptualmente, não tem especificação única que, foi mais tarde aprovada pela Object forma de providenciar essa certeza. Management Group2, resultando em 2003 no aparecimento da As dificuldades em escalar, para sistemas de muito grande primeira versão do DDS. dimensão, acabam também por traduzir-se em mais desvantagens: 2 Também responsável por standards como UML e CORBA.
  • 4. O DDS é uma especificação de publish-subscribe middleware envia, o Queue Manager armazena a mensagem até que o para sistemas distribuídos, criado em resposta a necessidade de receptor a peça de novo. standardização de modelos publish-subscribe em tempo real e A ordem de todas as mensagens é assim também preservada centrados na troca de dados. através do uso de ordenação FIFO, para cada tipo de prioridade. O middleware do DDS simplifica a programação de redes [11] complexas, implementando um modelo de publish-subscribe para envio e recepção de dados, eventos e comandos entre os componentes. Componentes que estejam a produzir informação 6.1.3 Tuxedo (publishers) criam tópicos (por exemplo, temperatura, O Tuxedo foi originalmente desenvolvido pela AT&T em 1983 localização, pressão) e publicam amostras. O DDS encarrega-se com o objectivo de criar e administrar sistemas de suporte a então da entrega das amostras a todos os subscribers que operações e processamento de transacções online (OLTP). Após declararam interesse no tópico respectivo. uma série de aquisições e fusões a empresa BEA Systems, na O DDS trata de todos os aspectos necessários a entrega da altura detentora dos direitos do Tuxedo, acabou por ser adquirida mensagem automaticamente, sem requerer qualquer intervenção pela Oracle em 2008. por parte das aplicações do utilizador. Alguns desses aspectos O middleware Tuxedo foi desenhado desde o início para dar prendem-se com: suporte a aplicações de alta disponibilidade e providenciar mecanismos escaláveis que possibilitassem centenas de transacções por segundo em sistemas distribuídos comuns. determinar quem vai receber as mensagens A sua base assenta fortemente no mecanismo de Bulletin Board onde estão localizados os destinatários (BB) responsável pelo clustering do sistema. Este consiste num o que acontece caso a mensagem não seja entregue segmento de memória partilhada que contêm o estado do domínio gerido pelo Tuxedo. Servidores, serviços, transacções e clientes estão todos registados no BB providenciando assim uma O DDS permite que o utilizador especifique uma série de visão global do estado particular de cada um dos componentes. parâmetros QoS3 de forma a configurar os mecanismos de Para assegurar a manutenção desses dados existe um processo descoberta automática de mensagens e especificar os chamado Bulletin Board Liaison (BBL) que executa em cada um comportamentos a ter quando envia e recebe as mesmas. dos componentes de forma a manter a cópia central do BB O DDS permite também executar automaticamente mecanismos sempre actualizada. [10] de redundância entre os publishers, caso algum deles falhe. Dessa forma garante-se que os subscribers recebem sempre uma amostra dos dados cuja prioridade tenha sido configurada como elevada e cujo período de validade não tenha ainda expirado. Isto 7. CONCLUSÃO ocorre de forma transparente para o subscriber. [8] Decorrente do facto de assentar num mecanismo loosely-coupled, o paradigma de Publish-Subscribe apresenta-se como a melhor alternativa para comunicação entre sistemas que necessitem de 6.1.2 WebSphere MQ uma elevada escalabilidade. Proporcionando um desacoplamento O WebSphere MQ (WMQ) representa a evolução do trabalho a nível de: sincronização, tempo e espaço. desenvolvido pela IBM desde 1992 na primeira versão do seu No entanto, deve-se ter alguma reserva na sua utilização uma vez MQSeries. que, dependendo da arquitectura pretendida e a utilização mais intensiva do sistema, as suas características podem tornar-se O middleware WMQ providencia a chamada one-time delivery de mensagens entre uma larga variedade de plataformas. Este problemáticas. Originando instabilidade de throughput, IP broadcast storms e lentidão na obtenção de resposta. middleware enfatiza a segurança e robustez (através do uso de logs) do tráfego de mensagens, para que nunca sejam dadas como Apesar de tudo, existe um grande suporte ao paradigma Publish- perdidas num sistema bem configurado. Subscribe vindo de algumas das referências no mundo das novas O agente principal de comunicação no WMQ é o Queue tecnologias: Oracle, IBM e Microsoft, são exemplos disso. Manager. Este trata do armazenamento, temporização, triggering No futuro, fruto desse suporte, prevê-se então o aparecimento de e todas as outras funções não relacionadas com o trajecto a mais e melhores middlewares que tirem partido das percorrer pelos dados. características conceptuais do Publish-Subscribe, e se possível O middleware WMQ providencia assim aos programadores um resolvam algumas das suas lacunas. mecanismo para alcançar arquitecturas onde as mensagens são Prevê-se também a adopção consistente deste paradigma em enviadas de uma aplicação para outra, sem que ambas aplicações direccionadas a dispositivos móveis, nomeadamente necessitem de estar a executar ao mesmo tempo. Se uma para telemóveis. [1] aplicação receptora não está a escuta, quando o remetente a 3 Quality of Service
  • 5. [7] Publish-Subscribe 8. REFERÊNCIAS http://en.wikipedia.org/wiki/Publish/subscribe 4 de Dezembro 2009. [1] Gianpaolo Cugola and Arno Jacobsen. Using Publish/Subscribe Middleware for Mobile Systems. Mobile [8] Data Distribution Service Computing and Communications Review, Volume 1, http://en.wikipedia.org/wiki/Data_Distribution_Service Number 2. 4 de Dezembro 2009. [2] Mohamed Mastouri and Salem Hasnaoui. Performance of a Publish/Subscribe Middleware for the Real-Time [9] Apache ActiveMQ Distributed Control systems. IJCSNS, VOL.7 No.1, Janeiro http://en.wikipedia.org/wiki/Apache_ActiveMQ 2007 4 de Dezembro 2009. [3] Bogumil Zieba, Maurice Glandrup, Marten van Sinderen, [10] Tuxedo Maarten Wegdam. Reconfiguration Service for Publish/Subscribe Middleware. European Research http://en.wikipedia.org/wiki/Tuxedo_(software) Programme. 4 de Dezembro 2009. [4] Roman Szarowrski. Hybrid Publish-Subscribe: A [11] IBM WebSphere MQ compromise approuch for large scale. Czech Technical http://en.wikipedia.org/wiki/IBM_WebSphere_MQ University in Prague. 4 de Dezembro 2009. [5] Patrick Eugster, Rachid Guerraoui. Type-Based Publish/Subscribe. Agilent Laboratories Scotland, [12] Microsoft BizTalk Server Edinburgh. http://en.wikipedia.org/wiki/Microsoft_BizTalk_Server [6] Patrick Eugster, Pascal Felber, Rachid Guerraoui. The many 4 de Dezembro 2009. faces of Publish-Subscribe Middleware. ACM Computing Surveys vol. 35 no. 2, 2003