Está en la página 1de 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

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

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

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

Grado en Ingeniera Informtica Sistemas Distribuidos

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,

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

Volver
Grado en Informtica Programacin de Bases de datos

31

Francisco J. Garca Izquierdo

Tratamiento de fallos - mirroring

Balanceador
Cluster

Copias
(mirrors)

Volver
Grado en Informtica Programacin de Bases de datos

Aplicacin A
Aplicacin B
Aplicacin C
Aplicacin D
32

Francisco J. Garca Izquierdo

También podría gustarte