Sei sulla pagina 1di 32

Introduccin a la computacin distribuida

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.

Departamento de Matemticas y Computacin

Grado en Ingeniera Informtica

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

Sistemas operativos distribuidos. A. Tanenbaum. Prentice Hall (1996). ISBN: 968-880-627-7

Grado en Ingeniera Informtica Sistemas Distribuidos

Francisco J. Garca Izquierdo

Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida

Grado en Ingeniera Informtica Sistemas Distribuidos

Francisco J. Garca Izquierdo

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

Un sistema distribuido de piedra

Grado en Ingeniera Informtica Sistemas Distribuidos

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,

Aparecern retos de sincronizacin:


Regular el orden de actuacin de los intervinientes Puede estar basada en relojes: problemas de diferencia de reloj Otro aspecto relacionado: protocolos sncronos o asncronos

Grado en Ingeniera Informtica Sistemas Distribuidos

Francisco J. Garca Izquierdo

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,

Grado en Ingeniera Informtica Sistemas Distribuidos

Francisco J. Garca Izquierdo

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

Grado en Ingeniera Informtica Sistemas Distribuidos

10

Francisco J. Garca Izquierdo

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,)

Grado en Ingeniera Informtica Sistemas Distribuidos

11

Francisco J. Garca Izquierdo

Tipos de computacin (II)


Paralela
Utiliza ms de un procesador a la vez para ejecutar un nico programa Puede darse en equipos con mltiples CPUs

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

Grado en Ingeniera Informtica Sistemas Distribuidos

12

Francisco J. Garca Izquierdo

Por qu sistemas distribuidos?


La motivacin de la construccin de S.D. est relacionada con la comparticin de recursos. Un recurso es casi cualquier cosa (HW o SW): la CPU, un disco, contenido de cualquier tipo, un SGBD y sus esquemas, una impresora, un sensor Pero hay otras razones que apoyan su xito
Econmicas:
Precio de los PC y del acceso a red Otros dispositivos: mviles, PDAs, sistemas embebidos,

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)

Y no digamos nada de Internet!

Grado en Ingeniera Informtica Sistemas Distribuidos

13

Francisco J. Garca Izquierdo

Ejemplos de sistemas distribuidos


Internet
Red enorme Programas ejecutndose en diferentes ordenadores Se comunican mediante paso de mensajes (ej HTTP) Empleando un medio comn de comunicaciones El conjunto de servicios es abierto (se pueden aadir servidores)

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, )

Grado en Ingeniera Informtica Sistemas Distribuidos

14

Francisco J. Garca Izquierdo

Agenda
Definicin Repaso de los tipos de computacin Desafos de los sistemas distribuidos Conceptos bsicos en computacin distribuida

Grado en Ingeniera Informtica Sistemas Distribuidos

15

Francisco J. Garca Izquierdo

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

Grado en Ingeniera Informtica Sistemas Distribuidos

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,

Grado en Ingeniera Informtica Sistemas Distribuidos

19

Francisco J. Garca Izquierdo

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)

Control de las prdidas de prestaciones: minimizar Prevencin del desbordamiento de recursos SW


Ej.: el desbordamiento del actual direccionamiento IP; efecto 2000 Difcil de prever con antelacin; puede ser peor prevenir demasiado

Evitacin de los cuellos de botella de prestaciones


Recursos que se acceden muy a menudo (Ej. Registro DNS) Soluciones: rplicas, caches, descentralizacin (DNS)

Grado en Ingeniera Informtica Sistemas Distribuidos

20

Francisco J. Garca Izquierdo

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

En primer lugar es necesario detectar el fallo


Algunos fallos pueden detectarse:
Con ayuda de checksums Protocolos de keep-alive

Grado en Ingeniera Informtica Sistemas Distribuidos

22

Francisco J. Garca Izquierdo

Tcnicas de tratamiento de fallos


Enmascaramiento de fallos:
Tras detectarse, algunos fallos pueden ocultarse o atenuarse
retransmisin de mensajes ante fallos de recepcin; replicas mirroring

Ojo que las contramedidas tambin puede fallar

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

Grado en Ingeniera Informtica Sistemas Distribuidos

23

Francisco J. Garca Izquierdo

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

Grado en Ingeniera Informtica Sistemas Distribuidos

24

Francisco J. Garca Izquierdo

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.

Grado en Ingeniera Informtica Sistemas Distribuidos

25

Francisco J. Garca Izquierdo

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)

Grado en Ingeniera Informtica Sistemas Distribuidos

26

Francisco J. Garca Izquierdo

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

Grado en Ingeniera Informtica Sistemas Distribuidos

28

Francisco J. Garca Izquierdo

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

Grado en Ingeniera Informtica Sistemas Distribuidos

29

Francisco J. Garca Izquierdo

Fin del tema 1

Departamento de Matemticas y Computacin

Grado en Ingeniera Informtica

Sistemas distribuidos

Balanceo de carga - mirroring

Balanceador
Cluster

Aplicacin A

Aplicacin B Aplicacin C Aplicacin D

Copias (mirrors) Aplicacin A Aplicacin B Aplicacin C Aplicacin D


31 Francisco J. Garca Izquierdo

Volver
Grado en Informtica Programacin de Bases de datos

Tratamiento de fallos - mirroring

Balanceador
Cluster

Copias (mirrors) Aplicacin A Aplicacin B Aplicacin C Aplicacin D


32 Francisco J. Garca Izquierdo

Volver
Grado en Informtica Programacin de Bases de datos

Potrebbero piacerti anche