Actividad Final - Sist - Dist
Actividad Final - Sist - Dist
Actividad Final - Sist - Dist
NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA
Y ELÉCTRICA
Integrantes Matricula
Resultados Deseados:
• Alta disponibilidad.
• Rendimiento escalable.
• Consistencia de datos.
Sistemas Paralelos
Objetivos:
• Aceleración del procesamiento: Reducir tiempos de ejecución.
• Balanceo de carga: Distribuir el trabajo uniformemente.
Sistemas Distribuidos
Definición y Finalidad
Un sistema distribuido es un conjunto de programas informáticos que utilizan recursos
computacionales en varios nodos de cálculo distintos para lograr un objetivo compartido
común. La finalidad principal de los sistemas distribuidos es eliminar los cuellos de botella
o los puntos de error centrales de un sistema, asegurando así una mayor eficiencia y
robustez.
Características Principales
1. Recursos Compartidos: Los sistemas distribuidos pueden compartir hardware,
software o datos, optimizando el uso de recursos.
2. Procesamiento Simultáneo: Varias máquinas pueden procesar la misma función a
la vez, aumentando la capacidad de procesamiento.
3. Escalabilidad: La capacidad computacional y de procesamiento puede escalarse
añadiendo máquinas adicionales según sea necesario.
4. Detección de Errores: Los errores se pueden detectar más fácilmente debido a la
redundancia de componentes.
5. Transparencia: Un nodo puede acceder a otros nodos del sistema y comunicarse con
ellos de manera transparente.
Importancia en Data & Analytics
En el ámbito de data & analytics, los sistemas distribuidos se han convertido en un
estándar debido a su capacidad para escalar y almacenar volúmenes casi infinitos de
datos de manera costo-efectiva. Tecnologías como Databricks, Spark, Hadoop, Cloudera
y Presto utilizan procesamiento distribuido para manejar grandes cantidades de datos.
Evolución de los Sistemas Distribuidos
A lo largo del tiempo, las tecnologías utilizadas en data & analytics han evolucionado de
herramientas de propósito general a herramientas de propósito específico, conformando
stacks tecnológicos. Esta evolución ha sido impulsada por la necesidad de simplificar la
complejidad del procesamiento de grandes volúmenes de datos y satisfacer las
crecientes demandas de información detallada por parte de los usuarios de negocio.
Cómo Funcionan los Sistemas Distribuidos
Capacidades de Almacenamiento y Procesamiento
Un sistema distribuido es un conjunto de componentes que permiten almacenar,
procesar y administrar recursos de manera eficiente. Estos sistemas tienen una
capacidad de almacenamiento y procesamiento virtualmente infinita, ya que se pueden
agregar nuevos servidores continuamente.
Escalabilidad
- Escalabilidad Vertical: Se aumenta la capacidad de un servidor añadiendo más
memoria, procesadores o sustituyéndolo por uno más potente.
- Escalabilidad Horizontal: Se crean nuevos clústers, añadiendo servidores pequeños
que trabajan coordinadamente como una única máquina.
Ejemplo Práctico
Imagina que una empresa tiene un solo servidor grande. Si esta falla, la operación se
detiene hasta que se repare. Para evitar esto, la empresa podría tener dos servidores,
uno principal y otro de respaldo. Sin embargo, tener un servidor grande en desuso sería
un desperdicio de capital. En lugar de eso, con un sistema distribuido, se pueden usar
múltiples servidores pequeños, de modo que, si uno falla, la pérdida de capacidad es
marginal y los costos son menores.
Beneficios
- Tolerancia a Fallos: Alta resistencia a fallos debido a la redundancia de componentes.
- Escalabilidad: Capacidad de añadir o quitar equipos según las necesidades.
- Reducción de Costos: Uso de equipos más pequeños y menos costosos en lugar de
grandes servidores.
Almacenamiento Distribuido
Los sistemas distribuidos dividen los archivos en bloques y los distribuyen en diferentes
nodos. Esto asegura que, si un nodo falla, la información no se pierde, mejorando la
eficiencia y la rapidez en los tiempos de lectura.
Computación Paralela
Definición y Funcionamiento
La computación paralela es una combinación de componentes de hardware y software
que utilizan recursos masivos de cómputo de manera conjunta para resolver una tarea
computacional. Este método es esencial en áreas que requieren el procesamiento de
grandes volúmenes de datos.
Requisitos para Computación Paralela
1. División del Problema: El problema computacional debe dividirse en componentes
que puedan ser resueltos simultáneamente.
2. Ejecución Independiente: Las instrucciones deben poder ejecutarse en cualquier
momento.
3. Eficiencia con Más Recursos: El problema debe resolverse más rápidamente a
medida que se añaden más recursos informáticos.
Beneficios de la Computación Paralela
o Modelos Realistas: Representa mejor el mundo real, donde los eventos no
ocurren de manera secuencial.
o Ahorro de Tiempo: Mejora la eficiencia del procesamiento de datos, reduciendo
el tiempo necesario para ejecutar tareas.
o Ahorro de Dinero: Al optimizar el uso de recursos, se reducen los costos
operativos, especialmente en sistemas que manejan grandes volúmenes de
transacciones.
o Resolución de Problemas Complejos: Permite manejar tareas complejas y
grandes volúmenes de datos, esencial para aplicaciones de IA y big data.
o Uso Eficiente de Recursos: La capacidad de procesar grandes cantidades de
datos en tiempo real es crucial en un mundo donde se generan 2.5 quintillones de
bytes de información diariamente.
Análisis de Requisitos:
• Identificación de Necesidades: Determinar los objetivos del sistema y los
requisitos funcionales y no funcionales.
• Especificación del Problema: Definir claramente el problema a resolver, las
restricciones del sistema y el entorno en el que se va a operar.
Diseño del Sistema:
• Arquitectura del Sistema: Decidir la estructura global del sistema, incluyendo la
selección de modelos de comunicación (cliente-servidor, peer-to-peer, etc.) y la
topología de red.
• Descomposición en Componentes: Dividir el sistema en módulos o
componentes más pequeños que puedan desarrollarse y probarse de manera
independiente.
Modelado y Simulación:
• Modelado: Crear modelos abstractos para representar los componentes del
sistema y sus interacciones.
• Simulación: Ejecutar simulaciones para evaluar el comportamiento del sistema
bajo diferentes escenarios y cargas de trabajo.
Desarrollo e Implementación:
• Programación Paralela y Distribuida: Utilizar técnicas y lenguajes adecuados
para programar aplicaciones paralelas (como MPI, OpenMP) y distribuidas (como
RPC, gRPC).
• Gestión de Concurrencia: Implementar mecanismos para manejar la
concurrencia y evitar condiciones de carrera, como semáforos, monitores y
bloqueos.
Pruebas y Validación:
• Pruebas Unitarias y de Integración: Probar cada componente individualmente
y luego integrarlos para asegurar que funcionen correctamente en conjunto.
• Pruebas de Rendimiento y Escalabilidad: Evaluar el rendimiento del sistema
bajo diferentes condiciones de carga y verificar su capacidad para escalar.
Despliegue y Mantenimiento:
• Despliegue: Implementar el sistema en el entorno de producción, asegurando
que esté configurado correctamente y que todos los componentes funcionen como
se espera.
• Monitorización y Mantenimiento: Monitorear el sistema en tiempo real para
detectar y resolver problemas rápidamente. Realizar mantenimiento preventivo y
actualizaciones periódicas.
Documentación y Formación:
• Documentación Técnica: Crear documentación detallada sobre el diseño,
implementación y uso del sistema.
• Formación: Capacitar a los usuarios y administradores del sistema para que
puedan utilizarlo y mantenerlo de manera efectiva.
Evaluación Continua:
• Retroalimentación y Mejora Continua: Recoger retroalimentación de los
usuarios y realizar mejoras continuas al sistema para adaptarlo a nuevas
necesidades y tecnologías emergentes.
Principios Clave
• Modularidad: Diseñar el sistema de manera modular para facilitar el desarrollo,
prueba y mantenimiento.
• Escalabilidad: Asegurar que el sistema pueda manejar un aumento en la carga
de trabajo sin degradar significativamente su rendimiento.
• Tolerancia a Fallos: Implementar mecanismos de redundancia y recuperación
para mantener la disponibilidad del sistema en caso de fallos.
• Consistencia y Coherencia: Mantener la integridad de los datos y la coherencia
del sistema, especialmente en entornos distribuidos.
Esta metodología proporciona un marco estructurado para el desarrollo de sistemas
distribuidos y paralelos, ayudando a los ingenieros a crear sistemas eficientes,
escalables y fiables.
RESULTADOS OBTENIDOS
Los sistemas distribuidos y paralelos consisten en hacer que varias computadoras
trabajen juntas para resolver un problema en común, brindando recursos a gran escala
para afrontar desafíos complejos.
Algunos de estos desafíos son cifrar volúmenes grandes de datos; resolver ecuaciones
físicas y químicas con muchas variables y renderizar animaciones de video de alta
calidad en tres dimensiones.
Los resultados que se pueden obtener gracias a los sistemas distribuidos y paralelos
son:
ANALISIS DE RESULTADOS
Los sistemas distribuidos y paralelos representan una estrategia fundamental en el
mundo de la computación moderna, permitiendo que varias computadoras trabajen en
conjunto para resolver problemas complejos. A continuación, se presenta un análisis de
los resultados obtenidos, considerando los aspectos clave mencionados:
1. Escalabilidad
• Descripción: La escalabilidad se refiere a la capacidad de un sistema para crecer
y manejar una cantidad creciente de trabajo, o su potencial para ser ampliado para
acomodar ese crecimiento.
• Importancia: Es crucial para aplicaciones que experimentan un aumento
constante en la carga de trabajo, como servicios web, procesamiento de big data
y aplicaciones científicas.
• Beneficios: Permite la adición de nuevos nodos (computadoras) a medida que
crece la demanda, asegurando que el sistema pueda manejar incrementos de
carga sin necesidad de rediseño significativo.
2. Disponibilidad
• Descripción: La disponibilidad asegura que el sistema continúe operando incluso
si algunos de sus componentes fallan.
• Importancia: Es vital para servicios críticos donde el tiempo de inactividad puede
resultar en pérdidas significativas, tanto en términos económicos como de
confianza del usuario.
• Beneficios: Proporciona tolerancia a fallos, lo que significa que la falla de una
computadora no lleva al colapso del sistema completo. Esto es esencial para
aplicaciones en las que la continuidad del servicio es imprescindible.
3. Consistencia
• Descripción: La consistencia se refiere a la uniformidad de los datos en todos los
nodos del sistema distribuido.
• Importancia: En aplicaciones donde la precisión y la integridad de los datos son
críticas, la consistencia asegura que todas las computadoras tengan la misma
información en todo momento.
• Beneficios: Permite la duplicación y compartición de datos entre múltiples
computadoras, manteniendo la coherencia sin sacrificar la tolerancia a fallos. Esto
es útil en bases de datos distribuidas y sistemas de archivos.
4. Transparencia
• Descripción: La transparencia permite a los usuarios interactuar con el sistema
como si fuera una única entidad, sin preocuparse por los detalles subyacentes de
su funcionamiento.
• Importancia: Simplifica la interacción del usuario final con el sistema, ocultando
la complejidad de la infraestructura distribuida.
• Beneficios: Facilita la usabilidad y la gestión del sistema, permitiendo que
diferentes componentes de hardware y software trabajen juntos sin problemas
perceptibles para el usuario. Esto es beneficioso para usuarios no técnicos y para
la administración del sistema.
5. Eficiencia
• Descripción: La eficiencia implica un rendimiento óptimo y rápido del sistema con
el uso adecuado de los recursos disponibles.
• Importancia: Es fundamental para maximizar el uso de hardware costoso y
asegurar que las tareas se completen en el menor tiempo posible.
• Beneficios: Permite gestionar cargas de trabajo pesadas sin preocuparse por
fallos del sistema debido a picos en el volumen de trabajo o infrautilización del
hardware. Es esencial para tareas que requieren grandes recursos
computacionales, como el renderizado de gráficos 3D y el procesamiento de
grandes volúmenes de datos.
CONCLUSIONES
En resumen, los sistemas distribuidos y paralelos son cruciales para la tecnología actual
porque ofrecen soluciones fuertes y escalables para los desafíos de hoy en día. Si las
organizaciones entienden y aplican bien las recomendaciones para cada tipo de sistema,
pueden desarrollar plataformas resilientes y eficientes que crezcan con sus necesidades.
La combinación de distribución y paralelismo abre muchas posibilidades, permitiendo
enfrentar los problemas presentes y futuros de manera más efectiva y segura.
RECOMENDACIONES
DOS EJEMPLOS
Sistemas Distribuidos:
1. Redes Sociales: Plataformas como Facebook, Twitter e Instagram son ejemplos
de sistemas distribuidos. Cada vez que publicas un mensaje o una foto, esta
información se distribuye y replica en servidores distribuidos en diferentes
ubicaciones para garantizar su disponibilidad y escalabilidad.
SlideShare. https://es.slideshare.net/algoritmonavarro/sistemas-paralelos-vs-
distribuidos
https://es.scribd.com/document/406404509/Sistemas-Distribuidos-y-Paralelos
datalytics.com. https://www.datalytics.com/blog/que-son-y-como-funcionan-los-
sistemas-
distribuidos/?gad_source=1&gclid=EAIaIQobChMIr92Wt7rAhgMVJEp_AB0bUQEIEA
MYASAAEgLj1_D_BwE
• ¿Qué son los sistemas de cómputo paralelo? (s. f.). CSC. https://csc.conicet.gov.ar/que-
son-los-sistemas-de-computo-
paralelo/#:~:text=Los%20sistemas%20de%20c%C3%B3mputo%20paralelo%20son%20
una%20combinaci%C3%B3n%20de%20componentes,para%20resolver%20una%20tarea
%20computacional.
https://unir.net/ingenieria/revista/computacion-paralela/