Issuu on Google+

Abigail Lindo Castro Liliana Carmona Cabrera

Introducci贸n a los Sistemas Distribuidos

Conceptos que caracterizan SD, ventajas y desventajas, evoluci贸n.

Universidad Veracruzana


INTRODUCCIÓN A LOS SISTEMAS DISTRIBUIDOS 1. INTRODUCCIÓN EL desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a principios de 1970. En los últimos años, la disponibilidad de computadoras personales de altas prestaciones, estaciones de trabajo y servidores ha resultado en un mayor desplazamiento hacia los sistemas distribuidos en detrimento de los ordenadores centralizados multiusuario. Esta tendencia se ha acelerado por el desarrollo de software para sistemas distribuidos, diseñado para soportar el desarrollo de aplicaciones distribuidas. Este software permite a los ordenadores coordinar sus actividades y compartir los recursos del sistema como hardware, software y datos. 2.- EVOLUCIÓN El desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a principios de 1970. Recientemente, la disponibilidad de computadoras personales de altas prestaciones, estaciones de trabajo y ordenadores servidores ha resultado en mayor desplazamiento hacia los sistemas distribuidos en detrimento de las computadoras centralizadas multiusuario. Esta tendencia se ha acelerado por el desarrollo de software para sistemas

sistema – hardware, software y datos. Los sistemas distribuidos se implementan en diversa plataformas hardware, desde unas pocas estaciones de trabajo conectadas por una red de área local, hasta internet, una colección de redes de área local y de rea extensa interconectados, que en lazan millones de computadoras. Los sistemas distribuidos existen en el mundo de la informática en una u otra forma desde hace algún tiempo, aunque no se hayan llamado explícitamente sistemas distribuidos y no tuviesen la flexibilidad que tienen hoy en día. Al principio sólo existían los grandes ordenadores o mainframes en los que se ejecutaban Sistemas de gestión de Base de Datos (SGBD) jerárquicos. La conexión de los usuarios con el ordenador central se hacía mediante terminales tontas con conexiones punto a punto con el servidor. Los grandes ordenadores tenían un coste muy elevado y eran difíciles de mantener pero eran capaces de dar servicio a un número muy elevado de usuarios y tenían la ventaja (o desventaja) de ser administrados de forma centralizada. DEFINICIÓN Un sistema distribuido se puede definir como una colección de computadoras independientes que aparecen a los usuarios como un solo sistema coherente.

distribuidos, diseñado para soportar el desarrollo de aplicaciones distribuidas. Este software permite a las computadoras coordinar sus actividades y compartir los recursos del

Abigail Lindo Castro

Una definición más formal, establece que un sistema distribuido es aquel cuyos componentes están localizados dentro de una red de computadoras que se comunican y coordinan mediante el paso de mensajes. Todo esto

Liliana Carmona Cabrera

1


considerando la coordinación de sus componentes, la falta de un reloj global y la independencia a fallas de sus componentes.

proporciona servicios.

MOTIVACIÓN La meta principal de un sistema distribuido es facilitar a los usuarios (y aplicaciones) el acceder a los recursos remotos, y de compartirlos de una forma controlada y eficiente. Los recursos pueden estar representados por cualquier cosa, pero ejemplos típicos incluyen impresoras, computadoras, unidades de almacenamiento, archivos, páginas web y redes, por mencionar algunos.

CONCEPTOS GENERALES Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). Componentes:    

 

Proceso: Es cualquier programa que se ejecuta en una máquina. Agente: Es un proceso que actúa sin control directo del usuario, y que puede presentarse a la red como un usuario. Cliente: Proceso que puede establecer conexiones a servidores y enviar peticiones a él. Agente de Usuario: Cliente que representa al usuario y a menudo tiene interfaz de usuario, para que las personas puedan controlarlo directamente. Servicio: Parte de un sistema de computadoras que gestiona una colección de recursos y presenta una funcionalidad a los usuarios y a las aplicaciones. Servidor: Proceso que acepta conexiones de clientes y realiza servicios para ellos. Host: Máquina conectada a la red que

Abigail Lindo Castro

3.- CARACTERÍSTICAS Para que un sistema pueda ser considerado como distribuido, debe ser capaz de superar distintos retos como son: I. II. III. IV. V. VI.

La heterogeneidad componentes. La apertura. Escalabilidad. Tolerancia a fallos. Concurrencia Transparencia.

de

sus

a) HETEROGENEIDAD El Internet permite a los usuarios el acceder a servicios y ejecutar aplicaciones sobre

Liliana Carmona Cabrera

1


ambientes heterogéneos de computadoras y redes. La heterogeneidad (es decir la variedad y diferencia) aplica a lo siguiente:     

Redes Hardware de Computadoras Sistemas Operativos Lenguajes de Programación Implementaciones de los desarrolladores

Heterogeneidad y código móvil: El término código móvil es usado para referirse a código que puede ser enviado de una computa dora a otra, y ejecutars e en el destino. Puesto que el grupo de instrucciones para cada computadora depende de su hardware, el código máquina para una computadora no necesariamente es funcional en otra. b) APERTURA La apertura en un sistema de cómputo es la característica que determina si un sistema puede extenderse y reimplementarse de distintas maneras. La apertura de un sistema distribuido se determina principalmente por el grado en que nuevos recursos de compartición de servicios pueden ser añadidos y estar disponibles para su uso por los programas cliente. La apertura no puede ser alcanzada a menos de que la especificación y documentación de las interfaces principales de software de los componentes de un sistema estén disponibles

Abigail Lindo Castro

para los desarrolladores de software. En otras palabras, las interfaces clave deben ser publicadas. Este proceso es similar a la estandarización de interfaces, pero comúnmente se salta los procedimientos oficiales de estandarización, los cuales son usualmente difíciles de manejar y lentos. c) ESCALABILIDAD Un sistema puede describirse como escalable si se mantiene efectivo cuando existe un aumento significativo en el número de recursos y el número de usuarios. El Internet como tal, provee de un ejemplo de un sistema distribuido en el cual el número de computadoras y servicios aumenta dramáticamente. La escalabilidad de un sistema puede medirse utilizando al menos tres dimensiones diferentes. La primera, un sistema puede ser escalable con respecto a su tamaño, significando que se pueden añadir fácilmente más usuarios y recursos al sistema. Segunda, un sistema escalable geográficamente es aquel en que sus usuarios y recursos pueden estar separados. Y la tercera, un sistema puede ser administrativamente escalable, lo que significa que puede mante nerse fácil de admin istrar aun si esta dividi do en varias organi zacio nes administrativas independientes. El diseño de un sistema distribuido escalable presenta los siguientes retos: 

Controlar el costo de los recursos

Liliana Carmona Cabrera

2


físicos: Conforme la demanda de un recurso crece, debe ser posible mejorar el sistema, a un costo razonable, para alcanzarlo. Controlar la pérdida de rendimiento: Considerar a administración de un grupo de datos cuyo tamaño es proporcional al número de usuarios o recursos en el sistema.

Prevenir la pérdida de recursos de software: Un claro ejemplo de la falta de escalabilidad se observa en los números utilizados como direcciones de Internet, puesto que no existe una solución final correcta para este problema, ya que es difícil predecir la demanda que el sistema tendrá en años posteriores.

Evitar cuellos de botella en el rendimiento: De manera general, los algoritmos deben de ser descentralizados para evitar tener cuellos de botella en el rendimiento. Puesto que algunos recursos son accedidos con mayor frecuencia, herramientas como la replicación pueden ser utilizadas para solventar este tipo de problemas.

Idealmente, el sistema y las aplicaciones de soft war e no deb ería n de cam biar cuando la escala de sistema aumenta, pero esto es algo muy difícil de lograr. d) MANEJO DE ERRORES Cuando las fallas ocurren en hardware o software, los programas pueden producir

Abigail Lindo Castro

resultados incorrectos o detenerse antes de completar el proceso de cómputo. Las fallas en sistemas distribuidos son parciales, es decir, algunos componentes fallan mientras otros siguen funcionando normalmente. Por lo tanto, el manejo de fallas es particul arment e difícil. Por lo anterior , es necesar io el uso de ciertas técnicas de manejo de fallas. 1. Detección de Errores: Algunas fallas pueden ser detectadas. Sin embargo, es difícil detectar fallas tales como que un servidor remoto pueda haber fallado. El reto es el manejo en presencia de fallas que no pueden ser detectadas, pero de las cuales se sospecha. 2. Enmascarado de Fallas: Algunas fallas que han sido detectadas pueden ocultarse o hacerse menos severas, por ejemplo: – Los mensajes pueden ser retransmitidos cuando fallan al llegar, – La información puede escribirse a múltiples discos, si alguno falla, el otro estará disponible. Las técnicas de enmascarado de fallas podrían no contemplar el peor de los casos, por ejemplo en el caso anterior, el reenvío de mensajes podría tomar más tiempo del razonable, y la información escrita a los Múltiples discos podría estar corrupta. 3. Tolerancia a Fallas: La mayoría de los servicios de Internet presentan fallos, sería imposible para ellos tratar de detectar y resolver todos los posibles fallos que pudieran ocurrir en una red tan grande y con tantos componentes. Sus programas cliente pueden estar diseñados

Liliana Carmona Cabrera

3


para tolerar fallos, lo que generalmente significa que los usuarios también tendrán que tolerarlos, es decir, no mantienen al usuario en espera por siempre, sino que más bien le informan sobre el problema. 4. Recuperación en Fallas: La recuperación incluye el diseño del software, para que el estado de la información se pueda recuperar o reponer después de que un servidor ha fallado. En general, los cálculos realizados por los programa s estarán incomplet os cuando un fallo ocurre, y la información que controlan podría no estar en un estado consistente. 5. Redundancia: Los servicios pueden tolerar fallos mediante el uso de componentes redundantes, pero actualmente, el diseño de técnicas efectivas para mantener réplicas de información en constante cambio sin una pérdida excesiva del rendimiento es un gran reto. Los sistemas distribuidos ofrecen un alto grado de disponibilidad frente a las fallas de hardware. La disponibilidad de un sistema es una medida de la proporción de tiempo en que esta disponible para su uso. e) CONCURRENCIA Tanto los servicios y aplicaciones ofrecen recursos que pueden ser compartidos entre los clientes en un sistema distribuido. Existe, por lo tanto, una posibilidad de que varios clientes intenten acceder a un recurso compartido al mismo tiempo. El proceso que controla un recurso compartido debe tomar una sola solicitud de cliente a la vez, pero este modelo limita el funcionamiento.

Abigail Lindo Castro

f)

TRANSPARENCIA

La transparencia se puede definir como el encubrimiento para el usuario por parte del programador, de la separación de los componentes en un sistema distribuido, de manera que el sistema se perciba como un todo más que como un grupo de componentes independientes. Las implicaciones de la transparencia son las que tienen mayor influencia en el diseño de sistemas de software. Formas diferentes de concurrencia: Transparencia de Acceso: Permite que los recursos locales y remotos puedan ser accedidos utilizando operaciones idénticas. Transparencia de Localización: Permite que los usuarios pueden acceder a los recursos sin preocuparse de su ubicación física. Transparencia de Concurrencia: Permite que múltiples procesos operen concurrentemente utilizando recursos compartidos sin interferir entre ellos. Transparencia de Replicación: Permite utilizar múltiples instancias de los recursos para incrementar la confiabilidad y rendimiento sin que los usuarios o programadore s deban tener conocimiento de esto. Transparencia de Fallas: Como su nombre lo indica, permite el ocultamiento de las fallas, para que los usuarios y aplicaciones puedan completar sus tareas sin importar la falla de componentes de hardware o software. Transparencia de Migración (o de Movilidad): Permite el movimiento o traslado de recursos y

Liliana Carmona Cabrera

4


clientes dentro del sistema sin afectar las operaciones de los usuarios o los programas. Transparencia de Rendimiento: Permita al sistema reconfigurarse para mejorar su rendimiento conforme la carga varía. Transparencia de Escalado: Se refiere a la posibilidad de que el sistema y las aplicaciones puedan expandirse en tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación. 4.VENTAJAS DISTRIBUIDOS

DE

LOS

SISTEMAS

Procesadores más poderosos y de menores costos  Desarrollo de estaciones con capacidades  Las estaciones satisfacen necesidades de los usuarios  Uso de nuevas interfaces

mas las

Avances en la tecnología de comunicaciones  Disponibilidad de elementos comunicación  Desarrollo de nuevas técnicas

disponibilidad del sistema).  Mayores servicios que funcionalidad (monitoreo, correo electrónico, etc.)

5.- DESVENTAJAS DISTRIBUIDOS

DE

LOS

elevan la telecontrol,

SISTEMAS

 Requerimientos de mayores controles de procesamiento  Velocidad de programación de información (muy lenta a veces)  Servicios de replicación de datos y servicios con posibilidades de fallas  Mayores controles de acceso y proceso  Administración más compleja  Costos

de 6.- REFERENCIAS BIBLIOGRAFICAS Maza, L. A. (Septiembre de 2007). Biblioteca Virtual UV. Recuperado el 08 de Marzo de 2012, de Repositorio institucional: http://cdigital.uv.mx/handle/123456789/28 531

Compartición de recursos  Dispositivos (Hardware)  Programas (Software) Eficiencia y flexibilidad  Respuesta rápida  Ejecución concurrente de procesos (en varias computadoras)  Empleo de técnicas de procesamiento distribuido

Meraz, J. J. (Enero de 2011). Biblioteca Virtual UV. Recuperado el 08 de Marzo de 2012, de Google Academico : http://www.tamps.cinvestav.mx/~jdelgado/f iles/c2/ds_Tarea1.pdf Oviedo,

U. d. (2003-2004). www.google.com. Recuperado el 08 de Marzo de 2012, de http://www.lalogm.x10.mx/joomla/attachm ents/article/3/Breve%20historia%20de%20l os%20SID.pdf

Disponibilidad y confiabilidad  Sistema poco propenso a fallas (si un complemento no afecta a la

Abigail Lindo Castro

Liliana Carmona Cabrera

5


Introducciones