Please enable JavaScript.
Coggle requires JavaScript to display documents.
Patrón de tuberías y filtros (Problema (Los pasos de procesos pequeños…
Patrón de tuberías y filtros
Estructura Sistemas
Que procesen flujos de datos
Contexto
Procesar flujos de datos
Problema
Debe cambiar pasos o recombinarlos
Los pasos de procesos pequeños
Más fáciles de reutilizar
Los procesos no adyacentes
No comparten información
Hay diferentes orígenes de datos ingresados
Diferentes maneras
de guardar o prensentar
resultado final
Posible procesamiento en paralelo
Almacenamiento explicito
de resultados intermedios
para futuro procesamiento
Solución
Conjunto
Pasos
Partes
Salida
Va a un Data Sink(Receptor)
Entrada de Otro Paso
Entrada
Data Source
Filtro
Implementa el paso
Es incremental
No espera que los datos de entrada
Se consuman
Consume Datos
Envía Datos
Pipes (Tuberías)
Conectan las partes
Procesamiento de Tuberías
Secuencia de filtros
Conectado por
Pipes
Estructura
Filtros
Tipos
Pasivos
El siguiente elemento en el pipeline saca datos del filtro
El anterior ingresa datos al filtro
Son activados con funciones pull o push
Activos
Procesa como un hilo por separado
Saca constantemente
información y la envía al siguiente filtro
Responsabilidad
Obtener los datos entrantes
Hacer una función sobre los datos entrantes
Retornar datos
Pipe
Sincroniza los vecinos activos
Transfiere los datos
Almacena datos intermedios
Data Source
Tipos
Activos
Envían datos al primer estado
Pasivos
Proveen datos
El filtro hace pull
La entrada del sistema
Data Sink
Tipos
Activos
Saca la información del paso
Pasivos
Permite escribir información en el
Recolecta los datos al final del pipeline
Dinámicas
Sin pipes explícitos
Todos los
filtros
son pasivos
Escenario 1
Data source push (
Activo
)
Filtros push
Los componentes dejan escribir en ellos
Escenario 2
Data Sink pull (
Activo
)
Filtros pull
Escenario 3
Un filtro es activo
Data Source (
Pasivo
) leen de el
Los demás filtros son pasivos
Data Sink (
Pasivo
) deja escribir en el
Escenario 4
Todos los filtros son activos
Corren como un proceso seprado
Hay pipes (Buffer pipes)
Regulan la comunicación entre los filtros
Ejecución paralela
Implementación
Dividir las tareas en pasos
Cada paso dependerá unicamente de la salida del anterior
Definir el formato de datos que se pasa en los pipes
Si se necesitan transformar muchos datos
Utilizar filtros de transformacion
Definir cómo implementar cada conexión con los pipes
Activos
Pasivos
Dificulta cambiar los filtros
Se necesita cambiar el código
Diseñar e implementar filtros
La tarea que hará
Implementar la conexión con los adyacentes
Diseñar el manejo de errores
UNIX lo coloca en el stderr
Dificil definir algo estandar
Configurar el pipeline
Casos Conocidos
UNIX
Ventajas
No se necesitan archivos intermedios
Pero son Posibles
Flexibilidad al cambio de filtro
Re-utilización de filtros
Prototipado rápido de filtros
Eficiente en procesamiento paralelo
Desventajas
Compartir datos puede ser costoso
Sobrecarga de transformación de datos
Manejo de errores