Documente Academic
Documente Profesional
Documente Cultură
SISTEMAS
DISTRIBUIDOS
Sistemas Distribuidos
1. Introduccin:
1.1. Fundamentos:
Qu es un Sistema Distribuido?
Antes de definir lo que es un Sistema Distribuido, vamos a definir un trmino ms
general: La Computacin Distribuida, podemos definirla de muchas maneras, este
trmino se utiliza indiscriminadamente para referirse a cualquier sistema en el que
mltiples agentes autnomos, cada uno con capacidades de cmputo individual,
se comunican entre s y afectan mutuamente su comportamiento. Los agentes,
usualmente llamados procesadores, procesos o nodos, pueden ser desde
computadoras completas hasta autmatas celulares con capacidad de cmputo y
memoria muy limitados que se pueden comunicar mediante mensajes.
La Computacin Distribuida hace referencia a cualquier evento en el cual se
maneja un sistema en una red de computadoras y trata de describir las tendencias
hacia la funcionalidad distribuida: sistemas distribuidos, procesamiento
distribuido, bases de datos distribuidas y cualquier otro trmino computacional
que sea distribuido. Podemos decir entonces, que la Computacin Distribuida se
refiere a los servicios que provee un Sistema de Computacin Distribuido.
Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada por
Enslow, ya en 1978, que le atribuye las siguientes propiedades:
o Est compuesto por varios recursos informticos de propsito general, tanto
fsicos como lgicos, que pueden asignarse dinmicamente a tareas
concretas.
o Estos recursos estn distribuidos fsicamente, y funcionan gracias a una red
de comunicaciones.
o Hay un sistema operativo de alto nivel, que unifica e integra el control de los
componentes.
o El hecho de la distribucin es transparente, permitiendo que los servicios
puedan ser solicitados especificando simplemente su nombre (no su
localizacin).
o El funcionamiento de los recursos fsicos y lgicos est caracterizado por
una autonoma coordinada.
A pesar del tiempo transcurrido, esta definicin sigue siendo, en esencia, vlida.
As, para Coulouris un sistema distribuido es aqul que est compuesto por varias
computadoras autnomas conectadas mediante una red de comunicaciones y
equipadas con programas que les permitan coordinar sus actividades y compartir
recursos. Bal ofrece una definicin muy similar: ``Un sistema de computacin
distribuida est compuesto por varios procesadores autnomos que no
comparten memoria principal, pero cooperan mediante el paso de mensajes sobre
una red de comunicaciones''. Y segn Schroeder, todo sistema distribuido tiene
tres caractersticas bsicas:
Sistemas Distribuidos
Sistemas Distribuidos
Sistemas Distribuidos
Sistemas Distribuidos
Sistemas Distribuidos
c) Seguridad:
La gran mayora de la informacin que maneja un sistema distribuido tiene un
alto valor para los usuarios de dicho sistema, y es por eso que la seguridad de
la informacin juega un papel clave al momento de desarrollar dicho sistema.
La seguridad de la informacin es todo lo que concierne a asegurar que no
ocurrirn cosas malas con los mensajes que envan los clientes para solicitar
informacin a un servidor, y por su puesto, con la informacin que estos
reciben como respuesta a sus peticiones. No basta con asegurar que estos
mensajes sern transmitidos de forma oculta, sino que tambin hay que
asegurar que la informacin sea entregada nicamente a quien debe de ser
entregada y que esto se har siempre de forma correcta y en el momento en
que se requiere. La seguridad es relativa a la amenaza que cada sistema
afronta, afecta a todos los puntos del sistema y debe de ser fcil de obtener.
La seguridad debe ofrecer los siguientes servicios:
o Confidencialidad, es decir, el manejo privado de la informacin:
proteger la informacin de ser accedida por usuarios no autorizados.
o Autentificacin, o capacidad de asegurar la identidad de un usuario.
o Integridad, que asegura que la informacin que empleamos no ha sido
manipulada, alterada o corrompida desde el origen.
o No repudio, de una operacin de emisin y recepcin de informacin
por parte de los agentes.
o Control de acceso a la informacin y/o recursos administrados por un
sistema.
o Disponibilidad de los recursos necesarios de un sistema cuando estos
sean requeridos, lo que protege la informacin contra interferencia con
los procedimientos de acceso a los recursos.
El alto valor de que tiene la informacin es la razn principal por la que esta se
puede ver amenazada de muchas formas, entre las principales podemos
encontrar:
Interrupcin: Destruye la informacin o la inutiliza. Ataca la disponibilidad.
Sistemas Distribuidos
Sistemas Distribuidos
Sistemas Distribuidos
Sistemas Distribuidos
10
Sistemas Distribuidos
11
Problemas de la Escalabilidad
Cuando se necesita escalar un sistema a un nivel ms alto es muy comn que
surja algn tipo de problema. Si consideramos la escalabilidad con respecto al
tamao de un sistema, nos encontramos con las limitaciones que presentan
los servicios, los datos y los algoritmos centralizados.
En muchos sistemas distribuidos es comn encontrar servicios centralizados,
es decir, que son implementados en un mismo servidor, lo que puede
ocasionar un problema muy obvio: este servidor puede convertirse en un
cuello de botella si el nmero de usuarios crece, y a pesar de tener una
capacidad de procesamiento y almacenamiento virtualmente ilimitada, la
comunicacin con este servidor puede llegar a tener un lmite y eventualmente
impedir el crecimiento del sistema. Desafortunadamente el uso de un slo
servidor puede ser inevitable, ya que por lo general tenemos servicios que
trabajan con informacin muy sensible y que tiene que ser lo ms segura
posible, por lo que el tener esta informacin almacenada en diferentes
servidores puede llegar a poner la informacin en riesgo y hacer el sistema
ms vulnerable.
De la misma manera, el almacenamiento centralizado de la informacin puede
ser un grave problema para un sistema distribuido, ya que a pesar de que un
slo servidor nos puede ofrecer la capacidad de almacenamiento que
necesitamos, es muy poco probable que dicho servidor permita el acceso
simultneo a miles o incluso millones de usuarios que desean consultar la
informacin almacenada en l. Un ejemplo de esto es el Sistema de Nombre
de Dominio, que a pasar de poder almacenar todos los registros en una sola
base de datos de varios gigabytes, no podra dar una respuesta a los millones
de usuarios de Internet que accedan este servicio simultneamente.
El uso de algoritmos centralizados es en teora la solucin ptima a un
problema de computacin distribuida, sin embargo, en la prctica podemos
ver que el uso de este tipo de algoritmos en un sistema distribuido grande no
es una buena idea, ya que colectar y transportar los datos de entrada y salida
del sistema hacia un slo punto en el que se computan dichos datos pudiese
sobrecargar parte de la red con todos los mensajes que necesita enviar y
recibir, adems de que el computo de toda la informacin en una sola
mquina tiene ms riesgo a fallos y puede resultar ms tardada. La solucin a
este problema es el uso de algoritmos descentralizados, los cuales cuentan
con ciertas caractersticas que los diferencian de los algoritmos centralizados,
entre las que podemos mencionar:
Ninguna mquina tiene informacin completa del estado del sistema.
Cada mquina toma decisiones propias basndose solamente en informacin
local.
Problemas o fallos de una mquina no arruinan el procesamiento de todo el
algoritmo.
Sistemas Distribuidos
12
Sistemas Distribuidos
13
Sistemas Distribuidos
14
encontrar la manera para que un usuario del sistema no note dicho fallo y que
pueda seguir utilizando el sistema de manera normal, esto es, ocultar los fallos
Sistemas Distribuidos
15
del sistema y encargarse de que los servicios que se ofrecen al cliente nunca
sean interrumpidos. Son muchos ejemplos del enmascaramiento de fallos, en
el caso de un mensaje que se corrompi al ser enviado, una manera de ocultar
el fallo es haciendo la solicitud de reenvo del mensaje, y de esta manera el
usuario nunca notar que hubo un problema. Otro ejemplo lo dan las tcnicas
de redundancia que explicaremos ms adelante, pero que bsicamente
consiste en tener disponibles varios elementos que puedan dar el mismo
servicio y que en caso de que uno falle, otro este en la disponibilidad de
realizar el trabajo en su lugar, esto puede darse cuando fallan componentes de
un servidor (discos duros, tarjetas de red, etc.), o incluso cuando fallan las
conexiones a la red o los sistemas de bases de datos.
tener ciertos problemas sin que estos afecten de manera grave al usuario de
los servicios proporcionados, para as, ignorar la ocurrencia de dichos fallos
cuando la aplicacin lo soporte, o bien, hacer saber al cliente que hay un
problema en lugar de gastar tiempo y recursos innecesarios para corregirlo
cuando probablemente el problema no se pueda arreglar rpido y el cliente
termine por abortar el proceso; Pretender arreglar de manera inmediata todos
los problemas que puedan surgir en un sistema puede resultar incluso daino
para el mismo sistema, puesto que hay problemas que mientras son
arreglados pueden afectar el rendimiento de otros componentes del sistema
que s estn trabajando.
Recuperacin Frente a Fallos: Una vez que fue detectado un fallo y que se ha
Sistemas Distribuidos
16
Las tcnicas antes mencionadas no son las nicas, pero si las ms utilizadas,
estas tcnicas deben de proporcionar las herramientas necesarias para
aumentar el grado de disponibilidad de cualquier sistema distribuido, ya que al
saber como tratar un fallo del sistema, tambin es posible encontrar la manera
de reconfigurar el sistema para que los servicios que este proporciona no sean
interrumpidos, o que en el peor de los casos slo sean afectados los servicios
proporcionados por los componentes afectados.
f) Concurrencia:
El control de concurrencia trata con los problemas de aislamiento y
consistencia del procesamiento de transacciones. El control de concurrencia
de un sistema distribuido asegura que la consistencia de los datos que se
almacenan y que se procesan en el sistema se mantienen en un ambiente
distribuido multiusuario. Si las transacciones son internamente consistentes, la
manera ms simple de lograr este objetivo es ejecutar cada transaccin sola,
una despus de otra. Sin embargo, esto puede afectar mucho el desempeo
de un sistema distribuido dado que el nivel de concurrencia se reduce al
mnimo. El nivel de concurrencia, es decir, el nmero de transacciones
simultneas activas, es probablemente el parmetro ms importante en
sistemas distribuidos. Por lo tanto, los mecanismos de control de
concurrencia buscan encontrar un balance entre el mantenimiento de la
consistencia de los datos y el mantenimiento de un alto nivel de concurrencia.
Si no se hace un adecuado control de concurrencia, se pueden presentar dos
anomalas. En primer lugar, se pueden perder actualizaciones provocando que
los efectos de algunas transacciones no se reflejen en los datos almacenados.
En segundo trmino, pueden presentarse recuperaciones de informacin
inconsistentes. Las tcnicas que se utilizan para asegurar un control de
concurrencia de un sistema distribuido, como hilos, semforos, candados,
etc., se discutirn ms adelante, en la parte de anlisis de la arquitectura de
clienteservidor.
g) Transparencia:
Se dice que un sistema distribuido es transparente, cuando este es capaz de
presentarse ante los usuarios y las aplicaciones como si fuese un sistema que
corre en una sola computadora, y no como un sistema cuyos procesos y
recursos estn distribuidos fsicamente en varias computadoras.
Tipos de Transparencia:
Segn el Manual de Referencia ANSA y el Modelo de Referencia para el
Procesamiento Distribuido Abierto de la Organizacin Internacional de
Estndares (ISO 1995), el concepto de transparencia de puede aplicar a 8
aspectos diferentes de un sistema distribuido:
o Transparencia de Acceso: oculta las diferencias entre la representacin
de los datos y la manera en que los recursos son accedidos.
Sistemas Distribuidos
17
Sistemas Distribuidos
18
Sistemas Distribuidos
19
sobre todo determinar que tipo de respuesta enviar al cliente para que este no
se de cuenta de las fallas del sistema.
Grado de Transparencia:
A pesar de que la transparencia es una caracterstica generalmente deseable
para cualquier sistema distribuido, hay situaciones en las que el pretender
enmascarar todos los aspectos relacionados con la distribucin de los
componentes del sistema puede no ser lo ms ptimo; en algunas ocasiones
es mejor hacer del conocimiento del usuario que el sistema esta compuesto
por varios elementos y que por ms ptima que sea la transmisin de
mensajes o la distribucin y replicacin de componentes, habr cierto tiempo
de respuesta mnimo entre cada transaccin que es imposible evitar.
Hay tambin una relacin directa entre el nivel de transparencia y el
rendimiento de un sistema distribuido, por lo que lo ideal es encontrar un bien
equilibrio entre ambos factores. Por ejemplo, si pretendemos garantizar la
transparencia de replicacin en un sistema, es necesario que el usuario sepa
que para garantizar la consistencia de la informacin es necesario actualizar
todos los componentes replicados cuando se hace un cambio, por lo que el
acceso al sistema puede verse interrumpido por algunos segundos mientras
esta operacin se lleva a cabo.
Es muy importante considerar la transparencia como uno de los principales
objetivos del diseo e implementacin de un sistema distribuido, sin embargo,
es importante tener en consideracin otros factores que pueden ser afectados
por la transparencia, principalmente el desempeo general del sistema.
1.2. Ventajas y Factores de Distribucin:
En general, los sistemas distribuidos exhiben algunas ventajas sobre los sistemas
centralizados que se describen enseguida.
a) Factores Estratgicos:
Hoy en da, los clientes, proveedores y compaas se encuentran
generalmente en diferentes localidades alejados los unos de los otros.
Debido a que todos estos utilizan computadoras, las redes de informacin
que los unen y que les permiten interactuar pueden ofrecer a las empresas
mayor competitividad.
b) Costos de Equipo:
El cociente precio/desempeo de la suma del poder de los procesadores
separados, contra el poder de uno solo centralizado, es mejor cuando estn
distribuidos, esto lo podemos calcular con base al costo promedio de MIPs
(Millones de Instrucciones por Segundo), el cual es mucho mayor en
Sistemas Distribuidos
20
Sistemas Distribuidos
21
Sistemas Distribuidos
22
a) Falta de Estndares:
La falta de estndares y herramientas de desarrollo para ambientes
distribuidos pueden crear graves problemas de compatibilidad, portabilidad e
interconectividad en los sistemas distribuidos. Esto se da cuanto se crean
muchas copias incompatibles de la misma aplicacin. El desarrollo y uso de
estndares para aplicaciones, computadoras y redes son desarrolladas en
lugares, por personas y en tiempos diferentes, lo cual resulta muy
complicado, y es por eso que es comn ver este tipo de problemas en un
sistema distribuido.
b) Complejidad del Diseo:
Los grandes sistemas de computadoras pueden distribuirse en muchas
computadoras, sin embargo, separar el sistema en muchas partes y decidir
en que lugar van a residir dichas partes, no es una tarea trivial. Los
problemas de compartir datos y recursos son tan complejos que los
mecanismos de solucin generan mucha sobrecarga al sistema hacindolo
ineficiente. El verificar, por ejemplo, quines tienen acceso a algunos
recursos y quines no, el aplicar los mecanismos de proteccin y registro de
permisos consume demasiados recursos. En la actualidad, las soluciones
para estos problemas son incipientes.
c) Falta de Infraestructura en Soporte y Administracin:
Hasta ahora muchos de los problemas de administracin y soporte que
demanda un sistema distribuido no han sido solucionados, y las soluciones
que existen para algunos otros problemas son limitadas. Algunos ejemplos
de estos problemas son la planeacin de sistemas de informacin de
acuerdo a la cambiante tecnologa que hay hoy en da, el manejo de recursos
distribuidos y el diseo de la estructura organizacional para la computacin
distribuida.
d) Seguridad e Integridad:
La distribucin de datos y de programas en mltiples localidades pueden
crear muchos problemas de seguridad e integridad que no con fciles de
solucionar y que por lo general requieren tambin de un proceso paralelo
que ayude a solucionar dichos problemas, por lo que la carga del sistema
aumenta y el rendimiento en general puede verse afectado.
e) Opciones:
La disponibilidad de muchas opciones y decisiones puede ser tanto buena,
como mala. En ocasiones tener muchas opciones nos quita tiempo, puesto
Sistemas Distribuidos
23
que tenemos que analizar, entender y probar todas las que estn disponibles
antes de llegar a tomar una decisin cobre cual es la mejor. Por el lado
contrario, el tener muchas opciones nos permite disear un sistema que este
conformado.
24
a travs de redes LANs o WANs, para proveer de mltiples servicios a los clientes
tales como impresin, acceso a bases de datos, fax, procesamiento de imgenes,
etc. Es importante mencionar que un servidor no es necesariamente un dispositivo
fsico (una computadora) sino que hay que entender al servidor como un proceso
que se encarga de atender las peticiones de un cliente.
Con estos elementos podemos ya darnos una idea de lo que es el modelo cliente
servidor, sin embargo, es necesario analizar ms a fondo las caractersticas de la
arquitectura si queremos llegar a entender por completo el funcionamiento de la
misma.
Elementos de la Arquitectura Cliente/Servidor
Una arquitectura es un entramado de componentes funcionales que aprovechando
diferentes estndares, convenciones, reglas y procesos, permite integrar una
amplia gama de productos y servicios informticos, de manera que pueden ser
utilizados eficazmente dentro de la organizacin.
Debemos sealar que para seleccionar el modelo de una arquitectura, hay que
partir del contexto tecnolgico y organizativo del momento y, que la arquitectura
Cliente/Servidor requiere una determinada especializacin de cada uno de los
diferentes componentes que la integran.
En esta aproximacin, y con el objetivo de definir y delimitar el modelo de
referencia de una arquitectura Cliente/Servidor, debemos identificar los
componentes que permitan articular dicha arquitectura, considerando que toda
aplicacin de un sistema de informacin est caracterizada por tres componentes
bsicos:
o Presentacin/Captacin de Informacin
o Procesos
o Almacenamiento de la Informacin
Y se integran en una arquitectura Cliente/Servidor en base a los elementos que
caracterizan dicha arquitectura, es decir:
o Puestos de Trabajo
o Comunicaciones
o Servidores
De estos elementos debemos destacar:
El Puesto de Trabajo o Cliente Una Estacin de trabajo o microcomputador (PC:
Computador Personal) conectado a una red, que le permite acceder y gestionar
una serie de recursos, el cual se perfila como un puesto de trabajo universal. Nos
referimos a un microcomputador conectado al sistema de informacin y en el que
se realiza una parte mayoritaria de los procesos.
Sistemas Distribuidos
25
Sistemas Distribuidos
26
Sistemas Distribuidos
27
Sistemas Distribuidos
28
Sistemas Distribuidos
29
Sistemas Distribuidos
30
31
donde se establecen todas las reglas que deben cumplirse. Esta capa se
comunica con la capa de presentacin, para recibir las solicitudes y presentar
los resultados, y con la capa de datos, para solicitar al gestor de base de
datos para almacenar o recuperar datos de l. Tambin se consideran aqu los
programas de aplicacin.
c) Capa de datos: es donde residen los datos y es la encargada de acceder a los
mismos. Est formada por uno o ms gestores de bases de datos que realizan
todo el almacenamiento de datos, reciben solicitudes de almacenamiento o
recuperacin de informacin desde la capa de negocio.
Todas estas capas pueden residir en un nico ordenador, si bien lo ms usual es
que haya una multitud de ordenadores en donde reside la capa de presentacin
(son los clientes de la arquitectura cliente/servidor). Las capas de negocio y de
datos pueden residir en el mismo ordenador, y si el crecimiento de las
necesidades lo aconseja se pueden separar en dos o ms ordenadores. As, si el
tamao o complejidad de la base de datos aumenta, se puede separar en varios
ordenadores los cuales recibirn las peticiones del ordenador en que resida la
capa de negocio.
Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a
la separacin, esta capa de negocio podra residir en uno o ms ordenadores que
realizaran solicitudes a una nica base de datos. En sistemas muy complejos se
llega a tener una serie de ordenadores sobre los cuales corre la capa de negocio,
y otra serie de ordenadores sobre los cuales corre la base de datos.
En una arquitectura de tres niveles, los trminos "capas" y "niveles" no significan lo
mismo ni son similares.
El trmino "capa" hace referencia a la forma como una solucin es segmentada
desde el punto de vista lgico:
Presentacin/ Lgica de Negocio/ Datos.
En cambio, el trmino "nivel" corresponde a la forma en que las capas lgicas se
encuentran distribuidas de forma fsica. Por ejemplo:
o Una solucin de tres capas (presentacin, lgica del negocio, datos) que
residen en un solo ordenador (Presentacin+lgica+datos). Se dice que la
arquitectura de la solucin es de tres capas y un nivel.
o Una solucin de tres capas (presentacin, lgica del negocio, datos) que
residen en dos ordenadores (presentacin+lgica, lgica+datos). Se dice
que la arquitectura de la solucin es de tres capas y dos niveles.
Sistemas Distribuidos
32