Está en la página 1de 6

Sistemas distribuidos

Introducción
Cuando hablamos de un sistema distribuido, nos referimos a múltiples ordenadores o
recursos informáticos independientes que forman parte de un sistema y en su conjunto
son capaces de ofrecer algún servicio común al usuario (Muñoz Escoí et al., 2012).
Al igual que en cualquier aplicación o sistema concurrente, existen múltiples
actividades que colaboran entre sí. En este caso dichas actividades se estarán
ejecutando en ordenadores diferentes y para colaborar deberán enviarse
mensajes entre ellas. Por este motivo, todo sistema distribuido es también un
sistema concurrente y todo lo que se ha aprendido en las lecturas anteriores
ofrecerá una buena base para entender cómo debe gestionarse un sistema
distribuido. (Muñoz Escoí et al., 2012, p. 141)

1. Definición de sistema distribuido


“Un sistema distribuido es una colección de ordenadores independientes que ofrece a
sus usuarios la imagen de un sistema único y coherente” (Steen, 2008, citado en Muñoz
Escoí et al., 2012, p. 142).

Por lo tanto,
Desde el punto de vista del hardware, se dispondrá de múltiples computadoras,
físicamente distribuidas, con software encargado de ocultar la existencia de estas
múltiples máquinas, brindando al usuario transparencia. Este tendrá la sensación
de que está utilizando una sola computadora con gran capacidad de cómputo y
con un amplio conjunto de recursos disponibles. Los ordenadores de un sistema
distribuido deben colaborar entre sí para ofrecer esa imagen de sistema único.

Para ejecutar cualquier aplicación distribuida habrá que generar múltiples


actividades que podrán ejecutarse simultáneamente para lograr tal colaboración.
Queda por ello claro que toda aplicación distribuida será también una aplicación
concurrente. (Muñoz Escoí et al., 2012, p. 142)
Un claro ejemplo de sistemas distribuidos son los buscadores web (Google,
DuckDuckGo, entre otros), ya que todo aquel que los utilice no sabe que en la parte
servidora hay un alto número de computadoras colaborando entre sí para servir millones
de consultas. De hecho, eso es transparente para el usuario.

Si pensamos que a cada instante habrá muchos usuarios de un buscador, los cuales
realizan un alto número de consultas, entonces advertimos que una única máquina, por
más potente que sea, no podrá soportar dicha carga. De esta manera, cada vez que un
usuario realice una consulta, podrá ser atendido por una computadora diferente. Por lo
tanto, en este caso práctico y de uso diario, se observa que esa imagen de sistema
único y coherente se ha proporcionado de forma transparente (Muñoz Escoí et al.,
2012).

Asimismo, las características comunes a todo sistema distribuido son las siguientes.

1. Ocultación: toda complejidad de comunicación, hardware, software y toda la


tecnología que pueda llegar a tener el sistema es transparente para el
usuario final.
2. Acceso homogéneo: tanto los usuarios como las aplicaciones interactúan
con el sistema de una manera uniforme, misma interfaz, con independencia
del ordenador concreto que haya sido utilizado para atender tal acceso.
3. Escalabilidad: el sistema debe crecer sin complicaciones a medida que la
cantidad de usuarios aumenta, pudiendo satisfacer la demanda de estos.
4. Disponibilidad: los servicios ofrecidos por un sistema distribuido deberían
estar siempre disponibles. (Muñoz Escoí et al., 2012, p. 143)

Entonces,
Por una parte, se dispondrá del sistema operativo, encargado de la gestión de los
recursos locales y de proporcionar herramientas de comunicación estándar. Por
otra parte, el middleware será el encargado de realizar cierta gestión uniforme de
los recursos existentes en todo el sistema distribuido. (Muñoz Escoí et al., 2012,
p. 144)
Por tanto, este último brindará servicios y funciones comunes a las aplicaciones,
además de aquello que ofrece el sistema operativo. Generalmente, el middleware se
encarga de la gestión de los datos, servicios de aplicaciones, mensajería, autenticación
y gestión de la interfaz de programación de aplicaciones (API). En la figura 1, se puede
ver una arquitectura básica de sistemas distribuidos.

Figura 1: Arquitectura de un sistema distribuido

Fuente: Muñoz Escoí et al., 2012, p. 144.

Objetivos de los sistemas distribuidos


1. Facilitar el acceso a recursos remotos
Como recursos, se entiende hardware y software. Todos estos recursos deberán
ser accesibles para todos los usuarios del sistema distribuido. Por ello, el sistema
debe proporcionar mecanismos que permitan el uso de recursos remotos.

Para gestionar el acceso sobre estos recursos compartidos suele existir un
proceso servidor que administra las peticiones que va recibiendo,
secuenciándolas para garantizar un uso en exclusión mutua si así lo requiere tal
dispositivo o recurso. El inconveniente que puede llegar a plantear un uso de
recursos remotos será la gestión de la seguridad en el acceso a tales recursos,
para ello se requerirá el uso de algún mecanismo de autenticación y de control de
acceso. (Muñoz Escoí et al., 2012, p. 145)
2. Proporcionar transparencia de distribución
“Un sistema proporciona esa transparencia si es capaz de ocultar que físicamente está
compuesto por múltiples ordenadores independientes” (Muñoz Escoí et al., 2012, p.
146). Podemos determinar diferentes tipos de transparencia, como lo muestra la figura
2.

Figura 2: Tipos de transparencia de distribución


Fuente: Muñoz Escoí et al., 2012, p. 146.

3. Ser un sistema abierto

Es aquel que se ajusta a estándares que especifican y describen tanto la sintaxis como
la semántica de las operaciones que constituyen el servicio ofrecido por tal sistema. Al
utilizar estándares, se potencia la flexibilidad, interoperabilidad y portabilidad.
El objetivo en cualquier sistema abierto con un alto grado de flexibilidad será el
proporcionar un amplio surtido de mecanismos para desarrollar sus funciones, de
manera que tanto los administradores como los usuarios puedan decidir qué
políticas emplear a la hora de utilizar los mecanismos existentes. De esa manera,
cada usuario obtendrá un sistema bien adaptado a sus necesidades de uso.
(Muñoz Escoí et al., 2012, p. 153)
4. Ser un sistema escalable
La escalabilidad de un sistema distribuido puede analizarse desde tres
perspectivas diferentes y complementarias.

a. Escalabilidad de tamaño: cuando se permite que el sistema crezca tanto en el


número de procesos y de ordenadores utilizados para componer el sistema como
en el de usuarios atendidos sin afectar a su funcionamiento.

b. Escalabilidad de distancia: un sistema distribuido proporciona esta escalabilidad


cuando sus componentes pueden ser ubicados en lugares físicamente distantes
entre sí. Esta distancia puede ser arbitrariamente grande.

c. Escalabilidad administrativa: los sistemas que proporcionen este tipo de
escalabilidad estarán formados por múltiples organizaciones y cada una de ellas
tendrá sus propios administradores de los nodos que compongan el sistema
informático. Se dará escalabilidad administrativa cuando las tareas administrativas
globales resulten sencillas, a pesar de afectar a múltiples organizaciones
diferentes. Todos estos subsistemas (entendiendo como tales los conjuntos de
ordenadores pertenecientes a cada organización) colaborarán entre sí para
proporcionar cierta funcionalidad global. (Muñoz Escoí et al., 2012, p. 154)

Dificultades en el desarrollo de sistemas distribuidos


Por regla general, quien empieza a desarrollar su primera aplicación distribuida
suele aplicar las reglas utilizadas en el desarrollo de aplicaciones centralizadas
(esto es, diseñadas para ser instaladas y ejecutadas en un único ordenador). Por
ello, según se suele asumir lo siguiente.

1. La red es fiable.
2. La red es segura.
3. La red es homogénea.
4. La topología no cambia.
5. El retardo de transmisión de los mensajes es cero.
6. El ancho de banda es infinito.
7. Habrá un administrador.


Claro que esto es solo un modelo ideal, por lo cual en la realidad será muy
diferente. Un entorno distribuido no cumplirá con ninguna de estas características,
por ejemplo, la red no tiene por qué ser siempre fiable (los mensajes pueden
perderse o retrasarse indefinidamente), ni segura (la información transmitida
puede ser vista por otras aplicaciones si no hemos tomado las debidas
precauciones de seguridad), ni homogénea (habrá múltiples ordenadores en
nuestro sistema y cada uno puede estar utilizando un sistema operativo diferente
y tener nodos con distintas características: cantidad de RAM, capacidad del disco
duro, procesador, sistema operativo, etc.), la topología podrá cambiar si alguno de
los ordenadores del sistema deja de funcionar o algún switch o rúter se estropea,
los mensajes tardan un tiempo variable en ser transmitidos y entregados, el ancho
de banda está limitado, el administrador del sistema no siempre estará disponible
para resolver los problemas que vayan surgiendo.

Todo esto nos sirve para tenerlo en cuenta en el diseño del sistema, antes de la
etapa de desarrollo, tomando cada una de estas características y analizando qué
solución es factible en la realidad bajo determinadas tecnologías. Con ello se
podrá refinar progresivamente esa primera solución hasta adaptarla al entorno
físico en el que deba implantarse nuestra aplicación. (Muñoz Escoí et al., 2012, p.
164)

Referencias
Muñoz Escoí, F. D., Argente Villaplana, E., Espinosa Minguet, A. R., Galdámez Saiz,
P., García-Fornes, A., De Juan Marín, R. y Sendra Roig, J. S. (2012). Concurrencia y
sistemas distribuidos. Valencia, España: Universitat Politècnica.

También podría gustarte