Vous êtes sur la page 1sur 16

ndice

Introduccin

Caractersticas generales de los sistemas distribuidos


Comparticon de Recursos
Apertura (opennesss)
Concurrencia
Escalabilidad
Tolerancia a Fallos
Transparencia

Ejemplos fundamentales de sistemas distribuidos.


Internet
Intranets
Computacin Mvil y Ubicua

Recursos Compartidos y Web


La World Wide Web

Desafos
Heterogeneidad
Extensibilidad
Seguridad
Escalabilidad

11

Resumen

15

Introduccin
Un sistema distribuido se define como una coleccin de computadores autnomos conectados por una
red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una
nica entidad capaz de proporcionar facilidades de computacin. [Colouris 1994]
El desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a
principios de 1970. Ms recientemente, la disponibilidad de computadoras personales de altas
prestaciones, estaciones de trabajo y ordenadores 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, diseado para
soportar el desarrollo de aplicaciones distribuidas. Este software permite a los ordenadores coordinar
sus actividades y compartir los recursos del sistema - hardware, software y datos.
Con los sistemas distribuidos los usuarios pueden saber que hay multiplicidad de estaciones y equipos
en la red pero no necesitan conocerlos explcitamente (ni cuantos, ni cuales), ellos solamente saben que
hay recursos en la red y conocen su nombre e identificador, de igual forma que pueden acceder a ellos
de igual manera que acceden a los recursos locales (por su nombre) sin tener que conectarse
explcitamente a la maquina propietaria para utilizar el recurso, es mas ni siquiera necesita conocer el
nombre de la maquina que alberga el recurso.
Los sistemas distribuidos se implementan en diversas plataformas hardware, desde unas pocas
estaciones de trabajo conectadas por una red de rea local, hasta Internet, una coleccin de redes de
rea local y de rea extensa interconectados, que en lazan millones de ordenadores.
Las aplicaciones de los sistemas distribuidos varan desde la provisin de capacidad de cmputo a
grupos de usuarios, hasta sistemas bancarios, comunicaciones multimedia y abarcan prcticamente
todas las aplicaciones comerciales y tcnicas de los ordenadores. Los requisitos de dichas aplicaciones
incluyen un alto nivel de fiabilidad, seguridad contra interferencias externas y privacidad de la
informacin que el sistema mantiene. Se deben proveer accesos concurrentes a bases de datos por parte
de muchos usuarios, garantizar tiempos de respuesta, proveer puntos de acceso al servicio que estn
distribuidos geogrficamente, potencial para el crecimiento del sistema para acomodar la expansin del
negocio y un marco para la integracin de sistema usados por diferentes compaas y organizaciones de
usuarios.
Caractersticas clave de los sistemas distribuidos
[Colouris 1994] establece que son seis las caractersticas principales responsables de la utilidad de los
sistemas distribuidos. Se trata de comparticin de recursos, apertura (openness), concurrencia,
escalabilidad, tolerancia a fallos y transparencia.
Comparticin de Recursos
El trmino 'recurso' es bastante abstracto, pero es el que mejor caracteriza el abanico de entidades que
pueden compartirse en un sistema distribuido. El abanico se extiende desde componentes hardware
como discos e impresoras hasta elementos software como ficheros, ventanas, bases de datos y otros
objetos de datos.
La idea de comparticin de recursos no es nueva ni aparece en el marco de los sistemas distribuidos.
Los sistemas multiusuario clsicos desde siempre han provisto comparticin de recursos entre sus
usuarios. Sin embargo, los recursos de una computadora multiusuario se comparten de manera natural
entre todos sus usuarios. Por el contrario, los usuarios de estaciones de trabajo monousuario o
computadoras personales dentro de un sistema distribuido no obtienen automticamente los beneficios
de la comparticin de recursos.
Los recursos en un sistema distribuido estn fsicamente encapsulados en una de las computadoras y
slo pueden ser accedidos por otras computadoras mediante las comunicaciones (la red). Para que la
comparticin de recursos sea efectiva, sta debe ser manejada por un programa que ofrezca un interfaz

de comunicacin permitiendo que el recurso sea accedido, manipulado y actualizado de una manera
fiable y consistente. Surge el trmino genrico de gestor de recursos.
Un gestor de recursos es un modulo software que maneja un conjunto de recursos de un tipo en
particular. Cada tipo de recurso requiere algunas polticas y mtodos especficos junto con requisitos
comunes para todos ellos. stos incluyen la provisin de un esquema de nombres para cada clase de
recurso, permitir que los recursos individuales sean accedidos desde cualquier localizacin; la
traslacin de nombre de recurso a direcciones de comunicacin y la coordinacin de los accesos
concurrentes que cambian el estado de los recursos compartidos para mantener la consistencia.
Un sistema distribuido puede verse de manera abstracta como un conjunto de gestores de recursos y un
conjunto de programas que usan los recursos. Los usuarios de los recursos se comunican con los
gestores de los recursos para acceder a los recursos compartidos del sistema. Esta perspectiva nos lleva
a dos modelos de sistemas distribuidos: el modelo cliente-servidor y el modelo basado en objetos.
Apertura (opennesss)
Un sistema informtico es abierto si el sistema puede ser extendido de diversas maneras. Un sistema
puede ser abierto o cerrado con respecto a extensiones hardware (aadir perifricos, memoria o
interfaces de comunicacin, etc...) o con respecto a las extensiones software (aadir caractersticas al
sistema operativo, protocolos de comunicacin y servicios de comparticin de recursos, etc...). La
apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que nuevos
servicios de comparticin de recursos se pueden aadir sin perjudicar ni duplicar a los ya existentes.
Bsicamente los sistemas distribuidos cumplen una serie de caractersticas:
1.
Los interfaces software clave del sistema estn claramente especificados y se ponen a
disposicin de los desarrolladores. En una palabra, los interfaces se hacen pblicos.
2.
Los sistemas distribuidos abiertos se basan en la provisin de un mecanismo uniforme de
comunicacin entre procesos e interfaces publicados para acceder a recursos compartidos.
3.
Los sistemas distribuidos abiertos pueden construirse a partir de hardware y software
heterogneo, posiblemente proveniente de vendedores diferentes. Pero la conformidad de cada
componente con el estndar publicado debe ser cuidadosamente comprobada y certificada si se quiere
evitar tener problemas de integracin.
Concurrencia
Cuando existen varios procesos en una nica maquina decimos que se estn ejecutando
concurrentemente. Si el ordenador esta equipado con un nico procesador central, la concurrencia tiene
lugar entrelazando la ejecucin de los distintos procesos. Si la computadora tiene N procesadores,
entonces se pueden estar ejecutando estrictamente a la vez hasta N procesos.
En los sistemas distribuidos hay muchas maquinas, cada una con uno o mas procesadores centrales. Es
decir, si hay M ordenadores en un sistema distribuido con un procesador central cada una entonces
hasta M procesos estar ejecutndose en paralelo.
En un sistema distribuido que esta basado en el modelo de comparticin de recursos, la posibilidad de
ejecucin paralela ocurre por dos razones:
1.
Muchos usuarios interactuan simultneamente con programas de aplicacin.
2.
Muchos procesos servidores se ejecutan concurrentemente, cada uno respondiendo a diferentes
peticiones de los procesos clientes.
El caso (1) es menos conflictivo, ya que normalmente las aplicaciones de interaccin se ejecutan
aisladamente en la estacin de trabajo del usuario y no entran en conflicto con las aplicaciones
ejecutadas en las estaciones de trabajo de otros usuarios.
El caso (2) surge debido a la existencia de uno o mas procesos servidores para cada tipo de recurso.
Estos procesos se ejecutan en distintas maquinas, de manera que se estn ejecutando en paralelo
diversos servidores, junto con diversos programas de aplicacin. Las peticiones para acceder a los
recursos de un servidor dado pueden ser encoladas en el servidor y ser procesadas secuencialmente o

bien pueden ser procesadas varias concurrentemente por mltiples instancias del proceso gestor de
recursos. Cuando esto ocurre los procesos servidores deben sincronizar sus acciones para asegurarse de
que no existen conflictos. La sincronizacin debe ser cuidadosamente planeada para asegurar que no se
pierden los beneficios de la concurrencia.
Escalabilidad
Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala
ms pequea consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema
distribuido construido alrededor de una red de rea local simple podra contener varios cientos de
estaciones de trabajo, varios servidores de ficheros, servidores de impresin y otros servidores de
propsito especfico. A menudo se conectan varias redes de rea local para formar internetworks, y
stas podran contener muchos miles de ordenadores que forman un nico sistema distribuido,
permitiendo que los recursos sean compartidos entre todos ellos.
Tanto el software de sistema como el de aplicacin no deberan cambiar cuando la escala del sistema se
incrementa. La necesidad de escalabilidad no es solo un problema de prestaciones de red o de
hardware, sino que esta ntimamente ligada con todos los aspectos del diseo de los sistemas
distribuidos. El diseo del sistema debe reconocer explcitamente la necesidad de escalabilidad o de lo
contrario aparecern serias limitaciones.
La demanda de escalabilidad en los sistemas distribuidos ha conducido a una filosofa de diseo en que
cualquier recurso simple -hardware o software- puede extenderse para proporcionar servicio a tantos
usuarios como se quiera. Esto es, si la demanda de un recurso crece, debera ser posible extender el
sistema para darla servicio,. Por ejemplo, la frecuencia con la que se accede a los ficheros crece cuando
se incrementa el nmero de usuarios y estaciones de trabajo en un sistema distribuido. Entonces, debe
ser posible aadir ordenadores servidores para evitar el cuello de botella que se producira si un solo
servidor de ficheros tuviera que manejar todas las peticiones de acceso a los ficheros. En este caso el
sistema deber estar diseado de manera que permita trabajar con ficheros replicados en distintos
servidores, con las consideraciones de consistencias que ello conlleva.
Cuando el tamao y complejidad de las redes de ordenadores crece, es un objetivo primordial disear
software de sistema distribuido que seguir siendo eficiente y til con esas nuevas configuraciones de
la red. Resumiendo, el trabajo necesario para procesar una peticin simple para acceder a un recurso
compartido debera ser prcticamente independiente del tamao de la red. Las tcnicas necesarias para
conseguir estos objetivos incluyen el uso de datos replicados, la tcnica asociada de caching, y el uso
de mltiples servidores para manejar ciertas tareas, aprovechando la concurrencia para permitir una
mayor productividad. Una explicacin completa de estas tcnicas puede encontrarse en [Colouris
1994].
Tolerancia a Fallos
Los sistemas informticos a veces fallan. Cuando se producen fallos en el software o en el hardware,
los programas podran producir resultados incorrectos o podran pararse antes de terminar la
computacin que estaban realizando. El diseo de sistemas tolerantes a fallos se basa en dos cuestiones,
complementarias entre s: Redundancia hardware (uso de componentes redundantes) y recuperacin del
software (diseo de programas que sean capaces de recuperarse de los fallos).
En los sistemas distribuidos la redundancia puede plantearse en un grano mas fino que el hardware,
pueden replicarse los servidores individuales que son esenciales para la operacin continuada de
aplicaciones crticas.
La recuperacin del software tiene relacin con el diseo de software que sea capaz de recuperar (rollback) el estado de los datos permanentes antes de que se produjera el fallo.
Los sistemas distribuidos tambin proveen un alto grado de disponibilidad en la vertiente de fallos
hardware. La disponibilidad de un sistema es una medida de la proporcin de tiempo que esta
disponible para su uso. Un fallo simple en una maquina multiusuario resulta en la no disponibilidad del
sistema para todos los usuarios. Cuando uno de los componentes de un sistema distribuidos falla, solo

se ve afectado el trabajo que estaba realizando el componente averiado. Un usuario podra desplazarse
a otra estacin de trabajo; un proceso servidor podra ejecutarse en otra maquina.
Transparencia
La transparencia se define como la ocultacin al usuario y al programador de aplicaciones de la
separacin de los componentes de un sistema distribuido, de manera que el sistema se percibe como un
todo, en vez de una coleccin de componentes independientes. La transparencia ejerce una gran
influencia en el diseo del software de sistema.
El manual de referencia RM-ODP [ISO 1996a] identifica ocho formas de transparencia. Estas proveen
un resumen til de la motivacin y metas de los sistemas distribuidos. Las transparencias definidas son:

Transparencia de Acceso: Permite el acceso a los objetos de informacin remotos de la misma


forma que a los objetos de informacin locales.

Transparencia de Localizacin: Permite el acceso a los objetos de informacin sin conocimiento


de su localizacin

Transparencia de Concurrencia: Permite que varios procesos operen concurrentemente


utilizando objetos de informacin compartidos y de forma que no exista interferencia entre ellos.

Transparencia de Replicacin: Permite utilizar mltiples instancias de los objetos de


informacin para incrementar la fiabilidad y las prestaciones sin que los usuarios o los programas de
aplicacin tengan por que conoces la existencia de las replicas.

Transparencia de Fallos: Permite a los usuarios y programas de aplicacin completar sus tareas
a pesar de la ocurrencia de fallos en el hardware o en el software.

Transparencia de Migracin: Permite el movimiento de objetos de informacin dentro de un


sistema sin afectar a los usuarios o a los programas de aplicacin.

Transparencia de Prestaciones. Permite que el sistema sea reconfigurado para mejorar las
prestaciones mientras la carga varia.

Transparencia de Escalado: Permite la expansin del sistema y de las aplicaciones sin cambiar
la estructura del sistema o los algoritmos de la aplicacin.
Las dos ms importantes son las transparencias de acceso y de localizacin; su presencia o ausencia
afecta fuertemente a la utilizacin de los recursos distribuidos. A menudo se las denomina a ambas
transparencias de red. La transparencia de red provee un grado similar de anonimato en los recursos al
que se encuentra en los sistemas centralizados.
Ejemplos fundamentales de sistemas distribuidos
La motivacin para construir y utilizar sistemas distribuidos tiene su origen en un deseo de compartir
recursos. El trmino recurso es un poco abstracto, pero caracteriza bien el rango de cosas que pueden
ser compartidas de forma til en un sistema de computadores conectados en red. ste se extiende desde
los componentes hardware como los discos y las impresoras hasta las entidades de software definidas
como ficheros, bases de datos y objetos de datos de todos los tipos. Incluye la secuencia de imgenes
que sale de una cmara de vdeo digital y la conexin de audio que representa una llamada de telfono
mvil.
Nuestros ejemplos estn basados en redes de computadores conocidos y utilizados ampliamente:
Internet, intranets y la tecnologa emergente basada en dispositivos mviles. Se han elegido para
proporcionar ejemplos del amplio rango de servicios y aplicaciones que son soportados por redes de
computadores y para comenzar la discusin de las cuestiones tcnicas que entraa su implementacin.
Internet

Internet es una vasta coleccin de redes de computadores de diferentes tipos interconectados.


Programas ejecutndose en los computadores conectados a ella interactan mediante paso de mensajes,
empleando un medio comn de comunicacin. El diseo y la construccin de los mecanismos de
comunicacin Internet (los protocolos Internet) es una realizacin tcnica fundamental, que permite
que un programa que se est ejecutando en cualquier parte dirija mensajes a programas en cualquier
otra parte. Internet es tambin un sistema distribuido muy grande. Permite a los usuarios, donde quiera
que estn, hacer uso de servicios como el World Wide Web, el correo electrnico, y la transferencia de
ficheros (de hecho, a veces se confunde incorrectamente el Web con Internet). El conjunto de servicios
es abierto, puede ser extendido por la adicin de servidores y nuevos tipos de servicios. Los
proveedores de servicios de Internet (ISP1) son empresas que proporcionan enlaces de mdem y otros
tipos de conexin a usuarios individuales y pequeas organizaciones, permitindolas el acceso a
servicios desde cualquier parte de Internet, as como proporcionando servicios como correo electrnico
y pginas Web. Las intranets estn enlazadas conjuntamente por conexiones troncales (backbones). Una
conexin o red troncal es un enlace de red con una gran capacidad de transmisin, que puede emplear
conexiones de satlite, cables de fibra ptica y otros circuitos de gran ancho de banda.
En Internet hay disponibles servicios multimedia, que permiten a los usuarios el acceso a datos de
audio y vdeo, incluyendo msica, radio y canales de televisin y mantener videoconferencias. La
capacidad de Internet para mantener los requisitos especiales de comunicacin de los datos multimedia
es actualmente bastante limitada porque no proporciona la infraestructura necesaria para reservar
capacidad de la red para flujos individuales de datos. La implementacin de Internet y los servicios que
mantiene ha implicado el desarrollo de soluciones prcticas para muchas cuestiones de sistemas
distribuidos.
Intranets
Una intranet es una porcin de Internet que es, administrada separadamente y que tiene un lmite que
puede ser configurado para hacer cumplir polticas de seguridad local. Est compuesta de varias redes
de rea local (LANs) enlazadas por conexiones backbone. La configuracin de red de una intranet
particular es responsabilidad de la organizacin que la administra y puede variar ampliamente, desde
una LAN en un nico sitio a un conjunto de LANs conectadas perteneciendo a ramas de la empresa u
otra organizacin en diferentes pases. Una intranet est conectada a Internet por medio de un
encaminador (Router), lo que permite a los usuarios hacer uso de servicios de otro sitio como el Web o
el correo electrnico. Permite tambin acceder a los servicios que ella proporciona a los usuarios de
otras intranets. Muchas organizaciones necesitan proteger sus propios servicios frente al uso no
autorizado por parte de usuarios maliciosos de cualquier lugar. Por ejemplo, una empresa no querr que
la informacin segura est accesible para los usuarios de organizaciones competidoras, y un hospital no
querr que los datos sensibles de los pacientes sean revelados. Las empresas tambin quieren
protegerse a s mismas de que programas nocivos, como los virus, entren y ataquen los computadores
de la intranet y posiblemente destrocen datos valiosos.
El papel de los cortafuegos es proteger una intranet impidiendo que entren o salgan mensajes no
autorizados. Un cortafuegos se implementa filtrando los mensajes que entran o salen, por ejemplo de
acuerdo con su origen o destino. Un cortafuegos podra permitir, por ejemplo, slo aquellos mensajes
relacionados con el correo electrnico o el acceso Web para entrar o salir de la intranet que protege.
Algunas organizaciones no desean conectar sus redes internas a Internet. Por ejemplo, la polica y otras
agencias para la seguridad y la vigilancia de la ley prefieren disponer de algunas redes internas que
estn aisladas del mundo exterior, y el Servicio Nacional de Salud del Reino Unido ha tomado la
opcin de que los datos mdicos sensibles relacionados con los pacientes slo pueden ser protegidos

adecuadamente mantenindolos en una red interna separada fsicamente. Algunas organizaciones


militares desconectan sus redes internas de Internet en tiempos de guerra. Pero incluso dichas
organizaciones desearn beneficiarse del amplio rango de aplicaciones y software de sistemas que
emplean los protocolos de Internet. La solucin que se adopta en tales organizaciones es realizar una
intranet como se ha indicado, pero sin conexiones a Internet. Tal intranet puede prescindir de
cortafuegos, o, dicho de otro modo, dispone de los cortafuegos ms efectivos posibles, la ausencia de
cualquier conexin fsica a Internet. Los principales temas relacionados con el diseo de componentes
para su uso en intranets son:

Los servicios de ficheros son necesarios para permitir a los usuarios compartir datos,
Los cortafuegos tienden a impedir el acceso legtimo a servicios, cuando se precisa compartir
recursos entre usuarios externos e internos, los cortafuegos deben ser complementados con el
uso de mecanismos de seguridad ms refinados.
El coste de instalacin y mantenimiento del software es una cuestin importante. Estos costes
pueden ser reducidos utilizando arquitecturas de sistema como redes de computadores y clientes
ligeros.

Computacin mvil y ubcua


Los avances tecnolgicos en la miniaturizacin de dispositivos y en redes inalmbricas han llevado
cada vez ms a la integracin de dispositivos de computacin pequeos y porttiles en sistemas
distribuidos. Estos dispositivos incluyen:

Computadores porttiles.
Dispositivos de mano (handheld), entre los que se incluyen asistentes digitales
personales(PDA), telfonos mviles, buscapersonas y videocmaras o cmaras digitales.
Dispositivos que se pueden llevar puestos, como relojes inteligentes con funcionalidad
semejantea la de los PDAs.
Dispositivos insertados en aparatos, como lavadoras, sistemas de alta fidelidad, automviles y
frigorficos.

La facilidad de transporte de muchos de estos dispositivos, junto con su capacidad para conectarse
adecuadamente a redes en diferentes lugares, hace posible la computacin mvil. Se llama
computacin mvil (tambin llamada computacin nmada [Kleinrock 1997) a la realizacin de tareas
de cmputo mientras el usuario est en movimiento o visitando otros lugares distintos de su entorno
habitual. En la computacin mvil, los usuarios que estn fuera de su hogar intranet (la intranet de su
trabajo o su casa) disponen de la posibilidad de acceder a los recursos mediante los dispositivos que
llevan con ellos. Pueden continuar accediendo a Internet; pueden acceder a los recursos de su intranet;
y se est incrementando la posibilidad de que utilicen recursos, como impresoras, que estn
suficientemente prximos a donde se encuentren. Esto ltimo se conoce como computacin
independiente de posicin.

Computacin ubicua [Weiser 1993] es la utilizacin concertada de muchos dispositivos de computacin


pequeos y baratos que estn presentes en los entornos fsicos de los usuarios, incluyendo la casa, la
oficina y otros. El trmino ubicuo est pensado para sugerir que los pequeos dispositivos llegarn a
estar tan extendidos en los objetos de cada da que apenas nos daremos cuenta de ellos. O sea, su
comportamiento computacional estar ligado con su funcin fsica de forma ntima y transparente.
La presencia de computadores en cualquier parte slo ser til cuando se puedan comunicar entre s.
Por ejemplo, podra ser conveniente para los usuarios controlar su lavadora y su equipo de alta
fidelidad desde un dispositivo de control remoto universal en su casa. Del mismo modo, la lavadora
podra avisar al usuario a travs de una tarjeta inteligente o reloj cuando el lavado hubiera finalizado.
La computacin ubicua y mvil se solapan, puesto que un usuario movindose puede beneficiarse, en
principio, de los computadores que estn en cualquier parte. Pero, en general, son distintas. La
computacin ubicua podr beneficiar a los usuarios mientras permanecen en un entorno sencillo como
su casa o un hospital. De forma similar, la computacin mvil tiene ventajas si slo se consideran
computadores convencionales y dispositivos como computadores porttiles e impresoras.
Recursos compartidos y Web
Los usuarios estn tan acostumbrados a los beneficios de compartir recursos que pueden pasar por alto
su significado. Normalmente compartimos recursos hardware como impresoras, recursos de datos
como ficheros, y recursos con una funcionalidad ms especfica como mquinas de bsqueda.
Considerado desde el punto de vista de la provisin de hardware, se comparten equipos como
impresoras y discos para reducir costes. Pero es mucho ms significativo para los usuarios compartir
recursos de alto nivel que forman parte de sus aplicaciones y su trabajo habitual y sus actividades
sociales. Por ejemplo, los usuarios estn preocupados con compartir datos en forma de una base de
datos compartida o un conjunto de pginas Web, no los discos o los procesadores sobre los que estn
implementados. Igualmente, los usuarios piensan en trminos de recursos como una mquina de
bsqueda o un conversor de monedas, sin considerar el servidor o servidores que los proporcionan. En
la prctica, los patrones de compartir recursos varan mucho en su alcance y cuan estrechamente
trabajan juntos los usuarios. En un extremo, una mquina de bsqueda en el Web proporciona una
funcin para los usuarios en todo el mundo, los usuarios no necesitan establecer contacto con los dems
directamente. En el otro extremo, en un sistema de trabajo cooperativo mantenido por computador
(CSCW, computer-supported cooperative working), un grupo de usuarios que colaboran directamente

entre ellos comparte recursos como documentos en un grupo pequeo y cerrado. El patrn de compartir
y la distribucin geogrfica de los usuarios particulares determinan qu mecanismos debe proporcionar
el sistema para coordinar sus acciones.
Utilizamos el trmino servicio para una parte diferente de un sistema de computadores que gestiona
una coleccin de recursos relacionados y presenta su funcionalidad a los usuarios y aplicaciones. Por
ejemplo, accedemos a ficheros compartidos mediante el servicio de ficheros, enviamos documentos a
las impresoras a travs del servicio de impresin, compramos regalos a travs de un servicio de pago
electrnico. El nico acceso que tenemos al servicio es mediante un conjunto de operaciones que l
ofrece. Por ejemplo, un servicio de ficheros proporciona las operaciones de lectura, escritura y borrado
en los ficheros. El hecho de que los servicios limiten el acceso a los recursos a un conjunto bien
definido de operaciones es una prctica habitual en la ingeniera de software. Pero tambin refleja la
organizacin fsica de los sistemas distribuidos. Los recursos en un sistema distribuido estn
encapsulados fsicamente con los computadores y slo pueden ser accedidos desde otros computadores
a travs de comunicacin. Para que se compartan de forma efectiva, cada recurso debe ser gestionado
por un programa que ofrece una interfaz de comunicacin permitiendo que se acceda y actualice el
recurso de forma fiable y consistente. El trmino servidor es probablemente familiar para la mayora de
los lectores. Se refiere a un programa en ejecucin (un proceso) en un computador en red que acepta
peticiones de programas que se estn ejecutando en otros computadores para realizar un servicio y
responder adecuadamente.
Los procesos solicitantes son llamados clientes. Las peticiones se envan a travs de mensajes desde los
clientes al servidor y las contestaciones se envan mediante mensajes desde el servidor a los clientes.
Cuando un cliente enva una peticin para que se realice una operacin, decimos que el cliente invoca
una operacin del servidor. Se llama invocacin remota a una interaccin completa entre un cliente y
un servidor, desde el instante en el que el cliente enva su peticin hasta que recibe la respuesta del
servidor. El mismo proceso puede ser tanto un cliente como un servidor, puesto que los servidores a
veces invocan operaciones en otros servidores. Los trminos cliente y servidor se aplican a los roles
desempeados en una nica solicitud. Ambos son distintos, en muchos aspectos, los clientes son
activos y los servidores pasivos, los servidores se estn ejecutando continuamente, mientras que los
clientes slo lo hacen el tiempo que duran las aplicaciones de las que forman parte.
Hay que sealar que por defecto los trminos cliente y servidor se refieren a procesos no a los
computadores en las que se ejecutan, aunque en lenguaje coloquial dichos trminos se refieren tambin
a los propios computadores, es que en un sistema distribuido escrito en un lenguaje orientado a objetos,
los recursos pueden ser encapsulados como objetos y accedidos por objeto clientes, en cuyo caso
hablaremos de un objeto cliente que invoca un mtodo en un objeto servidor. Muchos sistemas
distribuidos, aunque no todos, pueden ser construidos completamente en forma de clientes y servidores
que interaccionan. El World Wide Web, el correo electrnico y las impresoras en red concuerdan con
esta modelo. Un navegador (browser) es un ejemplo de cliente. El navegador se comunica con el
servidor Web para solicitarle pginas.
World Wide Web (WWW) popularmente la web
El World Wide Web, [Berners-Lee 1991] es un sistema en evolucin para publicar y acceder a recursos
y servicios a travs de Internet. Utilizando el software de un navegador Web, fcilmente disponible
como Mozilla Firefox, Opera o Internet Explorer, los usuarios utilizan la Web para recuperar y ver
documentos de muchas clases, para escuchar secuencias de audio y ver secuencias de vdeo, y para
interaccionar con un conjunto ilimitado de servicios.

Una caracterstica fundamental del Web es que proporciona una estructura hipertexto entre los
documentos que almacena, reflejando los requisitos de los usuarios para organizar su conocimiento.
Esto significa que los documentos tienen enlaces, referencias a otros documentos y recursos, tambin
almacenados en la red.
Es fundamental para la experiencia del usuario en el Web que cuando encuentra una imagen
determinada o una parte de texto en un documento, esto estar acompaado de enlaces a documentos
relacionados y otros recursos. La estructura de los enlaces puede ser arbitrariamente compleja y el
conjunto de recursos que puede ser aadido es ilimitado, la telaraa (Web) de enlaces est por
consiguiente repartida por todo el mundo (World-Wide). Bush [1945] concibi las estructuras hipertextuales hace 50 aos; el desarrollo de Internet fue lo que propici la manifestacin de esta idea en una
escala mundial.
El Web es un sistema abierto: puede ser ampliado e implementado en nuevas formas sin modificar su
funcionalidad existente (vase la Seccin 1.4.2). Primero, su operacin est basada en estndares de
comunicacin y en documentos estndar que estn publicados libremente e implementados
ampliamente. Por ejemplo, existen muchos tipos de navegador, cada uno de ellos implementados en
muchos casos sobre diferentes plataformas; y existen muchas implementaciones de servidores Web.
Cualquier navegador conforme puede recuperar recursos de cualquier servidor conforme. Por lo tanto
los usuarios pueden tener acceso a los navegadores en la mayora de los dispositivos que utilizan, desde
un PDA a computadores porttiles.
El Web es abierto respecto a los tipos de recursos que pueden ser publicados y compartidos en l. En su
forma ms simple, un recurso es una pgina Web o algn otro tipo de contenido que puede ser
almacenado en un fichero y presentado al usuario, como ficheros de programa, de imgenes, de sonido
y documentos en formato PostScript o PDF. S alguien inventa, por ejemplo, un nuevo formato de
almacenamiento de imgenes, las imgenes en dicho formato pueden ser publicadas inmediatamente en
el Web. Los usuarios necesitan un medio de ver imgenes en este nuevo formato, pero los navegadores
estn diseados para acomodar la nueva funcionalidad de presentacin en forma de aplicaciones
colaboradoras y conectores (plugins).
El Web se ha desarrollado ms all de estos recursos de datos sencillos para abarcar servicios como la
compra electrnica de regalos. Ha evolucionado sin cambiar su arquitectura bsica. Tambin el Web
est basado en tres componentes tecnolgicos de carcter estndar bsicos:

El lenguaje de etiquetado de hipertexto (HTML, Hypertext Markup Language) es un lenguaje


para especificar el contenido y el diseo de las pginas que son mostradas por los navegadores.

Localizadores Uniformes de Recursos (URL, Uniform Resource Locaor) que identifican


documentos y otros recursos almacenados como parte del Web.

Una arquitectura de sistema cliente-servidor, con reglas estndar para interaccin (el protocolo
de transferencia hipertexto-HTTP, HyperText Transfer Protocol) mediante la cual los navegadores y
otros clientes obtienen documentos y otros recursos de los servidores Web.
Una caracterstica importante es que los usuarios puedan localizar y gestionar sus propios servidores
Web en cualquier parte de Internet.
Desafos

Aunque se encuentran sistemas distribuidos por todas partes, su diseo es an bastante simple y quedan
todava grandes posibilidades de desarrollar servicios y aplicaciones ms ambiciosas. Muchos de los
desafos que se discuten en esta seccin estn ya resueltos, pero los futuros diseadores necesitan estar
al tanto y tener cuidado de considerarlas.
Heterogeneidad
Internet permite que los usuarios accedan a servicios y ejecuten aplicaciones sobre un conjunto
heterogneo de redes y computadores. Esta heterogeneidad (es decir, variedad y diferencia) se aplica a
todos los siguientes elementos:

Redes.
Hardware de computadores.
Sistemas operativos.
Lenguajes de programacin.
Implementaciones de diferentes desarrolladores.

A pesar de que Internet consta de muchos tipos de redes diferentes, sus diferencias se encuentran
enmascaradas dado que todos los computadores conectados a ste utilizan los protocolos de Internet
para comunicarse una con otra. Por ejemplo, un computador conectado a Ethernet tiene una
implementacin de los protocolos de Internet sobre Ethernet, as un computador en un tipo de red
diferente necesitar una implementacin de los protocolos de Internet para esa red.
Los tipos de datos, como los enteros, pueden representarse de diferente forma en diferentes clases de
hardware por ejemplo, hay dos alternativas para ordenar los bytes en el caso de los enteros. Hay que
tratar con estas diferencias de representacin si se va a intercambiar mensajes entre programas que se
ejecutan en diferente hardware. Aunque los sistemas operativos de todas los computadores de Internet
necesitan incluir una implementacin de los protocolos de Internet, no todas presentan necesariamente
la misma interfaz de programacin para estos protocolos. Por ejemplo, las llamadas para intercambiar
mensajes en UNIX son diferentes de las llamadas en Windows NT. Lenguajes de programacin
diferentes emplean representaciones diferentes para caracteres y estructuras de datos como cadenas de
caracteres y registros. Hay que tener en cuenta estas diferencias si queremos que los programas escritos
en diferentes lenguajes de programacin sean capaces de comunicarse entre ellos. Los programas
escritos por diferentes programadores no podrn comunicarse entre s a menos que utilicen estndares
comunes, por ejemplo para la comunicacin en red y la representacin de datos elementales y
estructuras de datos en mensajes. Para que esto ocurra es necesario concertar y adoptar estndares
(como as lo son los protocolos de Internet).

Middleware. El trmino middleware se aplica al estrato software que provee una abstraccin de
programacin, as como un enmascaramiento de la heterogeneidad subyacente de las redes, hardware,
sistemas operativos y lenguajes de programacin. CORBA, es un ejemplo de ello. Algn middleware,
como Java RMI slo se soporta en un nico lenguaje de programacin. La mayora de middleware se
implementa sobre protocolos de Internet, enmascarando stos la diversidad de redes existentes. Aun as
cualquier middleware trata con las diferencias de sistema operativo y hardware.
Adems de soslayar los problemas de heterogeneidad, el middleware proporciona un modelo
computacional uniforme al alcance de los programadores de servidores y aplicaciones distribuidas. Los
posibles modelos incluyen invocacin sobre objetos remotos, notificacin de eventos remotos, acceso
remoto mediante SQL y procesamiento distribuido de transacciones. Por ejemplo, CORBA proporciona
invocacin sobre objetos remotos, lo que permite que un objeto en un programa en ejecucin en un

computador invoque un mtodo de un objeto de un programa que se ejecuta en otro computador. La


implementacin oculta el hecho de que los mensajes se transmiten en red en cuanto al envo de la
peticin de invocacin y su respuesta.

Heterogeneidad y cdigo mvil. El trmino cdigo mvil se emplea para referirse al cdigo
que puede ser enviado desde un computador a otro y ejecutarse en ste, por eso los applets de Java son
un ejemplo de ello. Dado que el conjunto de instrucciones de un computador depende del hardware, el
cdigo de nivel de mquina adecuado para correr en un tipo de computador no es adecuado para
ejecutarse en otro tipo. Por ejemplo, los usuarios de PC envan a veces archivos ejecutables agregados a
los correos electrnicos para ser ejecutados por el destinatario, pero el receptor bien pudiera no ser
capaz de ejecutarlo, por ejemplo, sobre un Macintosh o un computador con Linux.
La aproximacin de mquina virtual provee un modo de crear cdigo ejecutable sobre cualquier
hardware: el compilador de un lenguaje concreto generar cdigo para una mquina virtual en lugar de
cdigo apropiado para un hardware particular, por ejemplo el compilador Java produce cdigo para la
mquina virtual Java, la cual slo necesita ser implementada una vez para cada tipo de mquina con el
fin de poder lanzar programas Java. Sin embargo, la solucin Java no se puede aplicar de modo general
a otros lenguajes.
Extensibilidad
La extensibilidad de un sistema de cmputo es la caracterstica que determina si el sistema puede ser
extendido y reimplementado en diversos aspectos. La extensibilidad de los sistemas distribuidos se
determina en primer lugar por el grado en el cual se pueden aadir nuevos servicios de comparticin de
recursos y ponerlos a disposicin para el uso por una variedad de programas cliente.
No es posible obtener extensibilidad a menos que la especificacin y la documentacin de las interfaces
software clave de los componentes de un sistema estn disponibles para los desarrollado-res de
software. Es decir, que las interfaces clave estn publicadas. Este procedimiento es similar a una
estandarizacin de las interfaces, aunque a menudo puentea los procedimientos oficiales de
estandarizacin, que por lo dems suelen ser lentos y complicados. Sin embargo, la publicacin de
interfaces slo es el punto de arranque de la adicin y extensin de servicios en un sistema distribuido.
El desafo para los diseadores es hacer frente a la complejidad de los sistemas distribuidos que constan
de muchos componentes diseados por personas diferentes.
Los diseadores de los protocolos de Internet presentaron una serie de documentos denominados
Solicitudes de Comentarios (Request For Comments), o RFC, cada una de las cuales se conoce por
un nmero.
Las especificaciones de los protocolos de Internet fueron publicados en esta serie a principios de los
aos ochenta, seguido por especificaciones de aplicaciones que corrieran sobre ellos, tales como
transferencia de archivos, correo electrnico y telnet a mediados de los aos ochenta. Esta prctica
contina y forma la base de la documentacin tcnica sobre Internet. Esta serie incluye discusiones as
como especificaciones de protocolos. As la publicacin de los protocolos originales de comunicacin
de Internet ha posibilitado que se construyera una enorme variedad de sistemas y aplicaciones sobre
Internet.
Otro beneficio ms, citado a menudo, de los sistemas abiertos es su independencia de proveedores
concretos.
En resumen:

Los sistemas abiertos se caracterizan porque sus interfaces estn publicadas.


Los sistemas distribuidos abiertos se basan en la providencia de un mecanismo de
comunicacin uniforme e interfaces pblicas para acceder a recursos compartidos.

Los sistemas distribuidos abiertos pueden construirse con hardware y software heterogneo,
posiblemente de diferentes proveedores. Sin embargo, la conformidad con el estndar publicado de
cada componente debe contrastarse y verificarse cuidadosamente si se desea que el sistema trabaje
correctamente.
Seguridad
Entre los recursos de informacin que se ofrecen y se mantienen en los sistemas distribuidos, muchos
tienen un alto valor intrnseco para sus usuarios. Por esto su seguridad es de considerable importancia.
La seguridad de los recursos de informacin tiene tres componentes:
confidencialidad (proteccin contra el descubrimiento por individuos no autorizados);
integridad (proteccin contra la alteracin o corrupcin)
disponibilidad (proteccin contra interferencia con los procedimientos de acceso a los recursos).

A pesar de que Internet permite a un programa de un computador comunicarse con un programa en otro
computador sin mencionar su ubicacin, el permitir un acceso libre a todos los recursos de una intranet
lleva asociados riesgos contra la seguridad. Aunque se pueda emplear un cortafuego para disponer una
barrera alrededor de una intranet, restringiendo el trfico que pudiera entrar y salir, no pretende
asegurar el uso apropiado de los recursos por usuarios del interior de la intranet, o del uso apropiado de
los recursos en Internet, no protegidos por el cortafuego.
En un sistema distribuido, los clientes envan peticiones de acceso a datos administrados por
servidores, lo que trae consigo enviar informacin en los mensajes por la red. Por ejemplo:
1. Un mdico puede solicitar acceso a los datos hospitalarios de un paciente o enviar
modificaciones sobre ellos.
2. En comercio electrnico y banca, los usuarios envan su nmero de tarjeta de crdito a travs de
Internet.
En ambos casos, el reto se encuentra en enviar informacin sensible en un mensaje, por la red, de
forma segura. Pero la seguridad no slo es cuestin de ocultar los contenidos de los mensajes, tambin
consiste en conocer con certeza la identidad del usuario u otro agente en nombre del cual se enva el
mensaje. En el primer ejemplo, el servidor necesita conocer que el usuario es realmente un mdico y en
el segundo, el usuario necesita estar seguro de la identidad de la tienda o del banco con el que est
tratando. El segundo reto consiste en identificar un usuario remoto u otro agente correctamente. Ambos
desafos pueden lograrse a travs de tcnicas de encriptacin desarrolladas al efecto.
Sin embargo, an existen dos desafos de seguridad que no han sido cumplimentados completamente:

Ataques de denegacin de servicio: otro problema de seguridad ocurre cuando un usuario desea
obstaculizar un servicio por alguna razn. Esto se obtiene al bombardear el servicio con un
nmero suficiente de peticiones intiles de modo que los usuarios serios sean incapaces de
utilizarlo.
Seguridad del cdigo mvil: el cdigo mvil necesita ser tratado con cuidado.

Suponga que alguien recibe un programa ejecutable adherido a un correo electrnico: los posibles
efectos al ejecutar el programa son impredecibles; por ejemplo, pudiera parecer que presentan un
interesante dibujo en la pantalla cuando en realidad estn interesados en el acceso a los recursos
locales, o quizs pueda ser parte de un ataque de denegacin de servicio.
Escalabilidad
Los sistemas distribuidos operan efectiva y eficientemente en muchas escalas diferentes, desde
pequeas intranets a Internet. Se dice que un sistema es escalable si conserva su efectividad cuando
ocurre un incremento significativo en el numero de recursos y el numero de usuarios.
Internet proporciona un ejemplo de sistema distribuido en el que el nmero de computadores y
servicios experimenta un dramtico incremento.
El diseo de los sistemas distribuidos escalables presenta los siguientes retos:

Control del coste de los recursos fsicos: segn crece la demanda de un recurso, debiera ser
posible extender el sistema, a un coste razonable, para satisfacerla. Por ejemplo, la frecuencia con la
que se accede a los archivos de una intranet suele crecer con el incremento del nmero de usuarios y
computadores. Debe ser posible aadir servidores para evitar el embotellamiento que aparece cuando
un solo servidor de archivos ha de manejar todas las peticiones de acceso a stos. En general, para que
un sistema con n usuarios fuera escalable, la cantidad de recursos fsicos necesarios para soportarlo
debiera ser como mximo O(), es decir proporcional a n. Por ejemplo, si un solo servidor de archivos
pudiera soportar 20 usuarios, entonces 2 servidores del mismo tipo tendrn capacidad para 40 usuarios.
Aunque parezca una meta obvia, no es tan fcil lograrlo en la prctica,

Control de las prdidas de prestaciones: considere la administracin de un conjunto de datos


cuyo tamao es proporcional al nmero de usuarios o recursos del sistema, sea por ejemplo la tabla con
la relacin de nombres de dominio de computadores y sus direcciones Internet sustentado por el
Sistema de Nombres de Dominio (Domain Name System), que se emplea principalmente para averiguar
nombres DNS tales como www.amazon.com. Los algoritmos que emplean estructuras jerrquicas se
comportan mejor frente al crecimiento de la escala que los algoritmos que emplean estructuras lineales.
Pero incluso con estructuras jerrquicas un incremento en tamao traer consigo prdidas en
prestaciones: el tiempo que lleva acceder a datos estructurados jerrquicamente es O(log n), donde n es
el tamao del conjunto de datos. Para que un sistema sea escalable, la mxima prdida de prestaciones
no debiera ser peor que sistemas distribuidos operan efectiva y eficientemente en muchas escalas
diferentes, desde pequeas intranets a Internet. Se dice que un sistema es escalable si conserva su
efectividad cuando ocurre un incremento significativo en el nmero de recursos y el numero de
usuarios. Internet proporciona un ejemplo de un sistema distribuido en el que el nmero de
computadores y esta medida.

Prevencin de desbordamiento de recursos software: un ejemplo de prdida de escalabilidad se


muestra en el tipo de nmero usado para las direcciones Internet (direcciones de computadores en
Internet). A finales de los aos setenta, se decidi emplear para esto 32 bits, pero como se explicar en
el Captulo 3 el suministro de direcciones para Internet se desbordar probablemente al comienzo de la
dcada del ao 2000. Por esta razn, la nueva versin del protocolo emplear direcciones Internet de
128 bits. A pesar de ello, para ser justos con los primeros diseadores de Internet, no hay una solucin
idnea para este problema. Es difcil predecir la demanda que tendr que soportar un sistema con aos
de anticipacin. Adems, sobredimensionar para prever el crecimiento futuro pudiera ser peor que la

adaptacin a un cambio cuando se hace necesario; las direcciones Internet grandes ocupan espacio
extra en los mensajes, y en la memoria de los computadores.

Evitacin de cuellos de botella de prestaciones: en general, para evitar cuellos de botella de


prestaciones, los algoritmos deberan ser descentralizados. Ilustramos este punto aludiendo al
predecesor del Sistema de Nombres de Dominio en el cual la tabla de nombres se alojaba en un solo
archivo maestro que poda descargarse a cualquier computador que lo necesitara. Esto funcionaba bien
cuando slo haba unos cientos de computadores en Internet, pero pronto se convirti en un serio cuello
de botella de prestaciones y de administracin. El Sistema de Nombres de Dominio elimin este cuello
de botella particionando la tabla de nombres entre servidores situados por todo Internet y siendo
administrados localmente.
Algunos recursos compartidos son accedidos con mucha frecuencia; por ejemplo, puede que muchos
usuarios accedan a la misma pgina web, causando un declive de las prestaciones. Idealmente, el
software de sistema y aplicacin no tiene por qu cambiar cuando la escala del sistema se incremente,
pero esto es difcil de conseguir. La cuestin del escalado de un sistema es un tema dominante en el
desarrollo de sistemas distribuidos.
Resumen
Los sistemas distribuidos estn por todas partes. Internet permite que los usuarios de todo el mundo
accedan a sus servicios donde quiera que estn situados. Cada organizacin administra una intranet,
que provee servicios locales y servicios de Internet a los usuarios locales y habitualmente proporciona
servicios a otros usuarios de Internet. Es posible construir pequeos sistemas distribuidos con
computadores porttiles y otros dispositivos computacionales pequeos conectados a una red
inalmbrica. La comparticin de recursos es el principal factor que motiva la construccin de sistemas
distribuidos. Recursos como impresoras, archivos, pginas web o registros de bases de datos se
administran mediante servidores del tipo apropiado. Por ejemplo los servidores Web administran
pginas y otros recursos web. Los recursos son accedidos por clientes, por ejemplo, los clientes de los
servidores web se llaman normalmente visualizadores o navegadores web. La construccin de los
sistemas distribuidos presenta muchos desafos:
Heterogeneidad: debe construirse desde una variedad de diferentes redes, sistemas operativos,
hardware de computador y lenguajes de programacin. Los protocolos de comunicacin de Internet
enmascaran las diferencias entre redes y el middleware puede tratar con las diferencias restantes.
Extensibilidad: los sistemas distribuidos deberan ser extensibles, el primer paso es la publicacin de
las interfaces de sus componentes, pero la integracin de componentes escritos por diferentes
programadores es un autntico reto.
Seguridad: se puede emplear encriptacin para proporcionar una proteccin adecuada a los recursos
compartidos y mantener secreta la informacin sensible cuando se transmite un mensaje a travs de la
red. Los ataques de denegacin de servicio son an un problema.
Escalabilidad: un sistema distribuido es escalable si el coste de aadir un usuario es una cantidad
constante en trminos de recursos que se debern aadir. Los algoritmos empleados para acceder a los
datos compartidos deberan evitar cuellos de botella y los datos deberan estar estructurados
jerrquicamente para dar los mejores tiempos de acceso. Los datos
frecuentemente accedidos pudieran estar replicados.
Tratamiento de fallos: cualquier proceso, computador o red puede fallar independientemente de los
otros. En consecuencia cada componente necesita estar al tanto de las formas posibles en que pueden
fallar los componentes de los que depende y estar diseado para tratar apropiadamente con cada uno de
estos fallos.

Concurrencia: la presencia de mltiples usuarios en un sistema distribuido es una fuente de peticiones


concurrentes a sus recursos. Cada recurso debe estar diseado para ser seguro en un entorno concurrete.
Transparencia: el objetivo es que ciertos aspectos de la distribucin sean invisibles al programador de
aplicaciones de modo que slo necesite ocuparse del diseo de su aplicacin particular. Por ejemplo, no
debe ocuparse de su ubicacin o los detalles sobre cmo se accede a sus operaciones por otros
componentes, o si ser replicado o migrado. Incluso los fallos de las redes y los procesos pueden
presentarse a los programadores de aplicaciones en forma de excepciones, aunque deban de ser
tratados.

Vous aimerez peut-être aussi