Padrões Arquiteturais

      Sistemas Distribuídos:
                      Broker
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
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
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
Exemplo




5   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
           Architecture - Buschmann
Contexto
•  Ambiente distribuído
•  Possivelmente heterogêneo
•  Com componentes cooperantes
   independentes




6            Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                    Architecture - Buschmann
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
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
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
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
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
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
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
Estrutura




14   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
            Architecture - Buschmann
Dinâmica – Cenário 1
      Servidor se registra




15       Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                Architecture - Buschmann
Cenário 2 - Cliente envia requisição a
           servidor local (síncrona)




16               Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                        Architecture - Buschmann
Cenário 3 – Interação de diferentes
        brokers via pontes




17         Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                  Architecture - Buschmann
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
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
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
Usos conhecidos
•  CORBA
•  IBM SOM/DSOM
•  Microsoft OLE 2.x
•  WWW




21             Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                      Architecture - Buschmann
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
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

Padrões-04 - Padrões Arquiteturais - Broker

  • 1.
    Padrões Arquiteturais Sistemas Distribuídos: Broker
  • 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 estruturaraplicaçõ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 umsistema 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 umcomponente 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 dolado 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ário1 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 ummodelo 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 objetosproxy 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 delocalizaçã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