Vous êtes sur la page 1sur 68

INSTITUTO POLITCNICO

NACIONAL
ESCUELA DE INGENIERA
1 MECNICA Y ELCTRICA
UNIDAD CULHUACN
INGENIERA EN COMPUTACIN
PROFESORA:
SALAS JIMNEZ VERNICA
ALUMNO:
RAMREZ RAYGOZA JUAN JOS
SIGNATURA:
SISTEMAS DISTRIBUIDOS
GRUPO:
8CM12
TEMA:
SISTEMAS DISTRIBUIDOS
FECHA:
6 DE MARZO DEL 2017

SISTEMAS DISTRIBUIDOS
NDICE
CAPITULO 1
1.1 Introduccin a los sistemas distribuidos
1.2 Caractersticas de un sistema distribuido
2 Heterogeneidad
1.2.1
1.2.2 Extensibilidad
1.2.3 Seguridad
1.2.4 Escalabilidad
1.2.5 Control de errores
1.2.6 Concurrencia
1.2.7 Transparencia
1.3 Modelos arquitectnicos
1.4 Modelo fundamentales
1.5 Recursos de comunicacin
1.5.1 Protocolos TCP/IP
1.5.2 Servicios y puertos
1.5.3 Procesos y demonios

CAPTULO 2
2.1 Introduccin a los sistemas de multiprocesamiento
2.2 Clasificacin de los sistemas de multiprocesamiento
2.2.1 Fuertemente acoplados
2.2.2 Dbilmente acoplados
2.3 Sistemas de cluster
2.3.1 Multiprocesamiento dedicado
2.3.2 Multiprocesamiento compartido
2.4 Protocolos de comunicacin
2.5 Paso de mensajes
2.6 Objetos remotos
2.7 Procedimientos remotos

CAPTULO 3
3.1 Almacenamiento de alta disponibilidad
3.2 Servicios locales de alta disponibilidad
3.2.1 Arreglos de discos
3.2.2 Manejo de transacciones
3.3 Servicios distribuidos de alta disponibilidad
3.3.1 Servicios de almacn de archivos
3.3.2 Servicios de distribucin de informacin
3.4 Servicios de Directorio y Bsqueda
3.5 Servicios de archivos en red

SISTEMAS DISTRIBUIDOS
3.6 Replicacin

CAPTULO 1

SISTEMAS DISTRIBUIDOS
1.1 INTRODUCCIN A LOS SISTEMAS
DISTRIBUIDOS
4
La Computacin Distribuida, se puede definir 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 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

SISTEMAS DISTRIBUIDOS
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. La existencia de varias computadoras, en general, cada una con su
propio procesador, memoria local, subsistema de entrada/salida y quizs
incluso memoria persistente.

o Interconexin. Existen vas que permiten la comunicacin entre las


5 computadoras, a travs de las cuales pueden transmitir informacin.

o Estado compartido. Las computadoras cooperan para mantener algn


tipo de estado compartido. El funcionamiento correcto del sistema se
describirse como el mantenimiento de una serie de invariantes globales
que requiere la coordinacin de varias computadoras.

El trmino de Computacin Distribuida se define de varias maneras y lo


mismo se aplica al trmino de Sistema Distribuido.
Una caracterstica muy importante es que las diferencias entre las
computadoras y las maneras en que estas se comunican no son
transparentes para el usuario final, esto mismo aplica para la organizacin
interna del sistema distribuido. Otra caracterstica importante es que los
usuarios y las aplicaciones pueden interactuar con un Sistema Distribuido
de manera consistente y uniforme, sin importar donde y cuando se lleve a
cabo la interaccin.

Todo Sistema Distribuido debe tambin ser relativamente fcil poder


expandir, lo cual se logra al tener computadoras independientes, pero al
mismo tiempo esconder las funciones de dichas computadoras en el
sistema. Normalmente un sistema distribuido debe de estar siempre
disponible a pesar de que ciertas partes que lo conforman puedan no estar
funcionando. Los usuarios y las aplicaciones no deben de notar en ningn
momento que estas partes estn siendo reemplazadas o reparadas, o que
se han agregado nuevas partes al sistema para poder dar servicio a ms
usuarios o aplicaciones.

1.2.1 HETEROGENEIDAD
Al hablar de heterogeneidad nos referimos a la variedad y diferencia que
podemos encontrar en los elementos que componen una red de
computadoras sobre la que se ejecuta un sistema distribuido, dicha
heterogeneidad no slo se aplica a las redes y al hardware de las
computadoras, sino tambin a los sistemas operativos, los lenguajes de
programacin y las implementaciones en las que trabajan los diferentes
desarrolladores.

SISTEMAS DISTRIBUIDOS
Un ejemplo de esto lo podemos ver muy claro en Internet, ya que es una red
que est conformada por muchos tipos de redes cuyas diferencias se
encuentran enmascaradas, puesto que todas las computadoras que se
conectan a este utilizan los protocolos de Internet para comunicarse una con
otra, as una computadora conectada a una red Ethernet puede comunicarse
con otra computadora conectada a una red TokenRing, basta con que se
haga una

implementacin de los protocolos de Internet para cada una de esas redes.

SISTEMAS DISTRIBUIDOS
1.2.2 EXTENSIBILIDAD

La extensibilidad y la apertura son dos caractersticas de un sistema distribuido


que estn ampliamente ligadas una con la otra. Un sistema abierto debe de ser
7
extensible y un sistema extensible puede ser etiquetado como un sistema
abierto y un sistema distribuido debe de contar con ambas caractersticas.

Un sistema distribuido abierto es un sistema que ofrece servicios desarrollados


de acuerdo a reglas estandarizadas que describen la sintaxis y la semntica de
dichos servicios. Estas reglas son formalizadas en protocolos.

En el caso de los sistemas distribuidos, los servicios se especifican


generalmente a travs de interfaces que por lo general son descritas en un
Lenguaje de Definicin de Interfaz (IDL), dicho lenguaje especifica los nombres
de las funciones que estn disponibles, as como los parmetros de entrada,
los valores de salida y los posibles errores que pueden obtenerse al invocarse
dichas funciones.

Si la definicin de una interfaz se hace de manera adecuada, esta permitir


que dos procesos puedan comunicarse entre s, siempre y cuando ambos
procesos cuenten con la misma interfaz. Esto tambin permite que cada dos
desarrolladores independientes construyan su propia implementacin de dichas
interfaces, lo cual conlleva al desarrollo de dos sistemas distribuidos
desarrollados por separado que operan de la misma manera.

Una especificacin se considera adecuada como:


o Completa: significa que todo lo necesario para hacer una implementacin de
la interfaz ha sido especificado y que no ser necesario que el propio
desarrollador sea quien agregue detalles especficos de la implementacin.
o Neutral: significa que las especificaciones no deben tener ninguna tendencia
hacia como se debe de hacer la implementacin de dicha especificacin. La
completitud y la neutralidad son muy importantes para la interoperabilidad
y la portabilidad, que son caractersticas que complementan la apertura de
un sistema distribuido.

La interoperabilidad, tambin conocida como compatibilidad, caracteriza el


grado en el que la implementacin de sistemas o componentes de diferentes
fabricantes pueden coexistir y trabajar juntos, siempre y cuando se utilicen los
servicios como este especificado por el estndar comn bajo el cual dichos
sistemas fueron desarrollados.

La portabilidad por su parte caracteriza a que nivel puede ser ejecutada una
aplicacin desarrollada para un sistema distribuido A sobre un sistema
distribuido B que implementa las mismas interfaces del sistema A, pero sin
hacerle modificaciones.

SISTEMAS DISTRIBUIDOS
Uno de los principales objetivos que se persiguen al desarrollar un sistema
operativo abierto, es que este sea flexible, lo que implica que dicho sistema
puede ser integrado por diferentes componentes (tanto de hardware como de
software), posiblemente de diferentes proveedores, que nuevos componentes
pueden agregarse al sistema y que componentes existentes pueden ser
reemplazados sin afectar el funcionamiento de los componentes ya existentes,
8
en otras palabras, un sistema distribuido abierto debe de ser extensible.

Para lograr la flexibilidad en un sistema distribuido abierto es necesario que el


sistema este organizado en mdulos o componentes relativamente pequeos y
fciles de reemplazar, esto implica que adems de definir las especificaciones
y la documentacin de las interfaces de alto nivel a las que tienen acceso los
usuarios y las aplicaciones, tambin es necesario definir las especificaciones de
las interfaces de las partes internas que componen el sistema y describir de
qu manera interactan entre s.

1.2.3 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 supuesto, 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.

SISTEMAS DISTRIBUIDOS
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.
9

Interceptacin: Obtiene acceso a


informacin. Ataca la
confidencialidad

Modificacin: Modifica la
informacin. Ataca la integridad.

Fabricacin: Falsifica la informacin. Ataca la


autenticidad.

Para defenderse de este tipo de amenazas se han desarrollado diversas


tcnicas de encriptacin, firmas digitales, implementacin de barreras
perimetrales (firewalls), modelos de seguridad internos y externos, etc.

Sin embargo, estas tcnicas parecen no ser suficientes para evitar que intrusos
logren interferir con el flujo de informacin ptimo de un sistema, ya que
encuentran formas de brincarse las barreras de seguridad de muchas
organizaciones y adems siguen ideando nuevas formas de atacar y amenazar
la informacin. Como hoy en da la capacidad de los sistemas distribuidos ha
crecido mucho, en ocasiones resulta muy difcil o incluso imposible bloquear el
servicio utilizando una sola computadora atacante, por lo que ahora se han
desarrollado los ataques de denegacin de servicio distribuidos, los cuales
hacen uso de miles o incluso millones de computadoras para generar las
peticiones al sistema que se desea bloquear, por lo que bloquear un ataque de
esta magnitud resulta sumamente complicado.

SISTEMAS DISTRIBUIDOS
Si bien no podemos asegurar que un sistema distribuido sea cien por ciento
seguro, es importante contar con un esquema de seguridad lo ms robusto
posible que, a pesar de no ser inmune a todo tipo de ataques, si ser capaz de
frenar la gran mayora de dichos ataques.

Estas son algunas recomendaciones muy tiles para los desarrolladores,


10
administradores e implementadores de un sistema distribuidos.

Efectuar un anlisis de riesgos.


La idea es muy sencilla: trazar todos los elementos que conforman nuestro
sistema (hardware y software) y observar cules involucran ms o menos
riesgo. Esto desembocar en un plan de seguridad cuyo objetivo es disminuir el
riesgo total del sistema, que se puede modelar como la suma de los riesgos de
sus componentes:
RIESGO TOTAL = RIESGO (componente 1) + RIESGO (componente 2).
El riesgo de cada componente est en funcin directa a las prdidas que
ocasionara el que ste deje de operar, as como en funcin de cun vulnerable
es dicho componente en este momento.

Mantener las cosas simples


Un sistema complejo es ms difcil de asegurar y potencialmente proporciona
una mayor cantidad de puertas abiertas a los atacantes. En general, es
recomendable intentar dividir el problema mediante la simplificacin de la
configuracin, para as identificar los puntos o rutas de control vulnerables
para incrementar la seguridad.
La seguridad debe estar en todos los niveles. Esto se puede expresar ms
sencillamente como: no confiar el sistema a un nico mecanismo de seguridad.
La informacin fluye a travs de los distintos componentes y/o capas del
sistema y son muchas las instancias en las que se puede mejorar su seguridad.
La recomendacin estipula que utilicemos todas estas instancias a pesar de
que en principio puedan parecer redundantes. Esto tiene dos problemas:
o Muchos ataques o "vulnerabilidades" se originan (de forma inocente o
intencional) desde dentro de la organizacin.
o El sistema que controla la "puerta" siempre puede fallar.

Encriptar tanto como sea posible


En general, los canales de comunicacin ms vulnerables o de mayor cercana
al pblico requieren una encriptacin "ms fuerte", es decir, ms difcil de
descifrar por los curiosos o atacantes. Cierta informacin conlleva ms riesgo
que otra, y por tanto requerir un nivel de encriptacin diferenciado.

SISTEMAS DISTRIBUIDOS
La tecnologa de encriptacin de informacin destinada a pasar a travs de la
red ha evolucionado bastante, hacindose popular el trmino VPN para hacer
referencia a canales que encriptan la informacin de un modo ms o menos
transparente. Hay soluciones propietarias, as como estndares relativamente
implementados como IP Sec. Ciertas aplicaciones estndares han recibido
soluciones de encriptacin tambin estndar. El caso del Web encriptado bajo
SSL11(HTTPS) junto con la industria de certificados digitales es el caso ms
conspicuo. De igual modo los estndares para correo electrnico PGP (o
derivados) y S/MIME son integrados cada vez con mayor frecuencia en las
aplicaciones de los usuarios finales. Hay muchas ms recomendaciones de
seguridad como, por ejemplo:
o No confiar en la autenticacin estndar.
o No usar la configuracin "estndar".
o Educar a los usuarios.
o Ejecutar slo los servicios imprescindibles-
o Mantenerse al da con las actualizaciones y hacer chequeos regulares.
o Establecer planes de contingencia y sistemas de respaldo.
o Mantener contacto con el proveedor de lneas de comunicacin.
o No permitir conexiones directas desde la red interna a Internet.
o Hacer uso de una red perimtrica o zona desmilitarizada.
o Prcticas de programacin segura,
o Vigilancia.
o Establecimiento de polticas, etc.

1.2.4 ESCALABILIDAD

La escalabilidad es una de las caractersticas ms importantes para los


desarrolladores de un sistema distribuido. Se dice que un sistema es escalable
si logra conservar su efectividad cuando hay el nmero de recursos y el
nmero de usuarios incrementa significativamente. La escalabilidad de un
sistema pude medirse en tres aspectos diferentes:
o Con respecto a su tamao: lo que significa que se pueden agregar ms
usuarios y ms recursos al sistema de una manera muy fcil.
o Con respecto a su localizacin o rea de implementacin: lo que significa
que tanto los usuarios como los recursos pueden estar en locaciones
remotas y separadas el uno del otro.
o Con respecto a su administracin: lo que significa que puede ser fcil de
administrar a pesar de que se utiliza en diferentes organizaciones
independientes que cuentan con diferentes polticas de seguridad y que
hacen un uso particular del sistema.

Desafortunadamente, un sistema que es escalable en uno o ms de estos


aspectos por lo general afecta el rendimiento del sistema conforme al
crecimiento del mismo.
Problemas de la Escalabilidad

SISTEMAS DISTRIBUIDOS
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
12
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.
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:

o Ninguna mquina tiene informacin completa del estado del sistema.


o Cada mquina toma decisiones propias basndose solamente en
informacin local.
o Problemas o fallos de una mquina no arruinan el procesamiento de todo
el algoritmo.
o No necesariamente se cuenta con un reloj global (algoritmos no
sincronizados).

Por otro lado, tenemos los problemas de la escalabilidad con respecto a la


localizacin o rea de implementacin de un sistema distribuido. Una de las
principales razones por las cuales resulta difcil escalar los sistemas
distribuidos que existen actualmente, es que dichos sistemas fueron diseados
para trabajar redes de acceso locales (LANs) y que estn basados en una
comunicacin sncrona.

Otro problema a considerar es que la comunicacin en una WAN es poco


confiable y en la gran mayora de los casos es punto a punto, al contrario de
las redes locales que generalmente son muy confiables y permiten hacer

SISTEMAS DISTRIBUIDOS
difusiones o transmisiones de tipo broadcast, lo que hace mucho ms fcil
el desarrollo de sistemas distribuidos.
La escalabilidad con respecto a la localizacin o rea de implementacin est
directamente relacionada con los problemas de soluciones centralizadas
comentados anteriormente.
13
Finalmente, podemos mencionar los problemas que acarrea la escalabilidad de
la administracin de un sistema distribuido. Este problema se da cuando un
sistema distribuido de expande a otro dominio, que por lo general contar con
diferentes polticas de uso y pago de recursos, administracin y seguridad. Por
lo general cuando esto pasa se deben de tomar al menos dos tipos de medidas
de seguridad:
o El sistema distribuido tiene que protegerse de ataques malignos
provenientes del nuevo dominio, y restringir el acceso a los servicios y datos
que no estn a disponibilidad de los usuarios del mismo.
o El nuevo dominio tiene que protegerse de ataques malignos provenientes
del sistema distribuido. Bsicamente, el nuevo dominio no sabe qu tipo de
informacin puede esperar del cdigo enviado por el nuevo dominio por lo
que pudiera decidir limitar los permisos de acceso a dicho cdigo.

Tcnicas de Escalabilidad
Como los problemas de escalabilidad de los sistemas distribuidos se
manifiestan como problemas de rendimiento causados por la capacidad
limitada de servidores y de las redes de comunicaciones, existen solamente
tres tcnicas de escalabilidad:
o Eliminar la latencia de las comunicaciones: es til en el caso de querer
lograr la escalabilidad geogrfica de un sistema, la idea bsica es
simple: tratar de evitar la espera de respuestas a las peticiones que se
hagan a servicios remotos lo ms que se pueda.
o La distribucin, que consiste en tomar un elemento, separarlo en partes
pequeas y distribuir esas partes en todo el sistema.
o La replicacin aumenta la disponibilidad de los componentes del sistema
y adems ayuda a balancear la carga entre los componentes que se
replican, con lo que se logra una mejora del rendimiento del sistema.

Una forma especial de replicacin es el Cacheo, el cual consiste en guardar una


copia de algn recurso (por lo general, de datos) de forma temporal en un
lugar cercano al cliente, para que ste lo pueda acceder ms fcilmente.

1.2.5 CONTROL DE ERRORES


El fallo tanto del hardware como el software es algo prcticamente inevitable, y
por ms confiable que pueda parecer algn componente, siempre es
importante estar preparado para cuando este falle. En un sistema centralizado
SISTEMAS DISTRIBUIDOS
por lo general el fallo de cualquier componente del sistema provoca que todos
los servicios que este ofrece dejen de funcionar, en cambio, en un sistema
distribuido, los fallos son parciales, puesto que solo afectan a los servicios que
el componente que fallo este prestando, mientras que otros servicios que
prestan otros componentes siguen funcionando.

El tratamiento
14 de fallos en un sistema distribuido es una tarea difcil, pero que
se puede lograr si se utilizan las tcnicas adecuadas, segn el sistema que se
desee proteger. Algunas de las tcnicas ms comunes son las siguientes:

Deteccin de Fallos: no es posible tratar un fallo si este no se ha detectado,


sin embargo, la deteccin de un fallo dentro de un sistema distribuido puede
no ser tan sencillo, tanto como en los componentes de hardware y software, los
sistemas distribuidos operan gracias a la transmisin de mensajes, y el
funcionamiento del sistema depende en gran parte de estas transmisiones de
datos entre los diferentes componentes; un fallo en la transmisin de datos
entre componentes no es fcil detectar, pero es algo que se puede esperar
(dependiendo del medio por el que se haga la transmisin y otras condiciones)
y al saber que existe la posibilidad de ese fallo, se puede monitorear y aplicar
tcnicas que aseguren que dicha transmisin siempre sea correcta.

Enmascaramiento de Fallos: una vez que un fallo es detectado, es


importante 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 del sistema y encargarse de que los servicios que se ofrecen
al cliente nunca sean interrumpidos.

Tolerancia a Fallos: es importante saber cundo un sistema puede llegar a


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 decidido arreglarlo, hay que encontrar la mejor manera de hacerlo, y
adems, de recuperar el estado del sistema antes de que ocurriera el fallo;
esto requiere del software adecuado para poder reconstruir o bien retractar los
cambios que no fueron completados al momento en que fue interrumpido el
sistema.

Redundancia: un sistema distribuido puede lograr ser tolerante a fallos


gracias a la utilizacin de componentes redundantes dentro del sistema. La
redundancia se logra con la replicacin de dichos componentes y con la
habilidad del sistema de recurrir a los componentes de respaldo en caso de que
SISTEMAS DISTRIBUIDOS
el componente de uso primario falle, todo esto por supuesto, sin que el usuario
se percate de lo que est sucediendo. La redundancia se puede dar en muchas
partes del sistema: componentes internos de los servidores, servidores de
aplicaciones, de Web, de archivos, de correo o de bases de datos, sistemas de
almacenamiento, conexiones a la red de comunicacin, etc. Es muy importante
tomar en cuenta que todos los componentes que estn replicados en el
sistema
15 deben mantenerse actualizados para evitar problemas de consistencia.

1.2.6 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.
o Se pueden perder actualizaciones provocando que los efectos de algunas
transacciones no se reflejen en los datos almacenados.
o Pueden presentarse recuperaciones de informacin inconsistentes.

1.2.7 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.

SISTEMAS DISTRIBUIDOS
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
16
los datos y la manera en que los recursos son accedidos.
o Transparencia de Ubicacin: oculta la localizacin de los recursos y permite
el acceso a los mismos sin la necesidad de conocer su localizacin.
o Transparencia de Migracin: oculta que un recurso o un cliente del sistema
sea reubicado, lo que permite hacer dichas reubicaciones sin afectar la
operacin de los usuarios y los servicios.
o Transparencia de Recolocacin: oculta que un recurso o un cliente del
sistema pueda moverse a una ubicacin diferente mientras estn en uso.
o Transparencia de Replicacin: oculta la existencia de mltiples ejemplares
del mismo recurso.
o Transparencia de Concurrencia: oculta que un recurso sea compartido por
varios usuarios sin interferir entre ellos mismos.
o Transparencia Frente a Fallos: oculta el fallo y recuperacin de un recurso
dentro del sistema, dejando que los usuarios terminen sus tareas a pesar de
los fallos de hardware o software que pudieran presentarse.
o Transparencia de Persistencia: oculta si un recurso (de software) est
almacenado en memoria o en disco.

Desde el punto de vista de los usuarios, la transparencia se logra cuando:


o Sus pedidos se satisfacen con ejecuciones en paralelo en distintas
mquinas.
o Se utilizan una variedad de servidores de archivos.
o El usuario no necesita saberlo ni notarlo.

La transparencia desde el punto de vista de los programas significa disear la


interfaz de llamadas al sistema de modo que no sea visible la existencia de
varios procesadores.
No es transparente un sistema donde el acceso a los archivos remotos se
realice mediante:
o El establecimiento explcito de una conexin en la red con un servidor
remoto.
o El envo posterior de mensajes, donde el acceso a los servicios remotos ser
distinto al acceso a los servicios locales.

Grado de Transparencia.

SISTEMAS DISTRIBUIDOS
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 est compuesto por
varios elementos y que por ms ptima que sea la transmisin de mensajes o
17
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.

La transparencia es 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.3 MODELOS ARQUITECTNICOS

Los sistemas distribuidos(SD) son los sistemas software ms complejos. Con los
modelos arquitectnicos tratamos de simplificar estos sistemas viendo la
colocacin de las partes y las relaciones entre ellas. Incluye tambin el control
global de estructura, los protocolos para comunicacin, sincronizacin, y
acceso a datos, la asignacin de funcionalidad, distribucin fsica, escalamiento
y desempeo, dimensiones de evolucin y seleccin de alternativas de diseo.

Los diferentes modelos arquitectnicos son:

o Capas de software.
o Arquitectura de Sistemas.
o Interface y Objetos.
o Arquitectura multiprocesador

Capa de software.

La idea bsica es desmembrar la complejidad de sistema mediante el diseo


en capas y servicios. El trmino arquitectura de software se refera inicialmente
a la estructuracin del software como capas en un nico computador. Ms
recientemente las capas son uno o varios procesos, localizados en el mismo o
diferente computador, que ofrecen y solicitan servicios

SISTEMAS DISTRIBUIDOS
o Capas: grupo de funcionalidades
fuertemente y altamente coherentes.
o Servicios: funcionalidades proporcionales
a capas superiores.

La estructura tpica en capas de un SD es la


siguiente:
18

Plataforma: Hardware y sistema operativo.


Estas capas ms bajas
proporcionan servicios a las
superiores y su implementacin depende
de cada computador.
Middleware: Es una capa software que
logra transparencia en la
heterogeneidad en el nivel de
plataforma.
Logra comunicacin y comparticin de recursos. El middleware se ocupa de
proporcionar bloques tiles para la construccin de componentes de software
que puedan trabajar con otros en un sistema distribuido.
En particular mejorar el nivel de las actividades de comunicacin en los
procesos de aplicacin, soportando abstracciones como: llamadas a
procedimientos remotos, comunicacin entre grupos de procesos, etc.

Arquitectura de objetos distribuidos

En el modelo cliente-servidor de un sistema distribuido, los clientes y los


servidores son diferentes. Los clientes reciben servicios de los servidores y no
de otros clientes; los servidores pueden actuar como clientes recibiendo
servicios de otros servidores, pero sin solicitar servicios de clientes; los clientes
deben conocer los servicios que ofrece cada uno de los servidores y deben
conocer como contactar con cada uno de estos servidores

Este modelo funciona bien para muchos tipos de aplicaciones. Sin embargo,
limita la flexibilidad de los diseadores del sistema ya que ellos deben decidir
donde se proporciona cada servicio.

Tambin deben planificar la escalabilidad y proporcionar algn medio para


distribuir la carga sobre los servidores cuando ms clientes se aadan al
sistema.

Una aproximacin ms general al diseo de sistemas distribuidos es eliminar la


distincin entre cliente y servidor y disear la arquitectura del sistema como
una arquitectura de objetos distribuidos. En una arquitectura de objetos
distribuidos, los componentes fundamentales del sistema son objetos que

SISTEMAS DISTRIBUIDOS
proporcionan una interfaz a un conjunto de servicios que ellos suministran.
Otros objetos realizan llamadas a estos servicios sin hacer ninguna distincin
lgica entre un cliente (el receptor de un servicio) y un servidor (el proveedor
de un servicio).

19

Interface y Objetos

o Una interface de un proceso es la especificacin del conjunto de funciones


que se pueden invocar sobre l.
o En lenguajes orientados a objetos, los procesos distribuidos pueden ser
construidos de una forma ms orientada al objeto. Las referencias a estos
objetos se pasan a otros procesos para que se pueda acceder a sus mtodos
de forma remota. Esta es la aproximacin adoptada por CORBA y JAVA RMI.

Variaciones del modelo cliente-servidor: Clientes Delgados

o En el cliente slo se ejecuta una interfaz basada en ventajas, mientras que


la aplicacin si se ejecuta en un servidor remoto, usualmente muy potente.
Arquitectura multiprocesador

El modelo ms simple de un sistema distribuido es un sistema multiprocesador


en el que el software est formado por varios procesos que pueden (aunque no
necesariamente) ejecutarse sobre procesadores diferentes. Este modelo es
comn en sistemas grandes de tiempo real. Estos sistemas recogen
informacin, toman decisiones usando esta informacin y envan seales a los
actuadores que modifican el entorno del sistema.

Lgicamente, los procesos relacionados con la recopilacin de informacin,


toma de decisin y control de actuadores podran ejecutarse todos ellos sobre
un nico procesador bajo el control de un planificador (scheduler). El uso de
mltiples procesadores mejora el rendimiento y adaptabilidad del sistema. La
distribucin de procesos ente los procesadores puede ser predeterminada (esto
es comn en sistemas crticos) o puede estar bajo el control de un despachado
(dispcher) que decide que procesos se asignan a cada procesador. Este es un

SISTEMAS DISTRIBUIDOS
mdulo simplificado de sistema de control de trfico. Un conjunto de sensores
distribuidos recoge informacin sobre el flujo de trfico y la procesan
localmente entes de enviarla a una sala de control. Los operadores toman
decisiones usando informacin y dan instrucciones a un proceso de control de
diversas luces de trfico. En este ejemplo, hay varios procesos lgicos para
gestionar los sensores, la sala de control y los semforos. Estos procesos
lgicos
20 pueden ser procesos individuales o un grupo de procesos.

Cliente servidor

El modelo cliente-servidor es la arquitectura ms citada cuando se discuten los


sistemas distribuidos. Es el modelo ms importante y sigue siendo el ms
ampliamente utilizado. La estructura simple de esta arquitectura, en la cual los
procesos toman el rol de ser clientes o servidores. En particular, los procesos
de cliente interactan con los procesos de servidor individuales en equipos
anfitriones (host) potencialmente separados, con el fin de acceder a los
recursos compartidos que administran.
El modelo cliente-servidor puede tomar diferentes configuraciones. Por
ejemplo, puede existir ms de un cliente conectado a un servidor. Tambin se
puede tener un grupo de servidores interconectados dedicados a dar servicio a
un grupo de clientes.

Proxy

SISTEMAS DISTRIBUIDOS
Es un servidor que se emplea como intermediario entre las peticiones de re-
cursos que realiza un cliente a otro servidor. Por ejemplo, si una computadora
A solicita un recurso a una computadora C, lo har mediante una peticin a la
computadora B que, a su vez, trasladar la peticin a la computadora C. De
esta manera, la computadora C no sabr que la peticin procedi original-
mente de la computadora A.
21
Esta situacin estratgica de punto intermedio suele ser aprovechada para
soportar una serie de funcionalidades, como:

o Proporcionar cach.
o Control de acceso.
o Registro del trfico.
o Prohibir cierto tipo de trfico.
o Mejorar el rendimiento.
o Mantener el anonimato.

El proxy ms conocido es el servidor proxy web, su funcin principal es


interceptar la navegacin de los clientes por pginas web por motivos de se-
guridad, rendimiento, anonimato, entre otros.

Peer-to-peer

Los sistemas peer-to-peer (p2p) son sistemas descentralizados en los que los
clculos pueden llevarse a cabo en cualquier nodo de la red y, al menos en
principio, no se hacen distinciones entre clientes y servidores. En las
aplicaciones peer-to-peer, el sistema en su totalidad se disea para aprovechar
la ventaja de la potencia computacional y disponibilidad de almacenamiento a
travs de una red de computadoras potencialmente enorme. Los estndares y
protocolos que posibilitan las comunicaciones a travs de los nodos estn
embebidos en la propia aplicacin, y cada nodo debe ejecutar una copia de
dicha aplicacin.

Hay indicios de que esta tecnologa se est utilizando de forma creciente en


empresas para que las redes de PCs soporten la potencia de dichas empresas.
Intel y Boeing han implementado sistemas p2p para aplicaciones que requieren
computaciones intensivas. Para aplicaciones cooperativas que soportan trabajo
distribuido, sta parece ser la tecnologa ms efectiva.

SISTEMAS DISTRIBUIDOS
Se puede ver la arquitectura de las aplicaciones p2p desde dos puntos de vista.
La arquitectura lgica de la red es la distribucin de la arquitectura del sistema,
mientras que la arquitectura de la aplicacin es la organizacin genrica de los
componentes en cada tipo de aplicacin.

En 22
principio, en los sistemas peer-to-peer cada nodo en la red podra conocer
cualquier otro nodo, podra conectarse con l, y podra intercambiar datos. En
la prctica, por supuesto, esto es imposible, ya que los nodos se organizan
dentro de localidades con algunos nodos que actan como puentes a otras
localidades de nodos.

Beneficios de un sistema peer-to-peer:

o Nodos comparten recursos.


o Se pueden desplegar algoritmos distribuidos.
o Escalamiento ms fcil del sistema.
o Ahorro de costos.
o Flexibilidad.
o Ningn punto nico de falla.
o Mayor robustez del sistema.

Applets

Un applet es un cdigo que se ejecuta en el contexto de otro programa, por


ejemplo, en un navegador web. El cdigo se descarga en el navegador y se
ejecuta all.

SISTEMAS DISTRIBUIDOS
a) A solicitud del cliente el
servidor web, responde con el
cdigo del applet.

b) El cliente interacta con el


23 applet

Un applet normalmente lleva a


cabo una funcin muy
especfica, que carece de uso
independiente, y son
ampliamente utilizados en aplicaciones de telefona mvil. Un applet puede dar
una buena respuesta interactiva, ya que no sufre de los retrasos o variabilidad
de ancho de banda asociado con la comunicacin de la red. Sin embargo, un
applet tpicamente carece de sesin y tiene privilegios restringidos de
seguridad. A menudo, un applet consiste en un cdigo poco confiable, por eso
se les impide tener acceso al sistema de archivos local. Los applet que se
cargan a travs de la red con frecuencia son considerados como cdigos de
poca confianza, a excepcin de que lleven la firma digital de una entidad
especificada como confiable.
Ejemplos de los applets ms comunes son:

o Java applets.
o Animaciones Flash.
o Windows media player.
o Modelos 3D.

Clster

En informtica, el trmino clster (grupo o racimo) hace referencia a


conjuntos o conglomerados de computadoras construidos mediante el uso de
hardware comn y que se comportan como si fueran una nica computadora.
El uso de los clsteres vara desde las aplicaciones de supe cmputo,
servidores web y comercio electrnico hasta el software de misiones crticas y
bases de datos de alto rendimiento. El cmputo con clsteres es el resultado de
la convergencia de varias tendencias tecnolgicas actuales, entre las que se
pueden destacar:

o Microprocesadores de alto rendimiento.


o Redes de alta velocidad.
o Software para cmputo distribuido de alto rendimiento.
o Crecientes necesidades de potencia computacional.

Los servicios esperados de un clster principalmente son:

o Alto rendimiento.
SISTEMAS DISTRIBUIDOS
o Alta disponibilidad.
o Escalabilidad.
o Balanceo de carga.

Tpicamente respecto a la rapidez y disponibilidad, se espera que un clster


sea ms econmico que el uso de computadoras individuales. Un clster puede
ser:
24
o Homogneo: cuando todas las computadoras tienen la misma
configuracin en hardware y sistema operativo.
o Semihomogneo: cuando las computadoras tienen diferente rendimiento,
pero guardan una similitud con respecto a su arquitectura y sistema
operativo.
o Heterogneo: cuando las computadoras tienen diferente hardware y
sistema operativo.

Grid

El cmputo grid es un paradigma del cmputo distribuido, frecuentemente


usado para indicar una infraestructura de gestin de recursos distribuidos que
se centra en el acceso coordinado a los recursos informticos remotos. Estos
recursos de cmputo son colectados desde mltiples localizaciones para
alcanzar una meta comn. A diferencia del cmputo de cluster (en grupo o
racimo), el cmputo grid tiende a ser ms heterogneo y disperso
geogrficamente. Generalmente las grids son usadas para una variedad de
propsitos, pero puede haber grids especializadas para fines especficos. Los
recursos que son integrados por una infraestructura grid son tpicamente
plataformas de cmputo dedicadas a supercomputadoras de alta gama o
clsters de propsito general.
Definen la computacin grid como cualquiera de una variedad de niveles de
virtualizacin a lo largo de un continuo, donde a lo largo de ese continuo se
podra decir que una solucin particular es una implementacin de cmputo
grid frente a una relativamente simple aplicacin usando recursos virtuales,
pero incluso en los niveles ms simples de virtualizacin, siempre se requieren
habilitar tecnologas de redes.

Beneficios del cmputo grid:

SISTEMAS DISTRIBUIDOS
o Explotacin de recursos infrautilizados.
o Capacidad de CPU paralelos.
o Recursos virtuales y organizaciones virtuales para la colaboracin.
o Acceso a recursos adicionales.
o Balanceo de recursos.
o
25 Fiabilidad.
o Mejor gestin de infraestructuras de TI ms grandes y distribuidos.

1.4 MODELO FUNDAMENTALES

Modelo de interaccin

Se refiere a la forma en que se produce el paso de mensajes entre los


procesos restringe los modos de interaccin: Retrasos, precisin y tiempo

SISTEMAS DISTRIBUIDOS
Problemas presentados en las prestaciones del canal:
26
o Latencia: retardo entre el envo y recepcin del mensaje Tiempo de acceso a
la red (ej., retardos de transmisin Ethernet).
Tiempo para que el primer bit viaje desde la interfaz de la red
transmisora hasta la interfaz de red receptora.
Tiempo procesado dentro del proceso de envo y recepcin.
o Caudal: nmero de unidades (ej., paquetes) entregadas por unidad de
tiempo.
o Ancho de banda: cantidad de informacin (ej., bits) transmitida por
unidad de tiempo.
o Variacin de retardo: variacin en retardos entre diferentes mensajes del
mismo tipo.

En virtud del modelo de comunicacin aparecen dos familias de sistemas:

o Sistemas distribuidos sncronos:

El tiempo para ejecutar cada paso de un proceso tiene establecidos


limites inferiores y superiores.
los tiempos de entrega de mensajes tienen lmites establecidos.
Cada proceso tiene un reloj que deriva rangos en tiempo real con
lmites establecidos.

o Sistemas distribuidos asncronos: sin lmite

Tiempos de ejecucin de procesos


Tiempo de entrega de mensajes
Tasa de movimiento del reloj

Modelo de fallo

Fallo por omisin (del proceso o del canal)

o Fallas por omisin de proceso: cada de proceso

Deteccin con timeouts


La cada es del tipo fail-stop si otro proceso puede detectar con
certeza que el proceso ha cado

o Fallas por omisin de comunicacin (canal): el mensaje no ha sido


entregado (perdida de mensajes)

SISTEMAS DISTRIBUIDOS
Posibles causas:

Error de trasmisin de red


Sobrecarga de buffer de recepcin de mensajes

Fallas arbitrarias
27
o Proceso: omite pasos esperados del proceso o lleva a cabo no deseados
o Canal de comunicacin: ej., sin entrega, corrupcin o Duplicidad

Tipos de fallos

Modelo de seguridad

Las tcnicas de seguridad permiten la comprobacin de fallos y la minimizacin


de su posible aparicin:

Comunicacin Fiable

o Validez de la comunicacin: cualquier mensaje enviado () ser escuchado.


o Integridad de la comunicacin: Cualquier mensaje recibido () es correcto y
respeta la secuencialidad.

Amenazas:

o Duplicacin de mensajes, desorden, corrupcin del mensaje, revelacin, etc.

Amenaza a los Procesos

o Acceso indebido a los recursos


o Ataque a la integridad del proceso
o Suplantacin de los principales interlocutores
o Falsificacin de servicios
o Falsificacin de peticiones

Amenaza a los canales

o Acceso indebido al canal


SISTEMAS DISTRIBUIDOS
o Captura de mensajes
o Reenvi de mensajes
o Eliminacin de mensajes
o Modificacin de mensajes y de cdigo mvil

Amenaza a la disponibilidad del servicio


28
o Ataque a la integridad de los servicios
o Ataque de denegacin de servicio

1.5 RECURSOS DE COMUNICACIN

La comunicacin entre procesos es el ncleo de todos los sistemas distribuidos,


por tal razn es importante entender la manera en que los procesos localizados
en diferentes computadoras pueden intercambiar informacin. En los sistemas
distribuidos tradicionalmente la comunicacin est basada en el paso de
mensaje. Esta tcnica aporta sincronizacin entre procesos y permite la
exclusin mutua, su principal caracterstica es que no requiere memoria
compartida, por lo que resulta ser muy importante en la programacin de
sistemas distribuidos. En este captulo revisamos diferentes conceptos
relacionados con los procesos y la comunicacin en los sistemas distribuidos,
como hilos, clientes, servidores, la llamada a un procedimiento remoto (RPC),
el paradigma cliente-servidor, la comunicacin en grupo y la interfaz de
sockets.
Hilos

Los hilos se diferencian de los procesos en que los primeros comparten los
mismos recursos del programa que las contiene, en tanto los procesos tienen
de manera separada su cdigo, as como sus datos. Se pueden identifi car hilos
de dos tipos de flujo:

o Flujo nico: En este caso, un programa utiliza nicamente un hilo para


controlar su ejecucin.
o Flujo mltiple: Son aquellos programas que utilizan varios contextos de
ejecucin para realizar su trabajo.

SISTEMAS DISTRIBUIDOS
En un sistema multihilos, cada tarea se inicia y termina tan pronto como sea
posible, esto facilita la entrada de datos en sistemas en tiempo real,
especialmente si estos datos provienen de diferentes fuentes. En un programa
multihilo se tiene el hilo principal del programa en ejecucin, quien a su vez
tiene otros hilos o tareas paralelas en ejecucin.

Un29hilo se define como una secuencia nica de control de flujo dentro de un


programa, en un programa puede haber ms de una secuencia de control o
hilos. Un hilo es una parte del programa que se ejecuta independientemente
del resto. El hilo es la unidad de cdigo ms pequea que se pueda ejecutar en
un entorno multitareas. El uso de hilos permite al programador escribir
programas ms eficientes, debido a que los hilos permiten optimizar recursos
tan importantes como el mejor desempeo del CPU al minimizar sus tiempos
de inactividad.

El uso de hilos es muy valioso en entornos interactivos en red, ya que permiten


sincronizar la diferencia entre la velocidad de transmisin de la red con las de
procesamiento del CPU. La velocidad en el manejo del sistema de archivos para
lectura y grabacin es ms lenta comparada con la velocidad de
procesamiento de estos datos por el CPU, en este caso el uso de hilos ayuda
mucho. Una de las razones de importancia para el estudio de la programacin
multihilos es que permite acceder a los recursos de tiempo libre de la CPU
mientras se realizan otras tareas.

Cliente

En un sistema distribuido, el cliente es el elemento que solicita y usa el servicio


que proporciona una funcionalidad especfica o dato. El cliente tiene una postura
proactiva, esto quiere decir que est trabajando en una tarea especfica y cuando
necesita cierto dato o una operacin especfica invoca al servidor para obtenerlo.
Generalmente es por medio de la aplicacin cliente que un usuario accede y
mantiene un dilogo con el sistema. El usuario realiza el dilogo va una interfaz
grfica de usuario. La operacin del cliente consiste en arrancar, realizar su trabajo
y terminar.

Servidores

El servidor es el elemento que proporciona la funcionalidad o servicio en un


sistema distribuido. Este servicio puede consistir en compartir datos, informar
sobre una solicitud, compartir recursos fsicos, imprimir, etc. Generalmente se
considera que un servidor tiene una posicin reactiva en el sistema, ya que se
encuentra inactivo hasta que recibe una peticin de servicio. Cuando recibe la
peticin, la procesa y enva la respuesta al solicitante, para despus quedar
nuevamente inactivo en espera de una nueva peticin.
SISTEMAS DISTRIBUIDOS
1.5.1 PROTOCOLOS TCP/IP
30
Conjunto de reglas que son utilizadas para establecer una comunicacin en su
forma ms simple entre determinados procesos para cumplir una determinada
tarea, siendo respetadas para el envo y la recepcin de datos a travs de una
red.

Los protocolos pueden ser implementados por hardware, software o la


combinacin de ambos. Por el contrario, un protocolo no define cmo se
programa el software para que sea compatible con el protocolo.

Esto se denomina implementacin o la conversin de un protocolo a un


lenguaje de programacin.
En Internet, los protocolos utilizados pertenecen a una sucesin de protocolos o
a un conjunto de protocolos relacionados entre s. Este conjunto de protocolos
se denomina TCP/IP.

HTTP: Protocolo de transferencia de hipertexto es el protocolo ms utilizado en


Internet. El propsito del protocolo HTTP es permitir la transferencia de
archivos (principalmente, en formato HTML) entre un navegador (el cliente) y
un servidor web (denominado, entre otros, httpd en equipos UNIX) localizado
mediante una cadena de caracteres denominada direccin URL.

FTP: Define la manera en que los datos deben ser transferidos a travs de una
red TCP/IP. El objetivo del protocolo FTP es:

o Permitir que equipos remotos puedan compartir archivos.


o Permitir la independencia entre los sistemas de archivo del equipo
del cliente y del equipo del servidor.
o Permitir una transferencia de datos eficaz.

ARP: Tiene un papel clave entre los protocolos de capa de Internet relacionados
con el protocolo TCP/IP, ya que permite que se conozca la direccin fsica de
una tarjeta de interfaz de red correspondiente a una direccin IP. Por eso se
llama Protocolo de Resolucin de Direccin (en ingls ARP significa Address
Resolution Protocol).

ICMP: Protocolo de mensajes de control de Internet) es un protocolo que


permite administrar informacin relacionada con errores de los equipos en
red. Si se tienen en cuenta los escasos controles que lleva a cabo el protocolo
IP, ICMP no permite corregir los errores, sino que los notifica a los protocolos de

SISTEMAS DISTRIBUIDOS
capas cercanas. Por lo tanto, el protocolo ICMP es usado por todos los
routers para indicar un error (llamado un problema de entrega).
UDP: (Protocolo de datagrama de usuario) es un protocolo no orientado a
conexin de la capa de transporte del modelo TCP/IP. Este protocolo es muy
simple ya que no proporciona deteccin de errores (no es un protocolo
31
orientado a conexin).

SMTP: Protocolo simple de transferencia de correo, es el protocolo estndar que


permite la transferencia de correo de un servidor a otro mediante una conexin
punto a punto. ste es un protocolo que funciona en lnea, encapsulado en una
trama TCP/IP.

TCP/IP: Influenciado por el modelo OSI, tambin utiliza el enfoque modular


(utiliza mdulos o capas), pero slo contiene cuatro:
o Capa de acceso a la red: Especifica la forma en la que los datos deben
enrutarse, sea cual sea el tipo de red utilizado.
o Capa de Internet: Es responsable de proporcionar el paquete de datos
(datagrama).
o Capa de transporte: Brinda los datos de enrutamiento, junto con los
mecanismos que permiten conocer el estado de la transmisin.
o Capa de aplicacin: Incorpora aplicaciones de red estndar (Telnet,
SMTP, FTP, etc.).

1.5.2 SERVICIOS Y PUERTOS

Diversos programas TCP/IP pueden ejecutarse simultneamente en Internet


(por ejemplo, pueden abrirse diferentes navegadores de manera simultnea o
navegar por pginas HTML mientras se descarga un archivo de un FTP). Cada
uno de estos programas funciona con un protocolo. A veces el equipo debe
poder distinguir las diferentes fuentes de datos.

Cada una de estas aplicaciones puede serle asignada una direccin nica en
equipo, codificada en 16 bits. La combinacin de direcciones IP +puerto es n
socket.

La direccin IP sirve para identificar de manera nica un equipo en la red


mientras que el nmero de puerto especifica la aplicacin a la que se dirigen
los datos. Cuando el equipo recibe informacin que va dirigida a un puerto, los
datos se envan a la aplicacin relacionada. Si se trata de una solicitud enviada
a la aplicacin, la aplicacin se denomina aplicacin servidor. Si se trata de una
respuesta, entonces hablamos de una aplicacin cliente.

o Los puertos del 0 al 1023 son los "puertos conocidos" o reservados. Son
reservados para procesos del sistema (demonio) o programas ejecutados

SISTEMAS DISTRIBUIDOS
por usuarios privilegiados. Sin embargo, un administrador de red puede
conectar servicios con puertos de su eleccin.
o Los puertos del 1024 al 49151 son los "puertos registrados".
o Los puertos del 49152 al 65535 son los "puertos dinmicos y/o privados".

32

1.5.3 PROCESOS Y DEMONIOS

Un demonio o servicio es un programa que se ejecuta en segundo plano, fuera del


control interactivo de los usuarios del sistema ya que carecen de interfaz con
estos.

El sistema generalmente inicia los demonios durante el arranque, siendo las


funciones ms comunes de estos las de ofrecer servicios a otros programas, ya sea
respondiendo a las peticiones que llegan a travs de la red o atendiendo a
procesos que se ejecutan en el mismo sistema, as como responder ante cierta
actividad del hardware.

SISTEMAS DISTRIBUIDOS
33

CAPTULO 2

SISTEMAS DISTRIBUIDOS
34
2.1 INTRODUCCIN A LOS SISTEMAS
DE MULTIPROCESAMIENTO

Un sistema de multiprocesamiento consiste en una computadora que tiene


ms de un procesador (o bien en una serie de computadoras con CPUs o
procesadores independientes). La mayora de computadoras supervisoras se
disean especficamente para dar soporte a mltiples procesadores. Incluyen
un bus de altas prestaciones, decenas de MB para memoria con correccin de
errores, sistemas de disco redundantes, arquitecturas avanzadas de sistemas
que reducen los cuellos de botella utilidades redundantes, como mltiples
fuentes de alimentacin.

2.2 CLASIFICACIN DE LOS SISTEMAS


DE MULTIPROCESAMIENTO

Existen varias clasificaciones de las arquitecturas informticas paralelas. Flynn


(1966) introdujo un esquema para clasificar la arquitectura de un computador
basndose en cmo la mquina relaciona sus instrucciones (SI, single
instruccin) o un flujo de mltiples instrucciones (MI). Esto da lugar a la
clasificacin siguiente:

o SISD: Flujo de una sola instruccin, flujo de un solo dato. Esta categora
incluye a los computadores serie convencionales.
o SIMD. Flujo de una sola instruccin, flujo de mltiples datos. Estos son
tpicamente los procesadores vectoriales y los computadores en array en los
cuales una sola instruccin puede operar sobre diferentes datos en diferentes
unidades de ejecucin.
o MISD. Flujo de mltiples instrucciones, flujo de un solo datos. Esta es una
organizacin raras veces utilizada en la cual mltiples instrucciones operan
sobre un nico flojo de datos en paralelo.
o MIMD. Flujo de mltiples instrucciones, flujo de mltiples datos. La ejecucin
simultanea de mltiples instrucciones que operan sobre varios flujos de datos.
Esta clase incluye los multiprocesadores de diferentes tipos.

SISTEMAS DISTRIBUIDOS
35

2.2.1 FUERTEMENTE ACOPLADOS


Se comunica a travs de una memoria principal compartida, por lo que la
velocidad a la que se pueden comunicar datos de un procesador a otro es del
mismo orden que el ancho de banda de la memoria.

Los sistemas individuales hospedan mltiples CPUs que comparten una


memoria principal comn (normalmente sobre un bus de memoria de alta
velocidad).

En los sistemas individuales existe slo una copia del sistema operativo y la
comunicacin entre CPUs es muy rpida.

Multiprocesamiento asimtrico (tambin conocido como procesamiento


maestro - esclavo), el Kernel del sistema operativo corre en un CPU y no puede
ser dividido entre procesadores.

El CPU "maestro" ejecuta operaciones y asigna tareas a otros procesadores


"esclavos".

A pesar de las grandes mejoras acaecidas en mono-procesadores para algunas


aplicaciones no es suficiente.

La solucin pueden ser los sistemas multiprocesadores: Solucin ms sencilla,


natural y con mejor coste-prestaciones.

Las mejoras en microprocesadores cada vez son ms complejas: cada avance


implica crecer en complejidad, potencia y superficie, lenta pero clara mejora en
el software, que permite explotar el paralelismo.

Las arquitecturas actuales son muy diversas: hay ms investigacin que


resultados definitivos.
SISTEMAS DISTRIBUIDOS
2.2.2 DBILMENTE ACOPLADOS

Cada procesador tiene un conjunto de dispositivos de entrada- salida y una


36
gran memoria local a donde acceden la mayor parte de las instalaciones y
datos. Los procesos que se ejecutan en diferentes procesadores se comunican
mediante intercambio de mensajes a travs de un sistema de transferencia de
mensajes.

Consisten en mltiples sistemas, cada uno con su propia memoria privada y su


propia copia de sistema operativo, conectados por un enlace de comunicacin.

Con multiprocesamiento dbilmente acoplado cada sistema tiene su propio


CPU y memoria dedicada. Cada sistema accede a recursos como el disco, va el
Bus E/S.

Desventajas: Tienden a ser ms costosos, Hay una considerable carga de


software requerida para sincronizar los datos., El enlace de comunicacin es
relativamente lento.

2.3 SISTEMAS CLUSTER

El trmino clster (del ingls cluster, "grupo" o "racimo") se aplica a los


conjuntos o conglomerados de computadoras construidos mediante la
utilizacin de hardware comunes y que se comportan como si fuesen una nica
computadora.

Hoy en da desempean un papel importante en la solucin de problemas de


las ciencias, las ingenieras y del comercio moderno.

La tecnologa de clsteres ha evolucionado en apoyo de actividades que van


desde aplicaciones de sper cmputo y software de misiones crticas,
servidores web y comercio electrnico, hasta bases de datos de alto
rendimiento, entre otros usos.

El cmputo con clsteres surge como resultado de la convergencia de varias


tendencias actuales que incluyen la disponibilidad de microprocesadores
econmicos de alto rendimiento y redes de alta velocidad, el desarrollo de
herramientas de software para cmputo distribuido de alto rendimiento, as

SISTEMAS DISTRIBUIDOS
como la creciente necesidad de potencia computacional para aplicaciones que
la requieran.

Simplemente, un clster es un grupo de mltiples ordenadores unidos


mediante una red de alta velocidad, de tal forma que el conjunto es visto como
un nico ordenador, ms potente que los comunes de escritorio.
37
Los clsteres son usualmente empleados para mejorar el rendimiento y/o la
disponibilidad por encima de la que es provista por un solo computador
tpicamente siendo ms econmico que computadores individuales de rapidez
y disponibilidad comparables.

De un clster se espera que presente combinaciones de los siguientes


servicios:

o Alto rendimiento
o Alta disponibilidad
o Balanceo de carga
o Escalabilidad

La construccin de los ordenadores del clster es ms fcil y econmica debido


a su flexibilidad: pueden tener toda la misma configuracin
de hardware y sistema operativo (clster homogneo), diferente rendimiento,
pero con arquitecturas y sistemas operativos similares (clster semi
homogneo), o tener diferente hardware y sistema operativo (clster
heterogneo), lo que hace ms fcil y econmica su construccin.

Para que un clster funcione como tal, no basta solo con conectar entre s los
ordenadores, sino que es necesario proveer un sistema de manejo del clster,
el cual se encargue de interactuar con el usuario y los procesos que corren en
l para optimizar el funcionamiento.

Clusters en aplicaciones cientficas

o Se suelen caracterizar por ser aplicaciones computacionalmente


intensivas.
o Sus necesidades de recursos son muy importantes en
almacenamiento y especialmente memoria.
o Requieren nodos y sistemas dedicados, en entornos HPC y HTC.
o Suelen estar controlados los recursos por planificadores tipo Maui y
gestores de recursos tipo PBS.
o Son en muchas ocasiones cdigos legacy, difciles de mantener, ya
que los dominios de aplicacin suelen ser difcilmente paralelos.

Clusters en aplicaciones empresariales

SISTEMAS DISTRIBUIDOS
Suelen ser aplicaciones no especialmente intensivas computacionalmente,
pero que demandan alta disponibilidad y respuesta inmediata, con lo que los
servicios se estn ejecutando continuamente y no controlados por un sistema
de colas

Es usual que un sistema provea varios servicios. Una primera aproximacin


para
38realizar una distribucin del trabajo es separar los servicios:
Un servidor web con la BD en un nodo, el contenedor EJB en otro y el servidor
de pginas web en otro constituye un claro ejemplo de distribucin en el
mbito empresarial.

Otra aproximacin es instalar una aplicacin web en un clster squid como


proxy-cach, apache/tomcat como servidor: web/de aplicaciones web,
memcached como cach de consultas a la base de datos y mysql como base
de datos. Estos: servicios pueden estar replicados en varios nodos del clster.
Ejemplos: flickr, wikipedia y google.

2.3.1 MULTIPROCESAMIENTO
DEDICADO

Diferentes microprocesadores gobiernan las distintas tareas y recursos del


sistema. El enfoque principal que adoptan es el incremento de rendimiento del
sistema para mltiples usuarios de red en mltiples segmentos de red de rea
local. Los sistemas supervisores dan soporte a mltiples tarjetas de red, lo que
incrementa el nmero de posibles segmentos. El bus de alta velocidad del
servidor proporciona transferencia rpida de informacin entre los segmentos
de red. Cada CPU se dedica a una funcin especfica tal como entrada / salida
de la tarjeta de interfaz de red u operaciones con los archivos.

2.3.2 MULTIPROCESAMIENTO
COMPARTIDO

Los microprocesadores del sistema comparten los recursos del sistema, como
la entrada salida de memoria y disco. Se distribuye uniformemente la carga de

SISTEMAS DISTRIBUIDOS
trabajo a los procesadores disponibles, de modo que uno no est inactivo
mientras otro tiene un exceso de trabajo con una tarea especfica. Las
prestaciones se incrementan para todas las tareas al aadir
microprocesadores, su desventaja es que los sistemas operativos que soportan
este tipo de multiprocesamiento son ms difciles de disear.

39

2.4 PROTOCOLOS DE COMUNICACIN

La comunicacin entre procesos es un factor clave para construir sistemas


distribuidos, los paradigmas de comunicacin ms usados en sistemas dis-
tribuidos son:

o Cliente - servidor.
o Llamada a un procedimiento remoto (RPC).
o Comunicacin en grupo.

Los conceptos fundamentales que deben ser considerados para la comu-


nicacin son:

o Los datos tienen que ser aplanados antes de ser enviados.


o Los datos tienen que ser representados de la misma manera en la fuente y
destino.
o Los datos tienen que empaquetarse para ser enviados.
o Usar operaciones de send para enviar y receive para recibir.
o Especificar la comunicacin, ya sea en modo bloqueante o no bloqueante.
o Abstraccin del mecanismo de paso de mensaje.
o La confiabilidad de la comunicacin. Por ejemplo, usar TCP en lugar de UDP.

2.5 PASO DE MENSAJES


Una de las funciones del stub del cliente es coger los parmetros de entrada,
ponerlos en un mensaje y envirselos al stub del servidor. Sin embargo, se
presentan algunos problemas para hacer esto.

Debe tenerse en cuenta que los datos en los programas suelen estar
representados mediante estructuras de datos, mientras que en un mensaje la
informacin debe ser una secuencia de bytes; por lo tanto, se debe establecer
un mecanismo para aplanar o serializar los parmetros y pasarlos al
mensaje. Aplanar significa tomar cualquier estructura de datos y reordenarla
como una secuencia de bytes. Esto debe hacerse tambin con las estructuras
de datos dinmicas (listas enlazadas), que deben pasarse a una serie de
valores formando una secuencia de bytes.
SISTEMAS DISTRIBUIDOS
Aunque el aplanamiento (marshalling, en ingls) de los parmetros podra ser
una tarea fcil, no lo es. Por desgracia, los lenguajes utilizados para programar
los distintos procesos de la red y los procesadores en los que se ejecutan,
utilizan diferentes representaciones de los datos que manipulan (distinto
tamao y representacin para los enteros complemento a uno o complemento
a dos,
40 distintas fronteras de alineamiento, distintos cdigos de caracteres
ASCII o EBCDIC, ...). Esto quiere decir que, si un dato lo aplanamos en un
proceso, lo ponemos en un mensaje y se lo enviamos a otro proceso de la red
(en una mquina distinta), es muy posible que el formato en el que se reciben
los datos no sea el que espera el receptor, por lo que el contenido del mensaje
podra no entenderse o ser malinterpretado.

Un motivo de la interpretacin errnea de datos por distintas arquitecturas es


el debido a la representacin de los nmeros en la memoria. Las tiras de
caracteres estn compuestas por caracteres sucesivos, tal que cada uno de
ellos ocupa un byte, y el carcter siguiente va a continuacin en el siguiente
byte de memoria. Pero para los nmeros, por ejemplo: los enteros, que suelen
ocupar 32 bits (4 bytes), hay dos formas de ordenar los cuatro bytes:

o Little-endian: El byte menos significativo del entero est en la direccin ms


baja. (Intel)
o Big-endian: El byte menos significativo est en la direccin ms alta.
(Motorola, SPARC).

Para evitar este problema del formato de representacin de los datos, los
procesos comunicantes deben ponerse previamente de acuerdo en el formato
en el que se van intercambiar los datos. Hay tres alternativas en el tipo de
acuerdo a tomar:

o Antes de la transmisin, los datos se convierten a un formato genrico


conocido por todos los procesos (representacin externa de datos). En el
receptor se convierten al formato local de su arquitectura. Algunos
estndares de representacin externa de datos son: XDR de Sun, Courier de
Xerox y ASN 1.
o Para la comunicacin entre dos ordenadores con arquitectura comn, el
paso anterior puede omitirse. Esto requiere que antes de la transmisin de
los parmetros (al establecer la sesin de comunicacin), los dos extremos
negocien si se requiere pasar los datos a un formato genrico o no.
o Otra posibilidad consiste en transmitir los datos en su formato nativo (el de
la arquitectura del transmisor) junto con un identificador del tipo de
arquitectura subyacente. El receptor, consultando el tipo de arquitectura
utilizado, decide si es necesario convertir los datos recibidos o no.

2.6 OBJETOS REMOTOS


SISTEMAS DISTRIBUIDOS
RMI es una tecnologa desarrollada por Sun para permitir la colaboracin de
objetos que estn localizados remotamente. Esta tecnologa se enmarca en la
idea de permitir colaboracin entre Objetos Remotos. La idea no es que los
objetos
41 se comuniquen a travs de la programacin del usuario de protocolos
estndares de red. La idea es tener un objeto cliente, donde podamos
podamos completar un requerimiento de datos. El cliente luego prepara el
requerimiento que enva a un objeto ubicado en un servidor. El objeto remoto
prepara la informacin requerida (accediendo a bases de datos, otros objetos,
etc). Finalmente, el objeto remoto enva la respuesta al cliente. En lo posible
esta interaccin debera ser lo ms semejante posible a requerimientos hechos
localmente.

En principio se puede anhelar la colaboracin de objetos escritos en cualquier


lenguaje (no es el caso de RMI). Esta idea no es simple de lograr, corresponde
al esfuerzo del grupo OMG (Object Management Group, www.omg.org) los
cuales propusieron CORBA (Common Object Request Broker Architecture), el
cual define un mecanismo comn para descubrir servicios e intercambiar
datos. CORBA usa Object Request Broker (ORB) como traductores universales
para la comunicacin entre objetos. Los objetos remotos hablan a travs de
estos ORB. El protocolo de comunicacin entre objetos y ORB es llamado
Internet Inter-ORB Protocol o IIOP.

La opcin propuesta por Microsoft para comunicar objetos remotos es COM


(Component Object Model). Hoy este modelo parece haber sido superado por la
tecnologa .NET.

Cuando el cliente y servidor son escritos en Java, la generalidad y complejidad


de CORBA no es requerida. En este caso Sun desarroll RMI, un mecanismo
ms simple especialmente pensado para comunicacin entre aplicaciones Java.

Invocacin Remota de Objetos (RMI)

La idea suena simple, si tenemos acceso a objetos en otras mquinas,


podemos llamar a mtodos de ese objeto remoto. RMI maneja los detalles de
enviar los parmetros, el objeto remoto debe ser activado para ejecutar el
mtodo y los valores deben ser retornados de regreso al llamador.

SISTEMAS DISTRIBUIDOS
42

Terminologa:

o Objeto cliente: objeto cuyo mtodo hace el llamado remoto.

o Objeto servidor: Objeto remoto llamado

Notar que los roles de cliente y servidor aplican slo a un llamado. Un objeto
servidor luego puede ser cliente al hacer un llamado remoto.

o Marshalling: es el proceso de codificacin de los parmetros.


o Stub: es un objeto que encapsula el mtodo que deseamos invocar
remotamente. As el llamado remoto es semejante a un llamado local.
ste prepara informacin con la identificacin el objeto remoto a
invocar, el mtodo a invocar y codificacin de los parmetros
(Marshalling).
o Skeleton: es el objeto del lado del servidor que decodifica los
parmetros, ubica el objeto llamado, llama el mtodo deseado,
codifica el valor retornado, y enva la informacin de regreso al stub.

RMI posee un mecanismo para cargar clases dinmicamente desde otro lugar.

SISTEMAS DISTRIBUIDOS
2.7 PROCEDIMIENTOS REMOTOS

La comunicacin entre cliente y servidor est basada en el protocolo peticin-


respuesta.
43 Es decir, el cliente invoca la peticin del servicio enviando un
mensaje al servidor; el servidor realiza el servicio requerido y le devuelve la
respuesta al cliente en otro mensaje. El cliente siempre debe esperar el
mensaje de respuesta del servidor antes de continuar su ejecucin, incluso
aunque no espere ningn resultado (pues podra haber habido algn error).

Estas operaciones se realizan mediante las conocidas primitivas de envo y


recepcin de mensajes. Por lo que podemos apreciar hasta ahora, para realizar
un servicio local, normalmente se utilizan las tradicionales llamadas a
procedimientos, mientras que, si el servicio requerido es remoto, hay que
acudir a las primitivas disponibles de envo y recepcin de mensajes.

Se nos presentan varios problemas:

o El cliente debe saber si el servicio que necesita es local o remoto


antes de solicitarlo.
o En caso de que el servicio se realice de forma remota, el cliente
debe conocer la direccin del servidor.
o El cliente debe saber la disposicin exacta de los parmetros en el
mensaje que debe enviar al servidor, as como el formato del
mensaje de respuesta.

Parece que este tipo de servicio adolece de la principal propiedad de los


sistemas distribuidos: la transparencia. Esto hace pensar que sera bueno aislar
o esconder el mecanismo de comunicacin de los procesos de su
implementacin. Con esto se conseguira:

o El programador podra concentrarse en escribir programas que


solicitan servicios, independientemente de si la ejecucin va a
tener lugar en un entorno centralizado o distribuido.
o Ni el programador ni el cliente necesitan conocer la direccin de la
mquina en la que reside el servidor en el momento de la
peticin.
o Tampoco necesita el cliente conocer el tipo de mquina o sistema
operativo del servidor para ubicar convenientemente los
parmetros en el mensaje.

Para conseguir esto, el cliente solamente debe realizar llamadas a


procedimientos, de tal forma que, dependiendo de cada caso, la ejecucin del
servicio solicitado tendr lugar en la propia mquina o en una remota. El
mecanismo mediante el cual la ejecucin de un procedimiento tiene lugar en

SISTEMAS DISTRIBUIDOS
una mquina remota se denomina Llamada a Procedimiento Remoto o RPC
(Remote Procedure Call).

44

CAPTULO 3

SISTEMAS DISTRIBUIDOS
45
3.1 ALMACENAMIENTO DE ALTA
DISPONIBILIDAD

Un clster de alta disponibilidad es un conjunto de dos o ms mquinas que se


caracterizan por mantener una serie de servicios compartidos y por estar
constantemente monitorizndose entre s. Podemos dividirlo en dos clases:

o Alta disponibilidad de infraestructura: Si se produce un fallo


de hardware en alguna de las mquinas del cluster, el software de
alta disponibilidad es capaz de arrancar automticamente los
servicios en cualquiera de las otras mquinas del cluster (failover). Y
cuando la mquina que ha fallado se recupera, los servicios son
nuevamente migrados a la mquina original (failback). Esta
capacidad de recuperacin automtica de servicios nos garantiza la
alta disponibilidad de los servicios ofrecidos por el cluster,
minimizando as la percepcin del fallo por parte de los usuarios.
o Alta disponibilidad de aplicacin: Si se produce un fallo
del hardware o de las aplicaciones de alguna de las mquinas
del cluster, el software de alta disponibilidad es capaz de arrancar
automticamente los servicios que han fallado en cualquiera de las
otras mquinas del cluster. Y cuando la mquina que ha fallado se
recupera, los servicios son nuevamente migrados a la mquina
original. Esta capacidad de recuperacin automtica de servicios nos
garantiza la integridad de la informacin, ya que no hay prdida de
datos, y adems evita molestias a los usuarios, que no tienen por qu
notar que se ha producido un problema.

No hay que confundir un cluster de alta disponibilidad con un cluster de alto


rendimiento. El segundo es una configuracin de equipos diseado para
proporcionar capacidades de clculo mucho mayores que la que proporcionan
los equipos individuales (vanse por ejemplo los sistemas de tipo Cluster
Beowulf), mientras que el primer tipo de cluster est diseado para garantizar
el funcionamiento ininterrumpido de ciertas aplicaciones.

Clculo de la Disponibilidad

En un sistema real, si falla uno de los componentes, es reparado o sustituido


por un nuevo componente. Si este nuevo componente falla, es sustituido por
otro, y as sucesivamente. El componente fijo se considera en el mismo estado

SISTEMAS DISTRIBUIDOS
que un nuevo componente. Durante su vida til, uno de los componentes
puede ser considerado en uno de estos estados: Funcionando o en Reparacin.
El estado funcionando indica que el componente est operacional y el en
reparacin significa que ha fallado y todava no ha sido sustituido por un nuevo
componente.

En 46
caso de defectos, el sistema va de funcionando en modo reparacin, y
cuando se hace la sustitucin volver al estado funcionando. Por lo tanto,
podemos decir que el sistema tiene durante su vida, una media de tiempo para
presentar fallas (MTTF) y un tiempo medio de reparacin (MTTR). Su tiempo de
la vida es una sucesin de MTTFs y MTTRs, a medida que este va fallando y
siendo reparado. El tiempo de vida til del sistema es la suma de MTTFs en
ciclos MTTF + MTTR ya vividos.

En forma simplificada, se dice que la disponibilidad de un sistema es la relacin


entre la duracin de la vida til de este sistema y de su tiempo total de vida.
Esto puede ser representado por la frmula:

o Disponibilidad = MTTF / (MTTF + MTTR)

En la evaluacin de una solucin de Alta Disponibilidad, es importante tener en


cuenta si en la medicin de MTTF son vistos como fallas las posibles paradas
planificadas.

3.2 SERVICIOS LOCALES DE ALTA


DISPONIBILIDAD
La alta disponibilidad de las transacciones de servicios web, las transacciones
de servicios web se distribuyen entre aplicaciones en distintos servidores o
clsteres o en sistemas que no son sistemas WebSphere Application Server,
debe en cuenta la afinidad de direccionamiento de las transacciones de las
solicitudes de servicios web, as como el impacto en la alta disponibilidad del
servicio de transacciones en WebSphere Application Server. Si un cliente
remoto enva una serie de solicitudes transaccionales a un servicio de destino
que se despliega en un clster, generalmente preferir que la primera solicitud
establezca una afinidad transaccional de la aplicacin cliente con el servidor de
destino, de forma que las solicitudes posteriores de la misma transaccin se
entreguen al mismo servidor de destino. Cuando se completa la transaccin,
tambin se envan mensajes del protocolo de transacciones a este mismo
servidor de destino, hasta que se produzca una migracin tras error de alta
disponibilidad de transaccin.

SISTEMAS DISTRIBUIDOS
Servidores

El servidor es el elemento que proporciona la funcionalidad o servicio en un


sistema distribuido. Este servicio puede consistir en compartir datos, informar
sobre una solicitud, compartir recursos fsicos, imprimir, etc. Generalmente se
considera que un servidor tiene una posicin reactiva en el sistema, ya que se
47
encuentra inactivo hasta que recibe una peticin de servicio. Cuando recibe la
peticin, la procesa y enva la respuesta al solicitante, para despus quedar
nuevamente inactivo en espera de una nueva peticin. En un sistema, el modo
de ejecucin de un servidor es continuo, ya que se inicializa al arrancar el
sistema y est en operacin hasta que el sistema se apaga. Un servidor tiene
dos modos de arranque:

o Esttico.
o Dinmico.

Un arranque esttico sucede cuando el servidor se arranca como parte del


arranque general del sistema donde se encuentra localizado. En contraste, un
arranque dinmico sucede cuando un servidor es activado por un proceso del
cliente que solicite sus servicios.

Los servidores forman parte importante del middleware bsico de un sistema


distribuido. Entre las caractersticas fundamentales de los servidores destaca
que pueden ser reusables y relocalizarse. Los servidores pueden ser usados en
diferentes tareas, entre las que se pueden destacar las siguientes:

o Servidores de datos.
o Servidores de archivos.
o Servidores de impresin.
o Servidores de correo.
o Servidores de programas.
o Servidores de bases de datos.
o Servidores de fecha y hora.
o Servidores de multimedia.
o Servidores de transacciones.
o Servidores web.

La comunicacin entre procesos es un factor clave para construir sistemas


distribuidos, los paradigmas de comunicacin ms usados en sistemas dis-
tribuidos son:

o Cliente - servidor.
o Llamada a un procedimiento remoto (RPC).
o Comunicacin en grupo.

Los conceptos fundamentales que deben ser considerados para la comu-


nicacin son:

SISTEMAS DISTRIBUIDOS
o Los datos tienen que ser aplanados antes de ser enviados.
o Los datos tienen que ser representados de la misma manera en la fuente y
destino.
o Los datos tienen que empaquetarse para ser enviados.
o Usar operaciones de send para enviar y receive para recibir.
o Especificar la comunicacin, ya sea en modo bloqueante o no bloqueante.
o Abstraccin del mecanismo de paso de mensaje.
48
o La confiabilidad de la comunicacin. Por ejemplo, usar TCP en lugar de UDP.

3.2.1 ARREGLOS DE DISCOS


Los arreglos redundantes de discos econmicos originales son 5, desde el RAID
1 hasta el RAID 5, y de manera similar comnmente se hace referencia a un
arreglo de discos sin redundancia como RAID 0, aunque dado que no tiene
redundancia quiz el nombre ms apropiado sera AID.

Con el tiempo y la creacin de circuitos ms veloces nacieron nuevos


esquemas y arquitecturas que superan a los niveles originales en diversas
caractersticas.

RAID 0: Arreglo estriado (o en franjas) de discos sin tolerancia a fallas.

RAID nivel 0 requiere al menos dos platinas de disco para poder ser
implementado.

Funcionamiento
RAID 0 implementa un arreglo de discos en franjas en donde los datos son
divididos en bloques y cada bloque es almacenado en un disco distinto.

Ventajas
En esta configuracin un arreglo de discos mejora el desempeo de
entrada/salida al distribuir la carga de escritura y lectura a travs de varios

SISTEMAS DISTRIBUIDOS
canales y platinas de disco. El mejor desempeo es alcanzado cuando los datos
son distribuidos en varios controladores con slo un disco por controlador.

o No hay sobrecarga por el clculo de paridad

o Diseo simple
49
o Sencillez de implementacin.

Desventajas

o No es un RAID debido a que no es redundante ni tolerante a fallas

o La falla de una platina resulta en la prdida de los datos de todo el


arreglo.

Recomendaciones

o Nunca se debe de utilizar en ambientes de misin crtica.

o Es muy til en produccin y edicin de vdeo e imgenes, as como


aplicaciones de pre impresin.

o En general para aplicaciones que requieran de un alto ancho de banda.

RAID 1: Espejo y duplicacin

RAID nivel 1 requiere al menos dos platinas de disco para poder ser
implementado. Para mejor desempeo, el controlador debe de ser capaz de
realizar dos lecturas concurrentes independientes por par espejo o dos
escrituras duplicadas por par de discos en espejo.

Funcionamiento
RAID 1 implementa un arreglo de discos en espejo en donde los datos son
ledos y escritos de manera simultnea en dos discos distintos.

SISTEMAS DISTRIBUIDOS
Ventajas
En esta configuracin un arreglo de discos puede realizar una escritura o dos
lecturas por par en espejo, duplicando la tasa de transaccional de lectura de
discos simples con la misma tasa transaccional de escritura que los discos
tradicionales. Una redundancia total de datos significa que no es necesaria la
reconstruccin
50 en caso de falla de algn disco, sino slo una copia.

o La tasa de transferencia por bloques es la misma que en los discos


tradicionales.

o Bajo ciertas circunstancias RAID 1 puede soportar fallas simultneas


mltiples de discos.

o Es el diseo RAID ms simple.

o Sencillez de implementacin.

Desventajas

o Es el que tiene mayor derroche de disco de todos los tipos de RAID, con
el 100% de derroche.

o Tpicamente la funcin RAID es llevada a cabo por el software del


sistema cargando a la UCP o al servidor, degradando el desempeo del
mismo.

o Probablemente no soporte cambio en caliente de un disco daado


cuando se implementa por software.

Recomendaciones

o Buscar una implementacin por hardware.

o Funciones administrativas y financieras.

o En general para aplicaciones que requieran de una alta disponibilidad.

SISTEMAS DISTRIBUIDOS
RAID 2: Cdigo de Correccin de Errores con cdigo de Hamming

51

RAID nivel 2 requiere al menos dos platinas de disco para poder ser
implementado. Para mejor desempeo, el controlador debe de ser capaz de
realizar dos lecturas concurrentes independientes por par espejo o dos
escrituras duplicadas por par de discos en espejo.

Funcionamiento
Cada bit de cada palabra es escrito a un disco, 4 en el ejemplo grfico. Cada
palabra tiene su Cdigo Hamming de Correccin de Errores (CHCE) almacenada
en los discos CHCE. Durante la lectura el CHCE verifica y corrige los datos o
errores especficos en los discos.

Ventajas
En esta configuracin un arreglo de discos puede realizar una escritura o dos
lecturas por par en espejo, duplicando la tasa de transaccional de lectura de
discos simples con la misma tasa transaccional de escritura que los discos
tradicionales. Una redundancia total de datos significa que no es necesaria la
reconstruccin en caso de falla de algn disco, sino slo una copia.

o Capacidad de correccin de errores al paso.

o Es posible alcanzar tasas de transferencia muy altas.

o A mayor tasa de transferencia requerida, es mejor la relacin de los


discos de datos a los discos CHCE.

o El diseo del controlador es relativamente simple comparado con los


niveles 3,4 y 5.

Desventajas

o Puede tener una alta relacin de los discos CHCE a los discos de datos
con tamaos de palabra pequeos, tornando el sistema ineficiente.

o Costo de nivel de entrada muy alto, requiere de una muy alta tasa de
transferencia para justificarlo.
SISTEMAS DISTRIBUIDOS
o No existen implementaciones comerciales ya que comercialmente no es
viable.

RAID 3: Transferencia en paralelo con paridad


52

RAID nivel 3 requiere cuando menos 3 discos para funcionar.

Funcionamiento
El bloque de datos es subdividido en bandas y escrito en los discos de datos.
Las bandas de paridad son generadas durante la escritura, almacenadas en los
discos de paridad y verificado durante la lectura

Ventajas

o Muy alta tasa de transferencia de lectura.

o Muy alta tasa de transferencia de escritura.

o La falla de un disco tiene impacto poco relevante para la capacidad de


transferencia.

o Baja relacin de discos de paridad contra los de datos, lo que aumenta la


eficiencia.

Desventajas

o En el mejor de los casos la tasa de transacciones es la misma que en


configuraciones de un solo disco.

o Diseo de controlador relativamente simple.

o Muy complejo y demandante de recursos para implementarse por


software.

Recomendaciones

o Produccin de video y transmisiones digitales en lnea.

SISTEMAS DISTRIBUIDOS
o Edicin de imgenes.

o Edicin de vdeo.

o Aplicaciones de pre edicin.

53
o Cualquier tipo de aplicacin que requiera alta densidad de transferencia
de datos.

RAID 4: Discos independientes de dato con disco compartido de


paridad

RAID nivel 4 requiere cuando menos 3 discos para funcionar.

Funcionamiento
Cada bloque completo es escrito en un disco de datos. La paridad para bloques
del mismo rango es generada durante las escrituras y almacenado en el disco
de paridad, y verificado durante las lecturas.

Ventajas

o Muy alta tasa transaccional de lectura.

o Baja relacin de discos de paridad contra los de datos, lo que aumenta la


eficiencia.

o Alta tasa de transferencia agregada para lectura.

Desventajas

o Tiene la peor tasa transaccional de escritura, as como para escritura


agregada.

o Diseo muy complejo de controlador.

SISTEMAS DISTRIBUIDOS
o Reconstruccin de datos compleja e ineficiente en caso de falla de disco.

o Tasa de transferencia en lectura por bloques igual a la de un disco


simple.

RAID 5: Discos independientes de datos con bloques distribuidos de


54 paridad.

RAID nivel 5 requiere cuando menos 3 discos para funcionar.

Funcionamiento
Cada bloque de datos completo es escrito en un disco de datos; la paridad para
los bloques en el mismo rango es generada durante las escrituras, almacenada
en locaciones distribuidas y verificada durante las lecturas.

Ventajas

o Tiene la ms alta tasa de transacciones de lectura.

o Regular tasa de transacciones de escritura.

o Baja relacin entre los discos de paridad contra los discos de datos
ofreciendo una alta eficiencia.

o Buena tasa de transferencia de agregado.

o Es el nivel de RAID ms verstil.

Desventajas

o La falla de un disco tiene impacto sensible en el desempeo.

o El diseo del controlador es el ms complejo.

o La reconstruccin de datos en caso de falla de un disco es compleja,


comparada con RAID 1.

o Tasa de transferencia en bloques individuales de datos igual que la de un


disco sencillo.
SISTEMAS DISTRIBUIDOS
Recomendaciones

o Servidores de aplicaciones y archivos.

o Servidores de bases de datos.

55
o Servidores Web, correo electrnico y noticias.

o Servidores de Intranet.

3.2.2 MANEJO DE TRANSACCIONES

En general, en los sistemas distribuidos se realizan dos acciones que se pue den
considerar como contrastantes. La primera accin consiste en que los clientes no
deben intervenir en las acciones que realiza otro cliente, mientras que la segunda
accin consiste en que el servidor debe ser usado por los clientes para compartir e
intercambiar informacin entre ellos.

Para el manejo de este tipo de situaciones en los datos compartidos existe una
herramienta conceptual muy til conocida como transaccin, la cual es una
unidad indivisible de manipulacin de informacin.

Las transacciones en los sistemas distribuidos reciben el nombre de transacciones


atmicas, siendo estas un mecanismo de alto nivel que oculta los aspectos
tcnicos de sincronizacin, como la exclusin mutua, interbloqueos y recuperacin
de fallas.

Algunas caractersticas de las transacciones son:

o Que agrupa operaciones en una transaccin en las que todas terminan o


ninguna es realizada, bajo esta ltima situacin se regresa al estado inicial.
o Que, para implementarlas, el servidor debe de encapsular (aislar) los
recursos que maneja y administra.
o Que las transacciones intentan eliminar algunos problemas debidos a las
concurrencias. Por ejemplo, si dos usuarios ejecuten al mismo tiempo
Rename (x,y) y Rename (x, z) en un servicio de directorio.

Modelo de transacciones

Por medio de este se puede modelar con mayor precisin las transacciones a
travs del uso de procesos independientes. Entre los puntos a considerar estn:

o Almacenamiento estable: Permite que la informacin perdure a todo, con


excepcin de las catstrofes, para lo cual se realiza un disco espejo.

SISTEMAS DISTRIBUIDOS
o Primitivas de transaccin: Son proporcionadas por el sistema operativo o
compilador, como begin-transaction, end - transaction, abort- transaction,
read, write.
o Propiedades de las transacciones: Son las propiedades fundamentales de las
transacciones y se indican como ACID, si se cumple con lo siguiente:
Atomicidad: Las transacciones se ejecutan completamente o
se abortan.
56 Consistencia: El resultado de una transaccin no debe de
depender del nmero de clientes concurrentes.
Aislamiento: Los efectos intermedios de las transacciones no
deben de ser visibles a otras.
Durabilidad: La informacin debe de guardarse en disco una
vez que la transaccin se ejecuta exitosamente.
o Si una transaccin se aborta, es necesario un procedimiento de
recuperacin para eliminar las operaciones ya realizadas.

Recuperacin de transacciones

Un servicio de transacciones tiene que ser capaz de abortar transacciones y


recuperarse de los efectos ocasionados por ello. Entre algunos de los
problemas relacionados al aborto de las transacciones, se pueden citar los
siguientes: lecturas sucias, cascada de aborto, y escrituras prematuras. El
problema de lecturas sucias ocurre cuando una transaccin exitosa lee datos
que han sido afectados por una transaccin abortada. Una solucin a este
problema es retrasar la decisin de declarar exitosa una transaccin hasta que
todas las transacciones relacionadas sean exitosas. Para el problema de
cascada de aborto se propone como solucin que se retrasen las lecturas
hasta que las transacciones que se encuentran escribiendo al mismo dato,
aborten o tengan xito. El problema de las escrituras prematuras se presenta
cuando dos transacciones escriben al mismo dato al mismo tiempo. Para esto
se propone como solucin retrasar las operaciones de escritura. Usando
versiones tentativas normalmente se pueden evitar retrasos.

Transacciones anidadas

Una transaccin anidada (TA) est formada por un conjunto de transacciones,


cada una de las cuales puede estar a su vez formada por transacciones, y as
sucesivamente.

SISTEMAS DISTRIBUIDOS
57

Las transacciones anidadas son tiles para:

o Dar una jerarqua a las transacciones segn su importancia.


o Especificar la concurrencia.
o Mejorar el control de las transacciones. Por ejemplo, una transaccin
anidada puede abortar sin que su padre tenga que hacerlo.
o Modelar transacciones distribuidas, las cuales son transacciones cuyas
partes se realizan en diferentes sitios

Transacciones distribuidas

En este tipo de transacciones, una transaccin implica a muchos servidores,


por lo que existe la posibilidad de datos replicados. Un coordinador es el primer
servidor que atiende las transacciones y es responsable.

o Abortar o declarar exitosa la transaccin.


o Utilizar nuevos servidores para la transaccin.

3.3 SERVICIOS DISTRIBUIDOS DE ALTA


DISPONIBILIDAD
Single System Image

SISTEMAS DISTRIBUIDOS
o SSI provee una visin centralizada de los recursos del cluster.
o Maximiza el aprovechamiento de recursos mediante resource poolsy
administracin.
o Brinda mayor escalabilidad y abstraccin

Un clster puede brindar as servicios equivalentes a un computador SMP ms


58
costoso.

Beneficios de SSI

o Uso transparente de recursos


o Balanceo de cargas y migracin de procesos transparente
o Mas confiabilidad y mayor disponibilidad
o Mayor perfomance y mejor tiempo de respuesta
o Simplificacin de la administracin

Servicios de SSI

o nico punto de acceso a los servicios del cluster


o nica jerarqua de filesystems
o nico punto de control
o Virtual Networking nica
o nico espacio de memoria
o nica interface de usuario: CDE, MS-
o Windows, KDE, Gnome, Web, etc.

Servicios de Disponibilidad:

o Espacio de E/S nico: cada nodo accede a todos los perifricos


independientemente de su localizacin.
o Espacio de Procesos nico: todos los procesos, independientemente del
nodo en que se crean pueden comunicarse con el resto en forma
transparente.
o Checkpointing: salva el estado de los procesos y los resultados
intermedios a disco para soportar Rollback cuando el nodo falla.

3.3.1 SERVICIOS DE ALMACN DE


ARCHIVOS

Un archivo es una coleccin no contigua de bloques o conjunto de apuntadores


a bloques del archivo en el ndice de bloques que guardan una interfaz con el
SISTEMAS DISTRIBUIDOS
mdulo cliente. Un archivo es la abstraccin de datos guardados en
almacenamiento secundario. Un directorio es un archivo especial que permite
organizar los archivos. El sistema de archivos en un sistema operativo
distribuido se encarga de la organizacin, almacenamiento, nombrado,
reparticin y proteccin de archivos. Importa notar que un sistema de archivos
no 59
es igual a una base de datos. Las transparencias requeridas en un sistema
de archivos distribuidos son

o Acceso.
o Localizacin.
o Concurrencia.
o Falla.
o Desempeo.

Servicios de archivos

Otros requerimientos para los sistemas de archivos distribuidos son


heterogeneidad de replicacin y de migracin. Los mdulos que constituyen el
sistema de archivos son:

o Servicio de archivos planos: Est compuesto de mdulos de archivos y


de acceso a archivos. Se encarga de modificar el contenido de los
archivos.
o Servicio de directorios: Est constituido por mdulos de directorios y de
control de acceso. Se encarga de definir un alfabeto y una sintaxis para
formar los nombres de archivos.
o Mdulo cliente: Est compuesto de mdulo de bloques y dispositivos. Se
encarga de proveer al usuario de una interfaz de programacin. Tambin se
ocupa de las rutinas de bajo nivel para acceder a bloques de memoria y
dispositivos.

3.3.2 SERVICIOS DE DISTRIBUCIN DE


INFORMACIN

La Interface de un Servicio de Archivos proporciona toda la informacin


necesaria sobre cada archivo individual como pueden ser sus atributos.

La funcin ms importante de un servicio de archivos corresponde a su


mantenimiento, ya que este servicio se encarga de todas las operaciones
disponibles de lectura y escritura como pueden ser create, read, write, delete.

SISTEMAS DISTRIBUIDOS
Los usuarios de archivos se pueden dividir en dos tipos:

o Modelo de Carga y Descarga: ste slo proporciona dos operaciones


principales que son la lectura y escritura del archivo. La operacin consiste
en transferir todo un archivo hacia el cliente y todos los movimientos de
operacin sobre el archivo, lo realiza el cliente, cuando ha dejado de utilizar
el archivo, ste se es regresado hacia el servidor en forma completa. (con
60 todos los cambios realizados actualmente).

o Modelo de acceso remoto: Este tipo de servicios proporciona un gran


nmero de operaciones para abrir y cerrar archivos leer y escribir partes de
archivos, moverse a travs de un archivo, as como examinar y modificar los
atributos de uno o varios archivos.

3.4 SERVICIOS DE DIRECTORIO Y


BSQUEDA

El servicio de directorio proporciona una transformacin entre nombres de


texto para los archivos y sus UFID (Unique File Identifiers). Una UFID tiene el
formato indicado. El UFID puede ser obtenido por los clientes de un archivo
indicando su nombre de texto al servicio de directorio. Un UFID es nico entre
todos los archivos de todas las computadoras y es difcil de duplicar por
personas externas. El UFID no es reusable y contiene informacin sobre la
direccin fsica. Permite que los archivos sean divididos en grupos. Los archivos
contienen campos de permisos encriptados.

Funciones del servicio de directorio

o Mapeo de nombres a UFIDs.


o Organizacin de los archivos planos en un rbol de directorios.
o Control del acceso a archivos.

Se considera la identificacin de la localizacin donde se encuentra el servicio


o el elemento como parte de un esquema de bsqueda o traduccin de nombre
(direccin) ya que es necesario que el sistema conozca todos los caminos
disponibles (vas de acceso) entre los objetos y los servicios. Principalmente se
consideran 2 aspectos:

SISTEMAS DISTRIBUIDOS
o Encontrar una direccin en la red en donde se encuentre el servicio
funcionando.
o Encontrar una ruta donde la solicitud del servicio encuentre la direccin
donde se ubica.

Una direccin puede ser identificada de 2 formas:


61
o Enviando mensajes a la red (Broadcast). Busca un servicio en forma general.
o Enviando directamente un mensaje a un servidor de nombres que devuelve
la respuesta.

Dentro de un sistema de manejo de nombres se tienen varios componentes


necesarios que permiten hacer la funcionalidad de traduccin o interpretacin
de direcciones fsicas, estos componentes son Server name, Agent, Cliente.

Todo sistema de nombres debe contener una estructura definida que garantice
el acceso ms ptimo hacia los elementos que integran el sistema distribuido.
Estas estructuras comnmente son implementadas dentro de los servidores de
nombres y sus tipos son:

o Jerrquico.
o Centralizado.
o Replicado.
o Descentralizado.
o Distribuida.

3.5 SERVICIOS DE ARCHIVOS EN RED


Sistema de archivos de red es un sistema de archivos de computadoras que
sirve para compartir archivos, impresoras y otros recursos como un
almacenamiento persistente en una red de computadoras. El primer sistema de
este tipo fue desarrollado en la dcada de 1970, y en 1985 Sun Microsystems
cre el sistema de archivos de red NFS el cual fue ampliamente utilizado como
sistema de archivos distribuido. Otros sistemas notables utilizados fueron el
sistema de archivos Andrew (AFS) y el sistema Server Message Block SMB,
tambin conocido como CIFS.

Sistema NFS (Network File Systems)

El sistema de archivos NFS fue diseado por la compaa Sun Microsystems en


1985, con el propsito de ejecutarse en una red local (LAN). Entre las
caractersticas de un sistema NFS se puede destacar lo siguiente:

o Es el estndar para tener acceso a archivos distribuidos en UNIX.


o Utiliza el modelo cliente - servidor y ambos se encuentran en el ncleo del
sistema operativo.
SISTEMAS DISTRIBUIDOS
o Permite la heterogeneidad de arquitecturas.
o Permite las transparencias de acceso, localizacin, fallas y desempeo.
o Alcanza transparencia de localizacin.
o La transparencia de migracin es implementada parcialmente.
o Las transparencias de replicacin, concurrencia y escalabilidad no son
implementadas.
o NFS utiliza RPC. Es un servidor sin estados, por lo que no mantiene abiertos
62
los archivos ni guarda informacin sobre ellos.

Para su implementacin en UNIX, NFS define nuevas capas en el sistema de


archivos de UNIX.

NFS utiliza un sistema de archivos virtuales VFS que puede distinguir entre
archivos locales y archivos remotos. Usa un v-node en lugar de un i-node. Al v-
node se le aade un identificador de sistema. NFS emula la semntica del
sistema de archivos de UNIX integrndolo en el ncleo, por lo que no se
requiere recompilar libreras. El cach de clientes tiene el problema de las
diferentes versiones de archivos, ya que la escritura de un cliente no se
traduce en la inmediata modificacin de copias del cach en los otros clientes.
Las estampillas de tiempo son usadas por el NFS para validar bloques de
cach.

Inconvenientes del NFS

Entre los inconvenientes que presenta NFS se pueden mencionar las


siguientes:

o No es eficiente para sistemas distribuidos grandes.


o Las implementaciones cach inhiben a tener un pobre desempeo en las
operaciones de escritura.

Sistema AFS (Andrew File Systems)

SISTEMAS DISTRIBUIDOS
Este sistema de archivos distribuido fue desarrollado en Carnegie Mellon
University (CMU) en 1986. El objetivo de AFS es compartir informacin a gran
escala (10,000 estaciones de trabajo). Al igual que en Network File Systems
(NFS), en AFS no hay que modificar programas de UNIX.

La estrategia clave para alcanzar escalabilidad en AFS es a travs del manejo


63
de cach de archivos completos en los nodos clientes. El mecanismo de AFS
considera lo siguiente:

o Un proceso cliente realiza una operacin open en un espacio compartido,


entonces el servidor enva una copia del archivo al cliente.
o El cliente realiza todas las operaciones en la copia local.
o Una vez que el archivo es cerrado, se enva la versin modificada al
servidor, mientras que el cliente mantiene la copia local.

La estrategia de diseo de AFS est basado en UNIX, y considera las siguientes


observaciones

o Usar archivos pequeos.


o Las lecturas se realizan con ms frecuencia que las escrituras en una
relacin de seis a una.
o El acceso a los archivos es secuencial.
o Se comparten pocos archivos.
o Generalmente un solo usuario es el responsable de modificar los archivos
compartidos.

Entre las principales caractersticas del sistema AFS, se pueden indicar las
siguientes:

o Los cachs usados son del orden de 100 MB.


o El tamao de los paquetes para la transferencia de archivos es de 64 KB.
o El uso de bases de datos no est considerado.
o Se usan directorios locales o compartidos para colocar los archivos.
o Est constituido principalmente por dos componentes de software a nivel
usuario.
Vice, en el servidor.
Venus, en el cliente.

o Cuando muchos clientes usan el AFS, se puede comparar favorablemente


con respecto al NFS.
o Intercepta las llamadas a operaciones de archivos.
o Permite guardar informacin de estado sobre las copias de los archivos.
o Emplea rplicas de archivos, por lo que una nueva escritura deber de ser
hecha en todas las copias distribuidas.
o Soporta seguridad, proteccin y heterogeneidad.
o Los usuarios pueden cambiar de mquinas y usar el mismo nombre. Este
proceso deber ser transparente, excepto por algunas fallas de ejecucin
iniciales que son necesarias al poner los archivos de usuarios en las
mquinas locales.

SISTEMAS DISTRIBUIDOS
64

DCE: Distributed File System es un sistema de ficheros distribuido de DCE que


permite agrupar archivos repartidos en diferentes mquinas, en un espacio de
nombres nico. Est basado casi por completo en el sistema de ficheros AFS
pero con ligeras diferencias.

3.6 REPLICACIN

La replicacin significa mantener copias de una informacin en mltiples


computadoras. Este recurso es ampliamente usado en los sistemas
distribuidos, debido a que proporciona un mejor rendimiento, alta
disponibilidad y tolerancia a fallas. Algunos ejemplos donde se usa la
replicacin son:

o Almacenamiento en cach en los servidores web y servidores proxy web.


o El servicio de nombres DNS. 9.2.1

Beneficios de usar replicacin en los sistemas distribuidos

Mejoras del rendimiento

SISTEMAS DISTRIBUIDOS
Entre las caractersticas con respecto al rendimiento del sistema distribuido
que deben de ser observadas al replicar datos se pueden mencionar las
siguientes:

o La replicacin se implementa principalmente a travs de cachs en clientes


o servidores.
o Es importante mantener copias de los resultados obtenidos en llamadas
65
anteriores al servicio para evitar o reducir el coste de llamadas idnticas.
o Se evita el tiempo de latencia derivado del clculo del resultado o de
realizar consultas a otros servidores.
o La replicacin de datos con actualizaciones muy frecuentes en la red genera
un costo en el uso de protocolos de intercambio y actualizacin, adems de
limitar la efectividad de la rplica.

Alta disponibilidad

Entre las caractersticas con respecto a la disponibilidad del sistema distribuido


que deben de ser observadas al replicar datos se pueden mencionar las
siguientes:

o La proporcin de tiempo que un servicio est accesible con tiempos de


respuesta razonables, que debe de ser cercana al 100%.
o Existen prdidas de disponibilidad debido a los siguientes factores:
Fallas en el servidor. Si se replica n veces el servidor, la disponibilidad
ser 1-pn. Por ejemplo, paran = 2 servidores, la disponibilidad es 1 -
0.052= 1 0.0025 = 99.75%.
Particiones de red o desconexiones.
Operacin desconectada (son aquellas desconexiones de
comunicacin que a menudo no se planifican y son un efecto
secundario de la movilidad del usuario).

Tolerancia a fallas

Entre las caractersticas respecto a la tolerancia a falla en los sistemas


distribuidos, se pueden mencionar las siguientes:

o Una alta disponibilidad no implica necesariamente correccin, esto se debe


a que puede haber datos no actualizados, o inconsistentes, originados por
procesos concurrentes.
o Se puede utilizar la replicacin para alcanzar una mayor tolerancia a fallas.
Ante una cada o suspensin de servidores; por ejemplo, si se tienen
n servidores, pueden fallar n-1 sin que el servicio sufra alteracin.
Ante fallas bizantinas, es decir, si f servidores presentan fallas
bizantinas, un sistema con 2f+1 servidores proveera un servicio
correcto.

Requisitos para realizar la replicacin

Entre los requisitos ms importantes que se deben considerar al implementar


la replicacin en un sistema distribuido, estn:

SISTEMAS DISTRIBUIDOS
o Transparencia.
o Consistencia.

El requisito de transparencia implica que los clientes no son conscientes de que


hay mltiples copias del recurso al que ellos estn accediendo. Para los
usuarios, solo existen recursos lgicos individuales. Por otro lado, la
66
consistencia implica que las operaciones sobre un conjunto de objetos
replicados deben de dar resultados que sigan la especificacin de correccin
definida para esos objetos. De acuerdo con el tipo de aplicacin, la consistencia
puede ser ms o menos estricta.

Modelo general de gestin de rplica

Un modelo de sistema general para la gestin de rplicas. Describe el papel de


los sistemas de comunicacin grupal en la consecucin de la tolerancia a fallas
a travs de la replicacin.

Los componentes principales de esta arquitectura de gestin de datos


replicados son:

o Gestor de rplicas.
o Frontal (front-end).

El gestor de rplicas son los componentes que almacenan las rplicas de un


determinado objeto o servicio y operan sobre ellas. Frontal (FE) es el
componente o interfaz que atiende las llamadas de los clientes y se comunica
con los gestores de rplicas.

En general, cinco fases estn involucradas en el desempeo de una nica


solicitud a los objetos replicados:

o La peticin es enviada por el frontal a uno o ms gestores con las siguientes


opciones:
o Se enva la peticin a un gestor y este la reenva a otros.
o Multidifundir la peticin a varios gestores.
o Los gestores se coordinan para ejecutar la peticin de manera consistente.

Los tipos de ordenacin para que los gestores manipulen las rplicas son:
SISTEMAS DISTRIBUIDOS
o Ordenamiento FIFO.
o Ordenamiento casual.
o Ordenamiento total.
o Se ejecuta la peticin, la cual podra ser realizada de manera tentativa.
o Se llega a un acuerdo o consenso antes de consumar la ejecucin.
o Uno o ms gestores de rplicas entrega una respuesta al frontal.
67
Servicios de tolerancia a fallas basados en replicacin

Replicacin pasiva

En la replicacin pasiva existe un gestor de rplicas primario y uno o ms


gestores secundarios tambin conocidos como respaldos o esclavos. Los
frontales se comunican con el gestor primario, quien ejecuta las operaciones y
manda copias a los respaldos. Si el gestor de rplicas primario falla, entonces
un gestor de rplicas de respaldo lo sustituye.

Una replicacin pasiva tiene las siguientes fases de ejecucin:

o Peticin.
o Coordinacin.
o Ejecucin.
o Acuerdo.
o Respuesta.

Durante la fase de peticin, el frontal enva la peticin al gestor primario, quien


activa la fase de coordinacin y ejecuta las peticiones siguiendo una
ordenacin FIFO. Se realiza la fase de ejecucin de la peticin y se almacena la
respuesta. Si es una peticin de actualizacin, entonces en la fase de acuerdo
el gestor primario enva la actualizacin a todos los respaldos, quienes
confirman la recepcin. Finalmente, en la fase de respuesta, el gestor primario
enva la respuesta correspondiente al frontal. La replicacin pasiva tolera fallas
de procesos, pero no tolera fallas bizantinas. El frontal requiere poca
funcionalidad, sin embargo, este esquema de replicacin es propenso a
problemas de cuellos de botella en el gestor primario.

SISTEMAS DISTRIBUIDOS
Replicacin activa

En la replicacin activa todos los gestores de rplicas tienen el mismo rol. Los
frontales multidifunden las peticiones a todos los gestores y todos los frontales
procesan la peticin de manera idntica pero independiente.

68

Al igual que la replicacin pasiva, una replicacin activa tiene las siguientes
fases de ejecucin:

o Peticin.
o Coordinacin.
o Ejecucin.
o Acuerdo.
o Respuesta.

Sin embargo, las actividades que se realizan en cada fase difieren


sustancialmente de las actividades que se hacen en la replicacin pasiva.
Durante la fase de peticin, el frontal multidifunden la peticin a los gestores
usando multidifusin fiable y de ordenacin total. No se enva otra peticin
hasta que se reciba la respuesta a la peticin actual. El sistema de
comunicacin durante la fase de coordinacin entrega la peticin a todos los
gestores segn una ordenacin total. Entonces, cada gestor realiza la fase para
ejecutar la peticin. La fase de acuerdo no es necesaria, debido a que se utiliza
multidifusin. Finalmente, en la fase de respuesta, cada gestor manda su
respuesta al frontal. El nmero de respuesta que recibe el frontal est en
funcin de las asunciones de falla y del algoritmo de multidifusin.

En la replicacin activa, la tolerancia a fallas est soportada principalmente por


la multidifusin fiable y totalmente ordenada. La multidifusin es equivalente a
un algoritmo de consenso, por lo que la replicacin activa permite resolver
fallas bizantinas. Esto se debe a que el frontal recoge f+1 respuestas iguales
antes de responder al cliente

SISTEMAS DISTRIBUIDOS

Vous aimerez peut-être aussi