Tema I: Introducción a la computación distribuida



Descargar 138,89 Kb.
Fecha de conversión23.06.2017
Tamaño138,89 Kb.

Tema I: Introducción a la computación distribuida

  • Luis López Fernández
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • Tema I: Contenidos
  • 1.1: Definiciones y conceptos básicos
  • 1.2: Algunas nociones (muy) básicas sobre Java
  • 1.3: Disciplinas base de la computación distribuida
  • 1.4: IPC (Inter Process Communications): Comunicación entre procesos
  • 1.5: Paradigmas de la computación distribuida
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • Lección 1.1
  • 1.1: Definiciones y conceptos básicos
  • 1.2: Algunas nociones (muy) básicas sobre Java
  • 1.3: Disciplinas base de la computación distribuida
  • 1.4: IPC (Inter Process Communications): Comunicación entre procesos
  • 1.5: Paradigmas de la computación distribuida
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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.
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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.
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 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.
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • … 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
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • 1.1: Definiciones y conceptos básicos
  • 1.2: Algunas nociones (muy) básicas sobre Java
  • 1.3: Disciplinas base de la computación distribuida
  • 1.4: IPC (Inter Process Communications): Comunicación entre procesos
  • 1.5: Paradigmas de la computación distribuida
  • Lección 1.2
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • Java es un lenguaje de programación orientado a objetos desarrollado por James Gosling en Sun Microsystems a comienzos de los 90
  • Los programas Java no se compilan a código nativo (código máquina)
  • El código fuente Java no se interpreta (no es un lenguaje de script)
  • El código Java se compila a bytecode (un código intermedio menos abstracto que el código fuente pero más abstracto que el código máquina)
  • El bytecode es único (no depende del hardware ni del sistema operativo)
  • Nociones sobre el lenguaje de programación Java
  • El bytecode es ejecutado por la Máquina Virtual Java. Hoy en día, lo más habitual es utilizar compilación JIT (Just-In-Time). El bytecode se compila a código nativo como paso previo a la ejecución
  • Los programas Java pueden ejecutar en cualquier plataforma sobre la que exista una JVM (Java Vírtual Machine)
  • Filosofía “Write once, run anywhere
  • Por tanto, los programas Java son independientes de la plataforma
  • … digamos que sólo en teoría
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • JVM (Java Virtual Machine): Software que virtualiza el entorno de ejecución. Es la parte que se ocupa de que una aplicación pueda ejecutar con independencia de la plataforma
  • JRE (Java Runtime Environment): Paquete de programas que permiten la ejecución de una aplicación Java. Incluye una JVM + una API
  • Dependiendo de la plataforma hardware, se han definido diferentes familias de APIs
  • JME (Java Platform Micro Edition: para entornos con recursos limitados
  • JSE (Java Platform Standard Edition): para ordenadores personales
  • JEE (Java Platform Enterprise Edition): para aplicaciones de empresa distribuidas
  • JDK (Java Development Kit): JRE + herramientas necesarias para desarrollar aplicaciones en el lenguaje Java (compiladores, depuradores, etc.)
  • Netbeans: IDE distribuido por Sun Microsystems para el desarrollo en Java
  • Eclipse: IDE para el desarrollo en Java distribuido como software libre
  • Java: Algo de jerga
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • En Java hay tres tipos de programas: las aplicaciones, los applets y los servlets
  • Existen otros tipos de programas muy específicos (MIDlets, etc.) pero no los estudiaremos en este curso
  • Aplicaciones Java (Java stand-alone applications)
  • El programa se ejecuta como un proceso independiente
  • El flujo de ejecución debe comenzar siempre en un método estático con nombre main que se encuentre en una clase pública
  • Java: tipos de programas
  • public class HolaMundo{
  • public static void main(String[] args){
  • System.out.println(“Hola mundo!”);
  • }
  • }
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • Java applets
  • El programa se ejecuta empotrado en otra aplicación (normalmente un navegador)
  • Debe existir una clase pública que extienda la clase Applet de la API estándar y redefina el método paint de la misma
  • El flujo de ejecución comienza en el método paint de la citada clase
  • El applet se descarga desde una máquina remota y se ejecuta en una máquina virtual local
  • Java: tipos de programas Cont.
  • import java.applet.Applet;
  • import java.awt.Graphics;
  • public class HelloWorld extends Applet {
  • public void paint(Graphics gc) {
  • gc.drawString("Hello, world!", 65, 95);
  • }
  • }
  • Tema I: Introducción a las computación distribuida
  • Luis López Fernández
  • Java servlets
  • El programa se ejecuta empotrado en otra aplicación (normalmente un servidor)
  • Se debe implementar la interfaz Servlet definida en la API Servlet
  • El servlet el un objeto que ejecuta en una máquina remota e interactúa con un proceso local mediante un protocolo de petición – respuesta
  • Java: tipos de programas Cont.
  • import java.io.*;
  • import javax.servlet.*;
  • import javax.servlet.http.*;
  • public class HelloWorld extends HttpServlet {
  • public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  • {
  • response.setContentType("text/html");
  • PrintWriter pw = response.getWriter();
  • pw.println(“Hello, world!


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal