O documento descreve o padrão arquitetural Broker, que permite estruturar aplicações distribuídas através de componentes desacoplados que interagem via invocações remotas coordenadas por um broker. O broker encaminha requisições, resultados e exceções entre clientes e servidores, promovendo flexibilidade, manutenibilidade e escalabilidade.
2. Sistemas Distribuídos
• Tendências:
– Sistemas Comp. com múltiplas CPUs
– Redes locais com centenas de hospedeiros
• Benefícios
– Economia
– Desempenho e escalabilidade
– Distribuição intrínseca
– Confiabilidade
• Desvantagem: hw e sw overhead
2 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
3. Padrões em S.D.
• Pipes e Filtros
– Embora possa ser usado na distribuição é mais
freqüentemente empregado na estruturação do
núcleo da aplicação
• Microkernel
– Aplica-se a sistemas de software que devem ser
aptos a se adaptarem a mudanças nos requisitos do
sistema
– Emprega a arquitetura Cliente-Servidor
– Mais adequado a sistemas adaptáveis
• Broker
3 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
4. Broker
• Permite estruturar aplicações distribuídas
através de componentes desacoplados,
que interagem via invocações remotas
• Coordena toda a comunicação
• Encaminhamento de requisições
• Resultados
• Exceções
4 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
5. Exemplo
5 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
6. Contexto
• Ambiente distribuído
• Possivelmente heterogêneo
• Com componentes cooperantes
independentes
6 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
7. Problema
• Construir um sistema de software complexo
como um conjunto de componentes
desacoplados e interoperantes
– Grande flexibilidade, manutenabilidade,
“alterabilidade”
– Potencialmente distribuíveis e escaláveis
• Entretanto...
1. Problemas com a forma de comunicação
(dependência do mecanismo de IPC, localização,
linguagem de programação etc)
2. Problemas com a gerência dos serviços
7 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
8. Problema
• A distribuição deve ser transparente
• Componentes deve ser aptos a acessar
serviços providos por terceiros através de
invocações remotas com transparência de
localização
• Pode-se precisar trocar, adicionar ou remover
componentes em tempo de execução
• A arquitetura deve esconder detalhes
específicos do sistema e da implementação do
usuário
8 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
9. Solução
• Introduzir um componente broker para obter
melhor desacoplamento entre clientes e
servidores.
– Servidores se registram no broker e exportam seus
serviços via interface dos métodos
– Clientes acessam os serviços via broker
– Broker localiza servidor apropriado, encaminha
requisições e transmite os resultados e exceções de
volta ao cliente
• Broker provê a integração de duas tecnologias:
a de distribuição e a de objetos
9 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
10. Estrutura
1. Servidor
– Implementa objetos que expõem suas
funcionalidades via interfaces
– Interfaces podem ser disponibilizadas através de
IDL ou de um padrão binário
2. Clientes
– Aplicações que acessam o serviço de pelo menos
um servidor
– Para tanto, encaminham requisições ao broker e
recebem dele as respostas ou exceções
10 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
11. Estrutura
3. Broker
– Mensageiro responsável pela transmissão
das requisições, respostas e exceções
– Deve prover algum mecanismo de
localização (identificador)
– Oferece APIs aos clientes e servidores
(registro, invocação de métodos etc)
– Pode prover serviços adicionais (serviço de
nomes, suporte a serialização/marshaling
etc)
11 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
12. Estrutura
4. Proxy do lado do Cliente
– Camada adicional entre cliente e broker
– Provê transparência (objeto remoto aparece como se
fosse local). Esconde:
• O mecanismo de IPC entre cliente e broker
• A criação/remoção de blocos de memória
• O marshaling de parâmetros e resultados
5. Proxy do lado do Servidor
– Análogo ao anterior (recebem requisições,
desempacotam as mensagens, “de-serializam” os
parâmetros, chamam os serviços apropriados e
retornam resultados/exceções serializados ao cliente
12 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
13. Estrutura
6. Pontes
– Componentes opcionais
– Escondem detalhes de implementação
quando dois brokers interoperam em redes
heterogêneas (diferentes redes, S.O.s etc)
13 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
14. Estrutura
14 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
15. Dinâmica – Cenário 1
Servidor se registra
15 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
16. Cenário 2 - Cliente envia requisição a
servidor local (síncrona)
16 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
17. Cenário 3 – Interação de diferentes
brokers via pontes
17 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
18. Implementação
1. Definir um modelo de objetos ou usar um
modelo existente (nomes, objetos, requisições,
valores, exceções, tipos suportados, extensões
de tipos, interfaces e operações)
2. Decidir qual tipo de interoperabilidade de
componentes o sistema deve oferecer
(especificar um padrão binário ou introduzir uma
IDL de alto nível)
• Vantagem/desvantagem
3. Especificar as APIs que o broker provê para
colaborar com clientes e servidores
• Decidir também se invocações estáticas ou dinâmicas
18 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
19. Implementação
4. Usar objetos proxy para esconder detalhes de
implementação dos clientes e servidores
5. Projetar o broker (como ele deve agir):
• Protocolo on-the-wire detalhado
• Broker local em toda máquina
• Mecanismo de identificação do cliente para retorno
de resultados
• Mecanismo de (un)marshaling de parâmetros
19 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
20. Implementação
• Prover buffers (se suportar comunicação
assíncrona)
• Prover Diretório de Serviços
• Serviço de Nomes
• Informação de tipos dos servidores (se
suportar invocação de métodos dinâmica)
• Planejar ação (semântica de erro) do broker
em caso de erros (de componentes e/ou da
comunicação)
6. Desenvolver compiladores de IDL
20 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
21. Usos conhecidos
• CORBA
• IBM SOM/DSOM
• Microsoft OLE 2.x
• WWW
21 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
22. Benefícios
• Transparência de localização
• Mudança e extensão de componentes
• Portabilidade de um sistema de Broker
• Interoperabilidade entre diferentes
sistemas de Broker
• Reusabilidade
22 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
23. Desvantagens
• Eficiência limitada
• Baixa tolerância a falta (do broker)
• Teste e Debug - apresentam vantagem e
desvantagem ao mesmo tempo:
– Ex. vantagem: desenvolver cliente com
servidor já testado
– Ex. desvantagem: testar um sistema de
broker inteiro...
23 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann