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
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
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
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.
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
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
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
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.
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.
… 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
Página siguiente |