Padrões Arquiteturais

               Estruturais:
            Pipes e Filtros
Pipes e Filtros
•  O padrão “Pipes e Filtros” provê uma estrutura
   para sistemas que processam fluxos de dados.
•  Cada ...
Exemplo




3   Livro Texto: Pattern Oriented Software   3Eduardo N. F. Zagari
           Architecture - Buschmann
Contexto
•  Processamento de fluxo de dados (data
   stream)




4             Livro Texto: Pattern Oriented Software   4E...
Problema
•  Problemas na implementação de um
   sistema de processamento de fluxo de
   dados com um único componente:
   ...
Problema
•  Para se projetar um sistema de processamento
   de streams que seja flexível, deve-se considerar
   os seguint...
Problema
    –  Existem diferentes fontes de dados de entrada, tais
       como conexões de rede ou sensores de temperatur...
Solução
•  Dividir a tarefa em vários passos de
   processamento seqüenciais.
    – Os passos são conectados via o fluxo d...
Solução
    – A fonte de dados, os filtros e o vertedouro de
      dados são conectados seqëncialmente via
      pipes
   ...
Estrutura
•  Filtros são as unidades de processamento do
   pipeline
     –  Enriquecem
     –  Refinam
     –  Transforma...
Estrutura
•  Pipes realizam a comunicação
     – Entre filtros
     – Entre a fonte de dados e o primeiro filtro
     – En...
Estrutura
•  Fonte de dados: entrada do sistema
     – Pode ser ativa (modelo Push)
     – Pode ser passiva (modelo Pull)
...
Dinâmica
•  4 cenários
     – 3 cenários em que os filtros usam chamadas
       diretas ao componente adjacente do pipelin...
Cenário 1




14   Livro Texto: Pattern Oriented Software   14Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 2




15   Livro Texto: Pattern Oriented Software   15Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 3




16   Livro Texto: Pattern Oriented Software   16Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 4 *




17   Livro Texto: Pattern Oriented Software   17Eduardo N. F. Zagari
            Architecture - Buschmann
Implementação
1.  Dividir a tarefa do sistema em uma seqüência
    de estágios de processamento
     •    Cada estágio dev...
Implementação
4.  Projetar e implementar os filtros
     •    Além dos pipes, baseia-se também na tarefa que
          ele...
Variantes
•  Sistemas de pipeline Tee e Join
     –  Permite filtros com mais de uma entrada e/
        ou mais de uma saí...
Usos conhecidos
•  UNIX
•  CMS Pipelines (S.O. IBM)




21            Livro Texto: Pattern Oriented Software   21Eduardo N...
Benefícios
•  Não há a necessidade de arquivos
   intermediários, mas são possíveis
•  Flexibilidade pela permuta de filtr...
Desvantagens
•  Compartilhamento de informação de
   estado é cara ou inflexível
•  Ganho de eficiência pelo processamento...
Upcoming SlideShare
Loading in …5
×

Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

1,974 views

Published on

Padrões Arquiteturais. Padrão Estrutural. Pipes e Filtros.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,974
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
99
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

  1. 1. Padrões Arquiteturais Estruturais: Pipes e Filtros
  2. 2. Pipes e Filtros •  O padrão “Pipes e Filtros” provê uma estrutura para sistemas que processam fluxos de dados. •  Cada passo de processamento é encapsulado em um componente Filtro. •  Dados são passados através de pipes entre filtros adjacentes. •  Recombinando-se filtros é possível construir-se famílias de sistemas relacionados. 2 Livro Texto: Pattern Oriented Software 2Eduardo N. F. Zagari Architecture - Buschmann
  3. 3. Exemplo 3 Livro Texto: Pattern Oriented Software 3Eduardo N. F. Zagari Architecture - Buschmann
  4. 4. Contexto •  Processamento de fluxo de dados (data stream) 4 Livro Texto: Pattern Oriented Software 4Eduardo N. F. Zagari Architecture - Buschmann
  5. 5. Problema •  Problemas na implementação de um sistema de processamento de fluxo de dados com um único componente: – Sistema pode ter que ser construído por vários desenvolvedores – A tarefa global do sistema pode se decompor naturalmente em vários estágios de processamento – Requisitos provavelmente podem mudar 5 Livro Texto: Pattern Oriented Software 5Eduardo N. F. Zagari Architecture - Buschmann
  6. 6. Problema •  Para se projetar um sistema de processamento de streams que seja flexível, deve-se considerar os seguintes aspectos: –  Devem ser possíveis futuras melhorias no sistema pela troca de passos de processamento ou pela recombinação de passos (mesmo por usuários) –  Pequenos passos de processamento são mais fáceis de reusar em diferentes contextos do que os componentes maiores –  Passos de processamento não adjacentes não compartilham informação 6 Livro Texto: Pattern Oriented Software 6Eduardo N. F. Zagari Architecture - Buschmann
  7. 7. Problema –  Existem diferentes fontes de dados de entrada, tais como conexões de rede ou sensores de temperatura –  Deve ser possível armazenar ou apresentar os resultados finais de várias formas diferentes –  Armazenamento explícito de resultados intermediários para processamento posterior em arquivos é susceptível a erros, se feito por usuários –  Pode-se não querer desconsiderar a possibilidade de multi-processamento dos passos 7 Livro Texto: Pattern Oriented Software 7Eduardo N. F. Zagari Architecture - Buschmann
  8. 8. Solução •  Dividir a tarefa em vários passos de processamento seqüenciais. – Os passos são conectados via o fluxo de dados – Cada passo é implementado por um filtro – Filtros consomem e enviam dados INCREMENTALMENTE (paralelismo e baixa latência) – Entrada: fonte de dados (p.ex., arquivo texto) – Saída: vertedouro de dados (arq, terminal etc) 8 Livro Texto: Pattern Oriented Software 8Eduardo N. F. Zagari Architecture - Buschmann
  9. 9. Solução – A fonte de dados, os filtros e o vertedouro de dados são conectados seqëncialmente via pipes – Cada pipe implementa o fluxo de dados entre passos de processamento adjacentes – A seqüência de filtros combinadas pelos pipes é chamada de pipeline de processamento 9 Livro Texto: Pattern Oriented Software 9Eduardo N. F. Zagari Architecture - Buschmann
  10. 10. Estrutura •  Filtros são as unidades de processamento do pipeline –  Enriquecem –  Refinam –  Transformam os dados •  A atividade do filtro pode ser disparada: –  Pelo elemento subseqüente do pipeline puxando dados na saída do filtro –  Pelo elemento anterior empurrando novos dados de entrada ou –  * O filtro é um loop ativo, puxando de e empurrando abaixo o pipeline 10 Livro Texto: Pattern Oriented Software 10Eduardo N. F. Zagari Architecture - Buschmann
  11. 11. Estrutura •  Pipes realizam a comunicação – Entre filtros – Entre a fonte de dados e o primeiro filtro – Entre o último filtro e o vertedouro de dados •  Se os 2 filtros são ativos, o pipe faz o sincronismo deles via um buffer FIFO •  Se a atividade é controlada por um deles, o pipe pode ser implementado pela chamada direta do ativo para o passivo 11 Livro Texto: Pattern Oriented Software 11Eduardo N. F. Zagari Architecture - Buschmann
  12. 12. Estrutura •  Fonte de dados: entrada do sistema – Pode ser ativa (modelo Push) – Pode ser passiva (modelo Pull) •  Vertedouro de dados: coleta os resultados do fim do pipeline – Ativo: puxa os resultados do último estágio de processamento – Passivo: permite o último filtro empurra ou escrever os resultados nele 12 Livro Texto: Pattern Oriented Software 12Eduardo N. F. Zagari Architecture - Buschmann
  13. 13. Dinâmica •  4 cenários – 3 cenários em que os filtros usam chamadas diretas ao componente adjacente do pipeline •  Sem componente pipe explícito – 1 cenário onde todos os filtros são ativos •  Pipe de sincronismo 13 Livro Texto: Pattern Oriented Software 13Eduardo N. F. Zagari Architecture - Buschmann
  14. 14. Cenário 1 14 Livro Texto: Pattern Oriented Software 14Eduardo N. F. Zagari Architecture - Buschmann
  15. 15. Cenário 2 15 Livro Texto: Pattern Oriented Software 15Eduardo N. F. Zagari Architecture - Buschmann
  16. 16. Cenário 3 16 Livro Texto: Pattern Oriented Software 16Eduardo N. F. Zagari Architecture - Buschmann
  17. 17. Cenário 4 * 17 Livro Texto: Pattern Oriented Software 17Eduardo N. F. Zagari Architecture - Buschmann
  18. 18. Implementação 1.  Dividir a tarefa do sistema em uma seqüência de estágios de processamento •  Cada estágio deve depender somente da saída de seu predecessor 2.  Definir o formato dos dados a serem passados ao longo de cada pipe •  Formato padrão  flexibilidade 3.  Decidir como implementar cada conexão pipe •  Implica em definir se os filtros adjacentes são ativos ou passivos 18 Livro Texto: Pattern Oriented Software 18Eduardo N. F. Zagari Architecture - Buschmann
  19. 19. Implementação 4.  Projetar e implementar os filtros •  Além dos pipes, baseia-se também na tarefa que eles devem realizar •  Passivos: funções (PULL) ou procedimentos (PUSH) •  Ativos: processos ou threads 5.  Projetar o tratamento de erro •  Difícil devido a não existência de estado global •  No mínimo, deve haver detecção de erro •  UNIX usa um canal específico (stderr) •  Se um filtro “capota”  Resincronização 8.  Ajustar o pipeline de processamento 19 Livro Texto: Pattern Oriented Software 19Eduardo N. F. Zagari Architecture - Buschmann
  20. 20. Variantes •  Sistemas de pipeline Tee e Join –  Permite filtros com mais de uma entrada e/ ou mais de uma saída 20 Livro Texto: Pattern Oriented Software 20Eduardo N. F. Zagari Architecture - Buschmann
  21. 21. Usos conhecidos •  UNIX •  CMS Pipelines (S.O. IBM) 21 Livro Texto: Pattern Oriented Software 21Eduardo N. F. Zagari Architecture - Buschmann
  22. 22. Benefícios •  Não há a necessidade de arquivos intermediários, mas são possíveis •  Flexibilidade pela permuta de filtros •  Flexibilidade pela recombinação •  Reuso de filtros •  Rápida prototipação de pipelines •  Eficiência devido ao processamento paralelo 22 Livro Texto: Pattern Oriented Software 22Eduardo N. F. Zagari Architecture - Buschmann
  23. 23. Desvantagens •  Compartilhamento de informação de estado é cara ou inflexível •  Ganho de eficiência pelo processamento paralelo freqüentemente é uma ilusão – Custo de transferência de dados entre filtros – Serialização interna a alguns filtros – Trocas de contexto •  Overhead na transformação de dados •  Tratamento de erros 23 Livro Texto: Pattern Oriented Software 23Eduardo N. F. Zagari Architecture - Buschmann

×