23
Padrões Arquiteturais Estruturais: Pipes e Filtros

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

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

Padrões Arquiteturais

Estruturais: Pipes e Filtros

Page 2: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

2 Livro Texto: Pattern Oriented Software Architecture - Buschmann

2Eduardo N. F. Zagari

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.

Page 3: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

3 Livro Texto: Pattern Oriented Software Architecture - Buschmann

3Eduardo N. F. Zagari

Exemplo

Page 4: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

4 Livro Texto: Pattern Oriented Software Architecture - Buschmann

4Eduardo N. F. Zagari

Contexto

•  Processamento de fluxo de dados (data stream)

Page 5: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

5 Livro Texto: Pattern Oriented Software Architecture - Buschmann

5Eduardo N. F. Zagari

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

Page 6: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

6 Livro Texto: Pattern Oriented Software Architecture - Buschmann

6Eduardo N. F. Zagari

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

Page 7: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

7 Livro Texto: Pattern Oriented Software Architecture - Buschmann

7Eduardo N. F. Zagari

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

Page 8: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

8 Livro Texto: Pattern Oriented Software Architecture - Buschmann

8Eduardo N. F. Zagari

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)

Page 9: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

9 Livro Texto: Pattern Oriented Software Architecture - Buschmann

9Eduardo N. F. Zagari

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

Page 10: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

10 Livro Texto: Pattern Oriented Software Architecture - Buschmann

10Eduardo N. F. Zagari

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

Page 11: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

11 Livro Texto: Pattern Oriented Software Architecture - Buschmann

11Eduardo N. F. Zagari

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

Page 12: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

12 Livro Texto: Pattern Oriented Software Architecture - Buschmann

12Eduardo N. F. Zagari

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

Page 13: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

13 Livro Texto: Pattern Oriented Software Architecture - Buschmann

13Eduardo N. F. Zagari

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

Page 14: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

14 Livro Texto: Pattern Oriented Software Architecture - Buschmann

14Eduardo N. F. Zagari

Cenário 1

Page 15: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

15 Livro Texto: Pattern Oriented Software Architecture - Buschmann

15Eduardo N. F. Zagari

Cenário 2

Page 16: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

16 Livro Texto: Pattern Oriented Software Architecture - Buschmann

16Eduardo N. F. Zagari

Cenário 3

Page 17: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

17 Livro Texto: Pattern Oriented Software Architecture - Buschmann

17Eduardo N. F. Zagari

Cenário 4 *

Page 18: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

18 Livro Texto: Pattern Oriented Software Architecture - Buschmann

18Eduardo N. F. Zagari

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

Page 19: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

19 Livro Texto: Pattern Oriented Software Architecture - Buschmann

19Eduardo N. F. Zagari

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

Page 20: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

20 Livro Texto: Pattern Oriented Software Architecture - Buschmann

20Eduardo N. F. Zagari

Variantes

•  Sistemas de pipeline Tee e Join –  Permite filtros com mais de uma entrada e/

ou mais de uma saída

Page 21: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

21 Livro Texto: Pattern Oriented Software Architecture - Buschmann

21Eduardo N. F. Zagari

Usos conhecidos

• UNIX • CMS Pipelines (S.O. IBM)

Page 22: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

22 Livro Texto: Pattern Oriented Software Architecture - Buschmann

22Eduardo N. F. Zagari

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

Page 23: Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

23 Livro Texto: Pattern Oriented Software Architecture - Buschmann

23Eduardo N. F. Zagari

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