Descargar

Computación distribuida

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    En ingeniería es imprescindible conocer qué significa cada vocablo sin ambigüedad

    En el ámbito de la computación distribuida, no existe un vocabulario universal Esto es debido a: Hay múltiples actores involucrados (industria, universidades, individuos) Cada actor tiene sus propios intereses (quizás en conflicto) El estado del arte evoluciona a gran velocidad Esto produce que: Se fomente la confusión entre los diferentes actores involucrados Se dificulte la estandarización

    En esta asignatura vamos a mantener una serie de convenciones en relación a la nomenclatura y al vocabulario para poder “hablar con precisión”

    Para ello, definiremos un conjunto de términos de manera precisa

    Habrá que tener en cuenta que, en otros contextos, los términos aquí definidos pueden tener significados (sensiblemente) diferentes El vocabulario de la computación distribuida

    edu.red

    Definición de Modelo de Computación (Programación): “Paradigma que proporciona y determina la visión que un programador tiene sobre la ejecución (y desarrollo) de un programa”

    Podemos establecer diferentes clasificaciones de los Modelos de Computación/Programación dependiendo del criterio que deseemos utilizar:

    Criterio basado en la modularidad del código: Modelo de programación orientado a objetos Modelos de programación procedimental

    Criterio basado en el tipo de sistema sobre el que ejecuta el programa: Modelo de computación monolítica Modelo de computación paralela Modelo de computación distribuida Modelo de computación cooperativa (computación P2P) Modelos de computación y programación

    edu.red

    Computación Monolítica Procesadores: El programa ejecuta en un solo procesador Ligazón: Ninguna Requiere: Se requiere el hardware de un ordenador Ejemplo: Ejecución de programas en un PC Cuestión: ¿Soporta la computación monolítica los sistemas multiusuario?

    Computación Paralela Procesadores: El programa ejecuta en un conjunto de procesadores que están fuertemente ligados Ligazón Los procesadores cooperan íntimamente y se sincronizan Los procesadores comparten memoria principal Los procesadores comparten otros recursos del ordenador (periféricos, etc.) Requiere: Se requiere el hardware de un ordenador Se requiere el hardware de varios procesadores (CPUs) Se requiere un mecanismo de interconexión y control de los procesadores Ejemplo: Ejecución de programas en un ordenador con núcleo dual. Cuestión: ¿Puede un mismo programa secuencial ejecutar en múltiples procesadores? Modelos de Computación

    edu.red

    Computación Distribuida Procesadores: El programa ejecuta en un conjunto de procesadores que están ligeramente ligados Ligazón: Los procesadores pueden intercambiar mensajes Los procesadores no comparten (directamente) memoria principal Los procesadores no comparten (directamente) sus recursos hardware Requiere: (Un sistema distribuido) El hardware de varios ordenadores Una red de ordenadores Hardware de interconexión Ejemplo: Ejecución de un programa en una red de área local

    Computación Cooperativa y Computación P2P (un tipo de Comput. Distribuida) Procesadores: El programa ejecuta en un conjunto dinámico y muy grande de procesadores que están débilmente ligados. Se asume que los recursos de procesador de los que el programa puede disponer están restringidos. Ligazón: Similar a la de la computación distribuida Requiere: Un sistema distribuido + una red de área extendida (Internet p.e.) Ejemplo: Ejecución de un programa en Internet (SETI@home) Modelos de Computación Cont.

    edu.red

    Definición de Computación Distribuida “Modelo de computación que se caracteriza por estar adaptado a la ejecución de programas en sistemas distribuidos”

    Definición de Sistema Distribuido “Sistema informático compuesto por un conjunto de nodos de procesamiento (ordenadores) que se encuentran ligados a través de una red que permite el intercambio de mensajes entre los mismos”

    La computación distribuida (los sistemas distribuidos) se ha convertido en un elemento esencial en la industria en las últimas décadas Redes de área local Internet Aplicaciones Cliente/Servidor

    ¿Por qué la computación distribuida es tan popular? Computación Distribuida

    edu.red

    Compartición de recursos Cualquier recurso disponible en la red puede ser accedido por otros nodos Ejemplos: Servidores de ficheros, Servidores de BD, Impresoras, etc. Ahorro de costes Los ordenadores son baratos, conectar ordenadores en red es barato ? Construir un sistema distribuido es barato Computación distribuida ? se pueden compartir los recursos más caros Ejemplos: Impresora a color, hardware específico, memoria, etc. Escalabilidad Con computación monolítica, los recursos disponibles están limitados a los presentes en un solo ordenador Con computación distribuida, los recursos disponibles se pueden escalar introduciendo nuevos nodos (ordenadores) en el sistema soporte Tolerancia a fallos Un recurso crítico puede ser replicado en varios nodos (distantes) de la red. Ejemplo: Copias de seguidad (Backups) Ventajas de la Comunicación No es posible intercambiar información entre ordenadores distantes sin utilizar un modelo de computación distribuida

    Ventajas de la Computación Distribuida

    edu.red

    Si hay tantas ventajas, ¿por qué no todas las aplicaciones son distribuidas? ?La computación distribuida también presenta serios inconvenientes

    Modelo de fallos más complejo y difícil de gestionar Computación monolítica Lo habitual es que todas las partes de un programa fallen de manera simultánea No existe el concepto de fallo de comunicación Cuando hay fallos, es posible recuperar el estado de cada parte del programa En computación distribuida Cada parte del programa falla de manera independiente Hay (frecuentemente) fallos en las comunicaciones. La red no es fiable Cuando hay fallos, no hay conocimiento global sobre el estado del programa. Habitualmente no es posible que unas partes del programa puedan tener información relativa al estado de otras Hay más elementos susceptibles de fallo: “un sistema distribuido es aquel en el que el fallo de un ordenador que, ni siquiera sabes que existe, puede dejar tu propio ordenador inutilizable” – Leslie Lamport.

    Inconvenientes de la Computación Distribuida

    edu.red

    Mayor vulnerabilidad frente a ataques intencionados (aspectos de seguridad)

    Computación monolítica Es muy difícil manipular la información que se intercambia entre las distintas partes de un programa Es muy difícil suplantar partes de un programa Existe un único administrador conocido y “fiable” La administración está centralizada Los problemas siempre “vienen de dentro del sistema” (p.e. virus) En computación distribuida La seguridad de la comunicación no está, en principio, garantizada La identidad de las partes no está, en principio, validada Puede haber diferentes administradores con “fiabilidad” desconocida La administración es descentralizada En sistemas abiertos (p.e. Internet), se fomenta el que cualquiera pueda formar parte del sistema distribuido Los problemas pueden venir de fuera (p.e. gusanos) o de dentro del sistema (p.e. virus)

    Inconvenientes de la Computación Distribuida Cont.

    edu.red

    Mayor complejidad de desarrollo

    Computación monolítica Hay un solo hardware en el que se ejecuta la aplicación El modelo de fallos es sencillo de gestionar Los problemas de seguridad son mínimos Hay información global sobre el estado de las distintas partes del programa La comunicación entre los miembros es potente y flexible En computación distribuida Puede haber múltiples plataformas hardware en las que el programa ejecuta El modelo de fallos es complejo y difícil de gestionar Los problemas de seguridad son abundantes y con soluciones complejas No hay información global sobre el estado de las distintas partes del programa La comunicación está limitada (en ancho de banda, en latencia, etc.) Diferentes sistemas utilizan diferentes formatos de representación de datos

    Inconvenientes de la Computación Distribuida Cont.

    edu.red

    … by Peter Deutsch, James Gosling

    Las Falacias de la Computación Distribuida son un conjunto de suposiciones erróneas que suelen asumir los programadores inexpertos en desarrollo de software distribuido

    “All prove to be false in the long run and all cause big trouble and painful learning experiences” – Peter Deutsch

    La red es fiable La latencia es cero El ancho de banda es infinito La red es segura La topología no cambia Hay un administrador El coste de transporte es cero La red es homogénea

    Las Falacias de la Computación Distribuida

    Partes: 1, 2
    Página siguiente