Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduccin a la computacin distribuida por Francisco J. Garca Izquierdo. Universidad de la Rioja. Departamento de Matemticas y Computacin. se encuentra bajo una Licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported.
Sistemas distribuidos
Objetivos
Introducir el concepto de sistema distribuido y de computacin distribuida Repasar las caractersticas de los sistemas distribuidos Repasar los retos tecnolgicos que supone el empleo de sistemas distribuidos y su construccin, y analizar algunas de las soluciones Introducir la necesidad de repasar conceptos bsicos de E/S, concurrencia, comunicaciones
Grado en Ingeniera Informtica Sistemas Distribuidos 2 Francisco J. Garca Izquierdo
Bibliografa
Computacin distribuida: conceptos y aplicaciones. M.L. Liu. Addison Wesley (2004). ISBN: 84-7829-066-4
Captulo 1: Introduccin a la computacin distribuida
Sistemas distribuidos: conceptos y diseo. G. Coulouris, J. Dollimore, T. Kindberg. Addison Wesley (2001). ISBN: 84-7829049-4
Captulo 1: Caracterizacin de los sistemas distribuidos
Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida
Definicin
Un sistema distribuido es aquel en el que los componentes localizados en computadores, conectados en red, comunican y coordinan sus acciones mediante el paso de mensajes [Coulouris, 2001]
Conjunto de computadores independientes, interconectados a travs de una red y que son capaces de colaborar para realizar una tarea [Liu, 2004] Coleccin de computadores independientes que aparecen ante los usuarios como un nico computador [Tanenbaum 1996] En cualquier caso
Varios computadores (nodos) conectados Redes de cualquier tipo Los nodos pueden estar en un mismo rack o en la otra punta del mundo Apariencia de un nico sistema
Grado en Ingeniera Informtica Sistemas Distribuidos 5 Francisco J. Garca Izquierdo
Consecuencias de la definicin
Lidiaremos con la concurrencia
Propia de una red en la que varios ordenadores funcionan a la vez Permite sacar gran partido de los recursos del grupo Desafo: coordinacin, sincronizacin
Aparecern retos de coordinacin:
Hecho de ponerse de acuerdo para lograr hacer alguna accin Cuando los programas en los nodos necesitan colaborar coordinan sus acciones mediante intercambio de mensajes y protocolos. Pueden darse situaciones de bloqueo, espera indefinida, de acceso a zonas protegidas (regiones crticas), diferencias de reloj,
Consecuencias de la definicin
Cuidado con la seguridad
Para compartir y cooperar entre s los nodos del S.D. deben estar abiertos al exterior. Esto implica riesgos para la disponibilidad Es necesario gestionar la disponibilidad para evitar abusos, ataques, suplantaciones,
Consecuencias de la definicin
Fallos independientes
Si todos los sistemas pueden fallar, los distribuidos pueden fallar ms
Fallos de comunicacin Fallos en algn nodo
Un problema comn es que el resto de los nodos pueden no ser conscientes del fallo en la red o en otro nodo hasta un tiempo despus de que ste ocurra Incluso pueden seguir trabajando de forma autnoma esperando el restablecimiento del servicio Un sistema distribuido es aquel en el que un fallo de un computador que ni siquiera sabes que existe puede dejar tu propio ordenador inutilizable [Leslie Lamport]
Grado en Ingeniera Informtica Sistemas Distribuidos 9 Francisco J. Garca Izquierdo
Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida
10
Tipos de computacin
Monoltica
La que utiliza una nica CPU para ejecutar uno o ms programas por cada aplicacin No conectado a red: slo puede usar los recursos de los que dispone por s Puede ser monousuario o multiusuario En multiusuario
Los recursos del computador se reparten en el tiempo (time-slicing) Los usuarios (que puede estar dispersos geogrficamente) se conectan a travs de terminales Ejemplos: IBM 360, Univac 1100 (Mainframes)
Ejemplos de aplicaciones tpicas: programas separados usados para una nica funcin (contabilidad, nminas,)
11
Distribuida
Usa mltiples computadores conectados a una red, cada uno de los cuales aporta su CPU y sus recursos Los usuarios de cada equipo (multiusuario o monousuario) pueden acceder a los recursos de su propio computador y a los de los dems
Cooperativa
Mltiples equipos, programas o recursos colaboran para realizar una tarea Ejemplos:
P2P, GRID computing Computacin voluntaria: BOINC, RiojaScience@home
12
Escalabilidad
En la computacin monoltica los recursos estaban limitados por la capacidad del computador En la distribuida es ms fcil aadir o captar ms recursos si son necesarios Load Balancing
Tolerancia a fallos
Es posible replicar recursos para presentar disponibilidad en presencia de fallos (Mirroring)
13
Intranet
Porcin de Internet con acceso restringido por una poltica de seguridad Mltiples configuraciones: desde una nica LAN a varias LAN en distintos pases (usando VPN o no) Se conecta a Internet mediante un router Se protege del exterior y limita los accesos desde el interior mediante un cortafuegos (firewall) Optimiza el acceso al exterior mediante caches (locales) y servidores proxy (compartidos) Hay casos en los que ni siquiera estn conectadas a Internet (hospitales, redes militares, bancos, )
14
Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida
15
Heterogeneidad
Heterogeneidad: variedad y diferencia Se da en: redes, hardware de ordenadores, sistemas operativos, lenguajes de programacin, implementaciones de diferentes desarrolladores La forma de tratar esta diversidad es mediante el uso de estndares
Ejemplo de todos los das: USB Internet usa un gran nmero de esos protocolos que permiten que nodos de distinto tipo (mquina, SO,) se entiendan
HTTP, FTP, SMTP, POP,
Otro tema difcil de tratar es la distinta representacin de los datos en distintos entornos (mquinas, pases):
Diferente codificacin de los enteros Diferentes juegos de caracteres
Relacionado con los sistemas distribuidos orientados a objetos hay tecnologas que gestionan la heterogeneidad ofreciendo un interface comn de acceso en forma de algn middleware
Grado en Ingeniera Informtica Sistemas Distribuidos 16 Francisco J. Garca Izquierdo
Middleware
Capa software que proporciona una abstraccin de programacin y de la heterogeneidad subyacente (redes, S.O., lenguajes de programacin) Proporciona un modelo computacional uniforme a disposicin de los programadores de aplicaciones distribuidas:
Abstrae los protocolos y mecanismos de bajo nivel y proporciona una serie de posibilidades de alto nivel a los desarrolladores
Ejemplos de middleware:
Invocacin sobre objetos remotos: CORBA, Java RMI Notificacin de eventos remotos Acceso remoto a BD (mediante SQL): ODBC, JDBC Acceso a sistemas mediante mensajes (sncronos o asncronos), MOM Servidores de aplicaciones, monitores transaccionales
17 Francisco J. Garca Izquierdo
Extensibilidad
Caracterstica que determina si un sistema puede ser ampliado y/o re-implementado en distintos aspectos
Aadir nuevos recursos y servicios (ej: un nuevo disco) Ampliar la capacidad de servicio de los ya existentes Modificar los ya existentes por otros ms capaces (ej: cambio de BD)
Gracias al empleo de estndares estas tareas deberan poder realizarse por cualquier proveedor/fabricante
Grado en Ingeniera Informtica Sistemas Distribuidos 18 Francisco J. Garca Izquierdo
Seguridad
Los recursos de informacin que un sistema distribuido maneja pueden ser de alto valor La disponibilidad lleva asociados riesgos de seguridad La seguridad tiene varios componentes (aspectos):
Confidencialidad: proteccin contra el descubrimiento por parte de individuos no autorizados
Acceso no autorizado a sistemas y a la informacin que contienen Captura de mensajes intercambiados con datos sensibles
Integridad: proteccin contra la alteracin o corrupcin (dentro del sistema o en el mensaje) Disponibilidad: proteccin contra la interferencia con los procedimientos de acceso a los recursos (denegacin de servicio, DNS cache poisoing) Autentificacin: asegurar que los interlocutores son realmente quienes pretenden ser Otros: control de acceso, seguridad en el cdigo mvil, no repudio,
19
Escalabilidad
Un sistema es escalable si conserva su efectividad cuando ocurre un incremento significativo en el nmero de recursos y nmero de usuarios Para que un sistema sea escalable debe ser extensible El diseo de sistemas escalables presenta como retos:
Control de los recursos fsicos
Al crecer la demanda debera ser posible, a coste razonable, extender los recursos fsicos que prestan el servicio (ej: Balanceo de carga / mirroring)
20
Tipos de escalabilidad
Vertical
Comprar hardware ms potente, reemplazando el actual. Est limitado por la tecnologa disponible Es sencillo de poner en prctica El coste no suele escalar linealmente: un servidor el doble de rpido suele ser ms del doble de caro
Horizontal
Comprar hardware adicional, que complementa al actual. Es ms complejo de disear, construir y mantener Requiere planificacin: el SW y HW debe permitir hacerlo
Grado en Ingeniera Informtica Sistemas Distribuidos 21 Francisco J. Garca Izquierdo
Tratamiento de fallos
Concepto relacionado: disponibilidad
Porcin del tiempo en el que un sistema es utilizable.
Los fallos en un S.D. suelen ser parciales: uno nodo puede fallar pero los dems no
Esto complica las tcnicas de tratamiento de fallos
22
Tolerancia a fallos:
Capacidad de un sistema de conservar su funcionalidad an en caso de producirse algn fallo. Hacer un sistema 100% a prueba de fallos puede ser muy costoso (o imposible) Hay ciertos fallos que pueden tolerarse
Recuperacin frente a fallos: detectado el fallo se trata de dejar el sistema en un estado previo correcto (caso de las BD) Redundancia:
Emplear varios recursos o servicios idnticos (mirroring) Reto: que el cambio entre rplicas sea rpido
23
Concurrencia
Una caracterstica bsica de los sistemas distribuidos: comparticin de recursos Hay sistemas que reciben miles de solicitudes por minuto (servidores Web) Los sistemas no deben procesar estas solicitudes de forma secuencial (sera muy limitante) Existe la posibilidad de que un mismo recurso sea accedido por varios usuarios al mismo tiempo (ej, BD, sistema de subastas, aplicacin de reserva de turno de prcticas) Es necesario disponer de mecanismos que garanticen la integridad de los recursos ante accesos concurrentes (ej.: los problemas clsicos de acceso a BD)
Una solucin podra pasar por disponer de mecanismos de bloqueo
24
Transparencia
Es la ocultacin al usuario y al programador de la separacin de los componentes del sistema distribuido, de forma que lo perciba como un todo ms que como una coleccin de componentes individuales (ej RMI). Tipos de transparencia
Transparencia de acceso que permite acceder a los recursos locales y remotos empleando operaciones idnticas. Transparencia de ubicacin que permite acceder a los recursos sin conocer su localizacin. Transparencia de concurrencia que permite que varios procesos operen concurrentemente sobre recursos compartidos sin interferencia mutua. Transparencia de replicacin que permite utilizar mltiples ejemplares de cada recurso para aumentar la fiabilidad y las prestaciones sin que los usuarios y los programadores de aplicaciones necesiten su conocimiento.
25
Transparencia (II)
Transparencia frente a fallos que permite ocultar los fallos, dejando que los usuarios y programas de aplicacin completen sus tareas a pesar de fallos del hardware o de los componentes software. Transparencia de movilidad que permite la reubicacin de recursos y clientes en un sistema sin afectar la operacin de los usuarios y los programas. Transparencia de prestaciones (HW) que permite reconfigurar el sistema para mejorar las prestaciones segn vara su carga. Transparencia al escalado (SW) que permite al sistema y a las aplicaciones expandirse en tamao sin cambiar la estructura del sistema o los algoritmos de aplicacin. Se apoya en el anterior.
Especialmente afectan a los sistemas distribuidos la transparencia de acceso y de ubicacin (al conjunto de ambas se le suele llamar transparencia de red)
26
Transparencia (III)
Ejemplos de transparencia
De acceso: sistema de ficheros, RMI De ubicacin: las URL
son nombres lgicos, no direcciones fsicas (gracias al DNS) No tiene transparencia de movilidad
Frente a fallos: el email, en presencia de fallos se reenva hasta agotar un lmite o lograr el envo; el protocolo TCP De movilidad: cambio de clula de los telfonos mviles
Grado en Ingeniera Informtica Sistemas Distribuidos 27 Francisco J. Garca Izquierdo
Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida
28
Qu se necesita saber?
Algunos de los conceptos clave que hemos de repasar para poder hacer programacin distribuida son:
Programacin en red
Lleva pareja un repaso profundo de los APIs de entrada/salida (I/O)
Programacin concurrente
Todo ello lo haremos usando Java como lenguaje de programacin Los prximos temas los dedicaremos a cada uno de esos aspectos
29
Sistemas distribuidos
Balanceador
Cluster
Aplicacin A
Volver
Grado en Informtica Programacin de Bases de datos
Balanceador
Cluster
Volver
Grado en Informtica Programacin de Bases de datos