Você está na página 1de 87

Universidad Tecnolgica del Per

Curso: Fundamentos del Desarrollo de


Sistemas Distribuidos

Ing. Julio Eduardo Becerra Montoya, M.A.

Ingeniera de Software
2014-II

Distribucin de Contenidos del Curso


Caracterizaci
n de los
Sistemas
Distribuidos.

- semana 01 -

Modelamien
to de
Sistemas
Distribuidos
.

Trabajo en
red.

- semana 03 -

- semana 02 Comunicacin
entre
procesos
- semana 06 -

Comunicaci
n grupal.

Protocolos
de Internet
(continuaci
n)
Practica Calificada
1

Simulacin
de red.
- semana 05 -

- semana 04 Programaci
n de
sockets.

- semana 07 -

Practica
Calificada 2

Objetos
Distribuidos.
- semana 09 -

Eventos y
notificacione
s.
- semana 10 -

- semana 08 Soporte del


Sistema
Operativo
- semana 11 -

Procesos

Sistema de
Archivos y
Nombres.

Sistema de
nombres de
dominios.

Examen
Final

- semana 14 -

- semana 15 -

Practica
Calificada 3

- semana 12 -

semana 13
-

Fundamentos del Desarrollo de Sistemas Distribuidos

Sistema de Evaluacin

Fundamentos del Desarrollo de Sistemas Distribuidos

ndice de la Semana I y II
1.- Introduccin a los Sistemas Distribuidos
1.1.- Sistemas
- Definicin, Elementos, Caractersticas, Clasificacin
1.2.- Procesamiento
- Por lotes, en lnea, centralizado, distribuido.
1.3.- Antecedentes a los Sistemas Distribuidos.
1.4.- Los Sistemas Distribuidos.
Definicin, Caractersticas, Ventajas y Desventajas.
1.7.- Comunicacin entre los Sistemas y Procesos.
1.8.- Arquitectura de los Sistemas.

Fundamentos del Desarrollo de Sistemas Distribuidos

LOS SISTEMAS
Definicin
Elementos
Caractersticas o propiedades
Subsistemas
Retroalimentacin
Homeostasis
Entropa
Adaptabilidad
Estabilidad

Clasificacin
Caja Negra

Fundamentos del Desarrollo de Sistemas Distribuidos

Tipos de Procesamiento
Por Lotes (batch)
Ejecucin de un programa sin el control o supervisin directa del usuario.
Mecanismo tradicional y antiguo de ejecutar tareas repetitivas sobre
grandes conjuntos de datos.
Se alcanzan tiempos de ejecucin muy altos, ya que los recursos
disponibles estn siendo utilizados casi continuamente.
Sirve para procesar datos histricos.
Procesamiento asncrono (evento registro)
En Lnea (On-line)
Ejecucin de un programa con control y supervisin directa del usuario.
Mecanismo actual de ejecutar tareas transaccionales, individuales y no
repetitivas sobre pequeos conjuntos de datos.
El proceso se efecta en el momento en que esta sucediendo la
transaccin.
Procesamiento sncrono (evento registro)

Fundamentos del Desarrollo de Sistemas Distribuidos

Procesamiento central (Host)


Los primeros modelos de ordenadores interconectados, llamados
centralizados, donde todo el procesamiento de la organizacin se llevaba a
cabo en una sola computadora, normalmente un Mainframe, y los usuarios
empleaban sencillos ordenadores personales
Su estructura es ms simple, por lo mismo se controlan ms fcilmente
Son ms lentos en su adaptacin al contexto

Procesamiento Secuencial
Es el procesamiento de una tarea despus de otra. Es un proceso lento
en el que si una tarea se enlentece, el sistema completo debe esperar. La
ventaja es que es fcil de entender y de implementar

Fundamentos del Desarrollo de Sistemas Distribuidos

Procesamiento Paralelo
Es el procesamiento que favorece, la explotacin de los sucesos
concurrentes en el proceso de computacin. Concurrencia implica
paralelismo, simultaneidad y solapamiento.
Pueden producirse en diferentes recursos durante el mismo intervalo de
tiempo.
El rendimiento general del sistema mejora.
El procesamiento paralelo exige la ejecucin concurrente en el
computador de muchos programas.
Procesamiento Distribuido / Descentralizado
Este modelo, que predomina en la actualidad, permite descentralizar el
procesamiento y recursos, de cada uno de los servicios y de la
visualizacin de la Interfaz Grfica de Usuario.
Los sistemas distribuidos tienen una mayor velocidad de respuesta al medio
ambiente pero requieren mayor cantidad de recursos y mtodos de
coordinacin y de control ms elaborados y complejos
Fundamentos del Desarrollo de Sistemas Distribuidos

Diferencia entre Paralelo y Distribuido


En el procesamiento Paralelo se encuentran agrupadas dentro de una
mquina, en el procesamiento Distribuido est conformada por una
computadora que a su vez se encuentra interconectada con otras.
(Cliente Servidor)

Fundamentos del Desarrollo de Sistemas Distribuidos

Los Sistemas Distribuidos


Antecedentes
Reducir en tamao y costo a los equipos de cmputo .
Aumento de las capacidades de los equipos de cmputo y su acceso a ms
personas.
El desarrollo de las redes de rea local y de las comunicaciones que permitieron
conectar ordenadores con posibilidad de transferencia de datos a alta velocidad

Fundamentos del Desarrollo de Sistemas Distribuidos

Definiciones
Un sistema distribuido es una coleccin de computadoras independientes; es decir

autnomas, que aparecen ante los usuarios del sistema como una nica computadora
Los sistemas operativos distribuidos convierten toda la coleccin de hardware y software

en un sistema integrado, muy parecido a un sistema tradicional de tiempo completo.

Un sistema distribuido se define como: una coleccin de computadoras separadas


fsicamente y conectadas entre s por una red de comunicaciones distribuida; cada
mquina posee sus componentes de hardware y software que el usuario percibe
como un solo sistema.
El usuario accede a los recursos remotos de la misma manera en que accede a
recursos locales, o un grupo de computadores que usan un software para conseguir
un objetivo en comn

Un sistema distribuido es uno en el cual los componentes localizados en


una red de computadoras se comunican y coordinan sus acciones slo
por pasaje de mensajes.
Coulouris

Fundamentos del Desarrollo de Sistemas Distribuidos

Sistemas cuyos componentes de hardware y software estn en ordenadores

conectados en red, se comunican y coordinan sus acciones mediante el paso de


mensajes, para el logro de un objetivo.
Se establece la comunicacin mediante un protocolo prefijado por un esquema
cliente-servidor.

Coleccin de ordenadores autnomos enlazados por una red y soportados por


aplicaciones que hacen que la coleccin acte como un servicio integrado

Un sistema distribuido es aqul al que sus usuarios ven como un ordinario sistema
operativo centralizado; sin embargo, se ejecuta en diferentes e independientes CPUs

Tanembaum

Fundamentos del Desarrollo de Sistemas Distribuidos

Caractersticas de los Sistemas Distribuidos


Todo Sistema Distribuido debe ser fcil de poder expandir.
Debe estar siempre disponible a pesar de que ciertas partes puedan no estar
funcionando.
El usuario no debe notar el incremento, retiro o reemplazo de partes del sistema.

Heterogeneidad
Es la variedad y diferencia que podemos encontrar en los elementos que componen
una red de computadoras sobre la que se ejecuta un sistema distribuido.
Estos elementos pueden ser redes, lenguajes de programacin, hardware, sistemas
operativos y las aplicaciones de diferentes desarrolladores.
Los protocolos de comunicacin de Internet enmascaran las diferencias entre redes y
el middleware puede tratar con las diferencias restantes. Para que la heterogeneidad
subsista, es necesario el uso de Middleware.

Fundamentos del Desarrollo de Sistemas Distribuidos

En cuanto a las redes, a pesar de que internet esta compuesta por muchos tipos de
redes diferentes, sus diferencias se encuentran enmascaradas dado que los
computadores conectados a la Internet utilizan los protocolos de Internet para
comunicarse una con otra.
Los programas, escritos por diferentes programadores no podran comunicarse entre
si a menos que utilicen estndares comunes.

Fundamentos del Desarrollo de Sistemas Distribuidos

Middleware ( Software Glue )


Software que asiste a una aplicacin para interactuar o comunicarse con otras
aplicaciones, software, redes, hardware y/o sistemas operativos.
Enlace entre aplicaciones de software independientes. Va que conecta dos
aplicaciones y pasa datos entre ellas.
Proporciona un modelo computacional uniforme al alcance de programadores de
servidores y aplicaciones distribuidas que permite la invocacin sobre objetos
remotos, notificacin de objetos remotos, acceso a base de datos remotas y
procesamiento distribuido de transacciones.
Funciona como una capa de abstraccin de software distribuida, que se sita entre
las capas de aplicaciones y las capas inferiores ( sistema operativo y red). El
middleware abstrae de la complejidad y heterogeneidad de las redes de
comunicaciones subyacentes, as como de los sistemas operativos y lenguajes de
programacin, facilitando l programacin y manejo de aplicaciones distribuidas.

Fundamentos del Desarrollo de Sistemas Distribuidos

Cdigo Mvil
Cdigo que puede ser enviado de una computadora a otra para que sta ltima
la ejecute.
Ejemplo:
Problema:

Applets
Implentar cdigo para una mquina (so) no apropiada. Win. Vs Linux.

Solucin:
Cdigo ejecutable sobre cualquier hardware.

Fundamentos del Desarrollo de Sistemas Distribuidos

Mquinas Virtuales
Proveen un modo de crear cdigo ejecutable sobre cualquier hardware.

Fundamentos del Desarrollo de Sistemas Distribuidos

Apertura (openness)
La apertura de los sistemas distribuidos se determina primariamente por
el grado hacia el que nuevos servicios de comparticin de recursos se
pueden aadir sin perjudicar ni duplicar a los ya existentes.
Un sistema abierto, puede estar integrado por diferentes proveedores
sin afectar su funcionamiento.
Un sistema informtico es abierto si el sistema puede ser extendido de
diversas maneras. Un sistema puede ser abierto o cerrado con
respecto a extensiones hardware (aadir perifricos, memoria o
interfaces de comunicacin, etc ) o con respecto a las extensiones
software ( aadir caractersticas al sistema operativo, protocolos de
comunicacin y servicios de comparticin de recursos, etc )

Fundamentos del Desarrollo de Sistemas Distribuidos

Caractersticas de los Sistemas Distribuidos Abiertos:


Los interfaces software clave del sistema estn claramente especificados
y se ponen a disposicin de los desarrolladores. En una palabra, los
interfaces se hacen pblicos.
Los sistemas distribuidos abiertos se basan en la provisin de un
mecanismo uniforme de comunicacin entre procesos e interfaces
publicados para acceder a recursos compartidos.
Los sistemas distribuidos abiertos pueden construirse a partir de hardware
y software heterogneo, posiblemente proveniente de vendedores
diferentes. Pero la conformidad de cada componente con el estndar
publicado debe ser cuidadosamente comprobada y certificada si se quiere
evitar tener problemas de integracin.

Fundamentos del Desarrollo de Sistemas Distribuidos

La interoperabilidad (compatibilidad) es el grado en que la


implementacin de sistemas o componentes de diferentes fabricantes
pueden coexistir y trabajar juntos.
La portabilidad, es la caracterstica de una aplicacin para un sistema
distribuido A que puede ejecutarse sobre un sistema distribuido B sin
hacerle modificaciones.

Fundamentos del Desarrollo de Sistemas Distribuidos

Objetivo de un Sistema Distribuido Abierto


Flexibilidad
Para que un Sistema Distribuido abierto sea flexible, es necesario que el sistema este
organizado en mdulos o componentes pequeos fciles de reemplazar.

Seguridad
Confidencialidad
Autentificacin
Integridad
No repudio
Disponibilidad

Proteger la informacin de acceso no autorizado


Capacidad para asegurar la identificacin del usuario
Asegurar que la informacin no haya sido manipulada o
alterada o corrompida desde el origen.
Rechazo de operacin de emisin o recepcin de informacin.
Que los recursos sean requeridos en la forma requerida

Fundamentos del Desarrollo de Sistemas Distribuidos

Escalabilidad
Caracterstica importante, que permite que un sistema conserve su efectividad ante
un incremento de usuarios y recursos.
Un sistema distribuido es escalable si el coste de aadir un usuario es una cantidad
constante en trminos de recursos que se debern aadir. Los algoritmos
empleados para acceder a los datos compartidos deberan evitar cuellos de botella
y los datos deberan estar estructurados jerrquicamente para dar los mejores
tiempos de acceso
Escalabilidad de tamao, si se puede agregar usuarios y recursos fcilmente.
Escalabilidad de localizacin, si se pueden separar los usuarios de los recursos
(distantes el uno del otro) sin que el sistema se afecte.
Escalabilidad de administracin, si un sistema es de fcil administracin a pesar que
se utiliza en organizaciones independientes.

Fundamentos del Desarrollo de Sistemas Distribuidos

Tanto el software de sistema como el de aplicacin no deberan cambiar


cuando la escala del sistema se incrementa. La necesidad de
escalabilidad no es solo un problema de prestaciones de red o de
hardware, sino que esta ntimamente ligada con todos los aspectos del
diseo de los sistemas distribuidos. El diseo del sistema debe
reconocer explcitamente la necesidad de escalabilidad o de lo contrario
aparecern serias limitaciones.
Cuando el tamao y complejidad de las redes de ordenadores crece, es un
objetivo primordial disear software de sistema distribuido que seguir
siendo eficiente y til con esas nuevas configuraciones de la red

Fundamentos del Desarrollo de Sistemas Distribuidos

Tolerancia a Fallos
Los fallos tanto de hardware como de software en un sistema distribuido, solo afecta a
los servicios que el componente que fallo este prestando, mientras que los otros
servicios que prestan los otros componentes siguen funcionando.
Las tcnicas comunes para el tratamiento a fallos son:
Deteccin de fallos
Enmascaramiento de fallos

Tolerancia a fallos
Recuperacin frente a fallos
Redundancia

Fundamentos del Desarrollo de Sistemas Distribuidos

Comparticin de Recursos
Es el abanico de entidades que pueden compartirse en un sistema

distribuido
Los recursos en un sistema distribuido estn fsicamente encapsulados en
una de las computadoras y slo pueden ser accedidos por otras
computadoras mediante las comunicaciones (la red).
Un sistema distribuido puede verse de manera abstracta como un conjunto
de gestores de recursos y un conjunto de programas que usan los
recursos.

Fundamentos del Desarrollo de Sistemas Distribuidos

Concurrencia

Cuando existen varios procesos en una nica maquina decimos que


se estn ejecutando concurrentemente
En los sistemas distribuidos hay muchas maquinas, cada una con
uno o mas procesadores centrales. Es decir, si hay M ordenadores
en un sistema distribuido con un procesador central cada una,
entonces hasta M procesos podrn estar ejecutndose en paralelo.
En un sistema distribuido que esta basado en el modelo de
comparticin de recursos, la posibilidad de ejecucin paralela ocurre
por dos razones:
1. Muchos usuarios interactan simultneamente con programas de aplicacin.
2. Muchos procesos servidores se ejecutan concurrentemente, cada uno
respondiendo a diferentes peticiones de los procesos clientes.

Fundamentos del Desarrollo de Sistemas Distribuidos

Cuando esto ocurre los procesos servidores deben sincronizar sus


acciones para asegurarse de que no existen conflictos. La
sincronizacin debe ser cuidadosamente planeada para asegurar
que no se pierden los beneficios de la concurrencia.

Fundamentos del Desarrollo de Sistemas Distribuidos

Transparencia
La transparencia se define como la ocultacin al usuario y al
programador de aplicaciones de la separacin de los componentes de
un sistema distribuido, de manera que el sistema se percibe como un
todo, en vez de una coleccin de componentes independientes.

Fundamentos del Desarrollo de Sistemas Distribuidos

Transparencia de Acceso : Permite el acceso a los objetos de


informacin remotos de la misma forma que a los objetos de informacin
locales.
Transparencia de Localizacin: Permite el acceso a los objetos de
informacin sin conocimiento de su localizacin
Transparencia de Concurrencia: Permite que varios procesos operen
concurrentemente utilizando objetos de informacin compartidos y de
forma que no exista interferencia entre ellos.
Transparencia de Replicacin: Permite utilizar mltiples instancias de
los objetos de informacin para incrementar la fiabilidad y las
prestaciones sin que los usuarios o los programas de aplicacin tengan
por que conoces la existencia de las replicas.
Transparencia de Fallos: Permite a los usuarios y programas de
aplicacin completar sus tareas a pesar de la ocurrencia de fallos en el
hardware o en el software.
Transparencia de Migracin: Permite el movimiento de objetos de
informacin dentro de un sistema sin afectar a los usuarios o a los
programas de aplicacin.
Transparencia de Prestaciones. Permite que el sistema sea reconfigurado
para mejorar las prestaciones mientras la carga varia.
Transparencia de Escalado: Permite la expansin del sistema y de las
Fundamentos
del Desarrollo
Sistemas Distribuidos
aplicaciones sin cambiar la estructura
del sistema
o los de
algoritmos
de la

VENTAJAS DE LOS SISTEMAS DISTRIBUIDOS


En sistemas Centralizados
Economa
Velocidad
Trabajo en conjunto
Confiabilidad
Crecimiento Incremental
Reduccin de Costos

En PCs Independientes
Se pueden compartir recursos (perifricos,)
Flexibilidad

Fundamentos del Desarrollo de Sistemas Distribuidos

DESVENTAJAS DE LOS SISTEMAS DISTRIBUIDOS


Complejidad en el Desarrollo de Software Distribudo.
Complejidad en la uniformidad de plataformas: necesidad de estndar
Los Middleware, ayuda a superar la heterogeneidad.
Escalabilidad

Fundamentos del Desarrollo de Sistemas Distribuidos

La primera caracterstica que define a un nodo en un sistema


P2P,
Los sistemas P2P utilizan la descentralizacin, como una forma de
incrementar la perfomance, escalabilidad y la disponibilidad de los
recursos de los usuarios que conforman tal sistema

Uno de las ventajas principales de un middleware es la


interoperabilidad , que permite que equipos con distintos sistemas
operativos y con distintas aplicaciones, programadas en distintos
lenguajes de programacin, puedan comunicarse e integrarse

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Arquitectura de
Sistemas

Fundamentos del Desarrollo de Sistemas Distribuidos

Arquitectura de Sistemas
Es la organizacin fundamental de un sistema, que incluye sus componentes, las
relaciones entre s y el ambiente, y los principios que gobiernan su diseo y
evolucin
Las Arquitecturas de Sistemas representan la divisin o distribucin de
responsabilidades entre los componentes del sistema (aplicaciones, servidores y
otros procesos) y la ubicacin de los componentes en los computadores en la red.
Sus implicaciones fundamentales estn en las prestaciones, fiabilidad y seguridad
del sistema resultante.
La arquitectura es la representacin usada para transportar informacin abstracta
sobre el sistema, las relaciones entre sus elementos y las reglas que gobiernan esas
relaciones
Actualmente los modelos existentes son bsicamente:
- Monoltico o Tradicional.
- Cliente / Servidor.
- Multiples Capas o Niveles.
Cada uno de estos modelos tiene como cualquier otro modelo sus ventajas y
desventajas.
Fundamentos del Desarrollo de Sistemas Distribuidos

Toda aplicacin cuenta con tres partes bien diferenciada:


La interfaz de usuario.
Es el elemento con el que interacciona el usuario de la
aplicacin, ejecuta acciones, introduce u obtiene informacin.
Las reglas de negocio.
Incorporan la lgica y reglas del negocio y se encarga de
procesar la informacin para generar resultados. Esta parte es
la principal diferencia entre una aplicacin y otra.
La gestin de los datos.
Se ocupa del almacenamiento y recuperacin de la informacin
en medios persistentes.

Fundamentos del Desarrollo de Sistemas Distribuidos

Arquitectura Monoltica
En una arquitectura monoltica las 3 partes de las aplicaciones se
ejecutan en la misma mquina.
Las aplicaciones a ser ejecutadas en este tipo de arquitectura son fciles
de desarrollar, difcil de mantener, poco escalable y precisa de cierta
potencia de proceso.

Una aplicacin desarrollada para ejecutarse sobre una arquitectura


monoltica requiere en cada ordenador los 3 elementos: interfaz de
usuario, reglas del negocio y la gestin de datos.

Fundamentos del Desarrollo de Sistemas Distribuidos

Arquitectura Cliente / Servidor


Conocida tambin como aplicacin de dos capas. Separa a la
interfaz de usuario y las reglas del negocio de la gestin de los
datos.
La
gestin de datos reside en una mquina dedicada, conocida
como servidor de BD, la que recibe

a interfaz de usuario y las reglas del negocio se alojan en el ordenador del client
La potencia de proceso se
reparte entre la capacidad de
procesamiento de los clientes.
La interfaz de usuario y las
reglas de negocio deben
comunicarse
remotamente
con los datos, siendo por ello
mas compleja, y se requiere
una plataforma de redes.

Fundamentos del Desarrollo de Sistemas Distribuidos

El Modelo Cliente Servidor


El modelo cliente-servidor de un sistema
distribuido es el modelo ms conocido y ms
ampliamente adoptado en la actualidad. Hay
un conjunto de procesos servidores, cada
uno actuando como un gestor de recursos
para una coleccin de recursos de un tipo, y
una coleccin de procesos clientes, cada uno
llevando a cabo una tarea que requiere
acceso a algunos recursos hardware y
software compartidos.

Fundamentos del Desarrollo de Sistemas Distribuidos

En el modelo, cliente-servidor, todos los


recursos compartidos son mantenidos y
manejados por los procesos servidores. Los
procesos clientes realizan peticiones a los
servidores cuando necesitan acceder a algn
recurso. Si la peticin es valida, entonces el
servidor lleva a cabo la accin requerida y enva
una respuesta al proceso cliente.

Fundamentos del Desarrollo de Sistemas Distribuidos

El modelo cliente-servidor nos da un enfoque efectivo y


de propsito general para la comparticin de
informacin y de recursos en los sistemas distribuidos.
El modelo puede ser implementado en una gran
variedad de entornos software y hardware. Las
computadoras que ejecuten los programas clientes y
servidores pueden ser de muchos tipos y no existe la
necesidad de distinguir entre ellas

los procesos cliente y servidor pueden incluso residir en la misma


mquina.

Fundamentos del Desarrollo de Sistemas Distribuidos

En esta visin simple del modelo cliente-servidor, cada proceso


servidor podra ser visto como un proveedor centralizado de los
recursos que maneja. La provisin de recursos centralizada no es
deseable en los sistemas distribuidos. Es por esta razn por lo
que se hace una distincin entre los servicios proporcionados a
los clientes y los servidores encargados de proveer dichos
servicios. Se considera un servicio como una entidad abstracta
que puede ser provista por varios procesos servidores
ejecutndose en computadoras separadas y cooperando va red.

Fundamentos del Desarrollo de Sistemas Distribuidos

Los especialistas en sistemas de informacin califican como


pesada (fat) una parte de un sistema con una cantidad de
funcionalidad desproporcionada. Por el contrario, una parte de
sistema se considera ligera (thin) si tiene menos responsabilidades
[Orfali 1996].

Fundamentos del Desarrollo de Sistemas Distribuidos

En un sistema cliente-servidor la porcin del servidor casi siempre mantiene los


datos, mientras que la porcin del cliente es responsable de la interfaz de usuario

El desplazamiento de la lgica de la aplicacin


constituye la distincin entre clientes pesados y
servidores pesados.
Los sistemas servidores pesados delegan ms responsabilidad
de la lgica de la aplicacin en los servidores, mientras que los
clientes pesados dan al cliente mayor responsabilidad
Ejemplo de servidor pesado es un servidor Web.

Fundamentos del Desarrollo de Sistemas Distribuidos

Aunque los sistemas basados en servidores pesados han sido los ms


utilizados en el pasado, en la actualidad muchos diseadores prefieren
sistemas con clientes pesados, debido a que son ms fciles de
implementar.

Los clientes pesados permiten a los usuarios crear aplicaciones y


modificar los front-end del sistema fcilmente, pero a costa de reducir
la encapsulacin de los datos; cuanta ms responsabilidad se coloque
en un cliente, el cliente requerir un conocimiento ms intimo de la
organizacin de los datos del servidor.

Fundamentos del Desarrollo de Sistemas Distribuidos

Arquitectura Multicapa
Esta arquitectura hace referencia a aplicaciones que se ejecutan
en forma distribuidas denominndose nivel o capa a cada una de
las divisiones.
Ejemplo:
Una arquitectura de 3 capas o niveles sera si un cliente ejecuta
la interfaz, un servidor de aplicaciones que procesa las reglas del
negocio y un servidor de datos se encarga del almacenamiento y
recuperacin
de datos.
Un servidor de
aplicaciones puede
ser un servidor web que ejecuta
programas ante solicitudes de
clientes.
La interfaz de usuario esta a cargo
del cliente al ejecutar un browser
en su estacin de trabajo.

Fundamentos del Desarrollo de Sistemas Distribuidos

Ventajas de la Arquitectura Multicapas


Simplicidad en el Mantenimiento
Los clientes son una simple interfaz, no ejecuta cdigo de
proceso de datos, por ello los cambios en las reglas de negocio
que generen cambios en el aplicativo, ste solo se har en el
servidor de aplicaciones.
Facilidad de Distribucin
Los cambios en la aplicacin no requieren una redistribucin ni
reinstalacin en todos los clientes, sino tan solo en el servidor.
Gran Escalabilidad
Ante una saturacin por el incremento de clientes (mas
peticiones que atender), no es necesario una gran inversin en
un solo servidor mas potente, basta con agregar un servidor de
base de datos o de aplicaciones que comparta el trabajo con el
ya
existente.
Varios
servidores muy econmicos pueden reemplazar el trabajo
que realiza un mainframe muy costoso.

Fundamentos del Desarrollo de Sistemas Distribuidos

Desventajas de la Arquitectura Multicapas


Las aplicaciones a ser ejecutadas en una arquitectura de
mltiples capas es mas compleja.
Se debe contar con una buena infraestructura de red para ser
posible la comunicacin entre los clientes con el/los servidores
de aplicaciones y a stos con el/los servidores de BD.
Se cuenta con un modelo estndar (Modelo OSI) que cuenta con
la capa de redes que permite administrar el flujo de datos, el
enrutamiento o comunicacin entre las redes y los protocolos
que especifican que los datos sean llevados y empaquetados a
la capa de Transporte .
La capa de red contiene 4 procesos para intercambiar secciones
de datos entre dispositivos finales.

Fundamentos del Desarrollo de Sistemas Distribuidos

Modelos de Comunicacin para


Sistemas Distribuidos
Requisitos
Infraestructura de redes y protocolos de comunicaciones necesaria.

Formas de Comunicacin en ambientes Distribuidos


Los Clientes pueden comunicarse con los servidores mediante 3 tcnicas:
1. Mensajes.
2. Llamadas Remotas.
3. Objetos Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

MENSAJES
Es la tcnica de ms bajo nivel, y consiste en enviar mensajes entre el cliente y
servidor, para ello el programador debe considerar los detalles de la
comunicacin: apertura del canal, envo y recepcin, interpretacin y proceso.

LLAMADAS A PROCEDIMIENTOS REMOTOS


Conocida tambin por sus siglas RPC (Remote Procedure Call), mediante este
mtodo se puede hacer una llamada a un procedimiento que se ejecuta en otro
proceso, que puede encontrarse en otra mquina de la misma red.

Es decir, cuando un proceso en la mquina A llama a un


procedimiento en la
Mquina B, el proceso que realiza la llamada a A se suspende y
la ejecucin del procedimiento se realiza en la mquina B
Parmetros por valor o Por Referencia

Fundamentos del Desarrollo de Sistemas Distribuidos

La RPC debe ser transparente, que el procedimiento remoto se


parezca lo ms posible a una llamada local, es decir, el
procedimiento que hace la llamada no debe ser consciente que el
procedimiento llamado se ejecuta en una mquina distinta.

OBJETOS DISTRIBUIDOS
Este mtodo esta basado en el mecanismo DCE RPC (Distributed Computing
Enviroment Remote Procedure Call).
Es el sistema de llamada a procedimiento remoto desarrollado para el entorno de la
informtica distribuida (DCE).
DCE es ms comnmente usado para interactuar con Windows Network Services.
Los modelos ms representativos son CORBA, JAVA RMI y DCOM.

Fundamentos del Desarrollo de Sistemas Distribuidos

CORBA, Java RMI y DCOM


DCOM (Distributed COM) es una evolucin del modelo de componentes COM
(Componente Object Model) diseado por Microsoft para su plataforma Windows.
Actualmente se puede trabajar con todas las plataformas UNIX menos con DOS, Win
3.1 y WFW.
Java RMI (Remote Method Invocation) es un mecanismo que se ejecuta en cualquier
equipo que tenga la mquina virtual y el entorno JRE (Java Runtime Enviroment). El
mayor inconveniente es que solo puede ser usado por desarrolladores en Java.
CORBA (Common Object Request Broker Architecture) es un conjunto de
especificaciones que facilita la interoperabilidad entre componentes y se la pueden
usar con cualquier lenguaje de programacin.

Fundamentos del Desarrollo de Sistemas Distribuidos

CORBA
CORBA es una tecnologa probada, cuya finalidad es facilitar la creacin de
aplicaciones distribuidas, con una interoperabilidad entre componentes software
independientemente del lenguaje en que estn desarrollados, la plataforma hardware y
el sistema operativo sobre el que se ejecutan.
Middleware orientado a objetos que permite invocacin de mtodos distribuidos de
forma transparente a las redes, sistemas operativos, arquitecturas y lenguajes de
programacin.
Esta estandarizado por la OMG, el mayor consorcio de mas de 800 empresas.
Solo emite especificaciones aceptadas por consenso que son pblicas y gratuitas.
Se apoya en 3 pilares fundamentales:
IDL (Interface Definition Language)
ORB (Object Request Broker)
Protocolo GIOP (General Inter-ORB Protocol) y sus derivados.

Fundamentos del Desarrollo de Sistemas Distribuidos

Lenguaje IDL (Interface Definition Language)


Es un lenguaje de informtica utilizado para describir la interfaz de componentes
software. Describe una interfaz en un lenguaje neutral, lo cual permite la
comunicacin entre componentes de software desarrollados en diferentes
lenguajes.
Es el punto de encuentro para que aplicativos desarrollados en diferentes
lenguajes puedan entenderse entre ellos. IDL ofrece un puente entre dos sistemas
diferentes.
No es un lenguaje de programacin sino un lenguaje descriptivo o de definicin de
Interfaces, que son tablas de mtodos asociados, los parametros que precisan y
el tipo de valor de retorno que devolvern.
Se especifica que interfaz puede el cliente encontrar en el servidor .
Las interfaces IDL se agrupan formando mdulos. El mdulo es la construccin de
primer nivel en IDL. Generalmente existe un mdulo por cada archivo de
definicin.

Fundamentos del Desarrollo de Sistemas Distribuidos

Algunos lenguajes IDL:


IDL specification language,el IDL original.
Microsoft Interface Definition Language, (MIDL).
Open Service Interface Definitions
Platform-Independent Component Modeling Language
WSDL, lenguaje de descripcin de servicios web.

Fundamentos del Desarrollo de Sistemas Distribuidos

Ejemplo de un mdulo IDL con la definicin de una interfaz que


dispone de 5 mtodos:
module Estadisticas {
interface Basicas {
void Anade(in float
Valor);
void Elimina();
float Media();
float Maximo();
float Minimo();
};
};

Interfaz cuya finalidad es facilitar


la ejecucin de operaciones
estadsticas.
Existen
compiladores
que
traducen la descripcin IDL a un
determinado
lenguaje.
El
compilador IDL si es dependiente
del
lenguaje,
existe
un
Compilador IDL para Java, C++,
COBOL, etc.

Mdulo de IDL Compilador IDL Cdigo para implementar.

Fundamentos del Desarrollo de Sistemas Distribuidos

ORB (Object Request Broker)


Es el nombre que recibe una capa de software (tambin llamada middleware) que
permite a los objetos realizar llamadas a mtodos situados en mquinas remotas,
a travs de una red
El ORB en el cliente, es el que traduce la llamada desde el cliente (en cierto lenguaje)
y sobre cierta plataforma a un formato neutro (independiente) que puede transportarse
a los mtodos alojados en el servidor.
El ORB en el servidor actua en sentido inverso, es decir recibe la llamada desde el
cliente (en formato neutro) convirtiendola al lenguaje y plataforma destino (servidor).
La funcin del ORB es conectar al cliente con el Servidor, pudiendo estos estar
desarrollados en diferentes lenguajes, se ejecutan sobre diferentes plataformas y con
distintos sistemas operativos, a travs de los mtodos llamados Marshaling y
Unmarshaling.

Fundamentos del Desarrollo de Sistemas Distribuidos

Maneja la transferencia de estructuras de datos, de


manera que sean compatibles entre los dos objetos. Para
ello utiliza un estndar para convertir las estructuras de
datos en un flujo de bytes, conservando el orden de los
bytes entre distintas arquitecturas. Este proceso se
denomina marshalling

Fundamentos del Desarrollo de Sistemas Distribuidos

Marshaling, puede convertir diferentes tipos de datos, el orden de los parmetros en


una llamada, el orden de los bytes en una palabra segn el tipo de procesador, etc,
en un formato neutro.
Unmarshaling, efecta el paso inverso al marshaling.
El servidor no distingue la procedencia de la invocacin.

In computer science, marshalling or


marshaling is the process of transforming
the memory representation of an object to
a data format suitable for storage
Converting an object in memory into a
format that can be written to disk

Fundamentos del Desarrollo de Sistemas Distribuidos

GIOP y sus Derivados


Cuando 2 ORBs quieren comunicarse entre si lo primero que
hacen es ponerse de acuerdo en cuanto al protocolo que
utilizarn.
GIOP es una especificacin genrica de los protocolos para que se
comunique 02 ORBs. Uno de los protocolos derivados de GIOP es
el IIOP (Internet Inter-ORB Protocol) que usa al TCP/IP en la capa
de transporte.

Fundamentos del Desarrollo de Sistemas Distribuidos

SERVICIOS CORBA
Los CORBA Services, son servicios nuevos accesibles en forma de
mtodos de los objetos ORB y BOA (Bsic Object Adapter).
El desarrollo de aplicaciones distribuidas implica el aprendizaje de
servicios nuevos. Algunos servicios se venden como productos
separados.
Ejemplo, un servicio fundamental es el de nombres o directorio distribuido.
Un ORB realiza una llamada a los mtodos de un objeto siempre
que se disponga de una referencia a ste, referencia que es preciso
obtener de alguna forma.
El servicio de nombres se ejecuta en un determinado puesto de la
red conocido por las aplicaciones.
Los Servidores registran sus implementaciones de interfaces
facilitando la referencia a los objetos que hay disponibles.
Cuando un Cliente necesita una interfaz consulta al servicio de
nombres y obtiene esa referencia.
Todos los servicios CORBA se exponen en forma de objetos CORBA.
Fundamentos del Desarrollo de Sistemas Distribuidos

ESQUEMA DE DESARROLLO DE UN SISTEMA DISTRIBUIDO


1.- Escribir los mdulos IDL que contendrn las definiciones de
Interfaces.
2.- Definir en forma de interfaces IDL, aquellos elementos que vayan a
ejecutarse distribuidamente.
3.- Compilacin del mdulo IDL, generndose dos mdulos de cdigo
dependientes del lenguaje llamados stub y skeleton.
OBJETIVO DE LOS SISTEMAS DISTRIBUIDOS
Un servidor que ofrezca uno o mas servicios y un cliente que los requiera.

Fundamentos del Desarrollo de Sistemas Distribuidos

Implementacin del SERVIDOR


La implementacin de un servidor se puede hacer siguiendo un de
dos mtodos diferentes: herencia o delegacin.
El mtodo herencia utiliza un mdulo llamado skeleton generado
por el compilador IDL, y contiene una clase cuyos mtodos se
encargarn de la comunicacin con el ORB.
El mtodo delegacin, mediante el cual, la clase en la cual se
implementan los mtodos puede ser cualquiera, ya que lo que se
hace es llamar directamente desde el skeleton a sus mtodos.

Fundamentos del Desarrollo de Sistemas Distribuidos

El Servidor, luego de inicializar el ORB y BOA, debe obtener una


referencia al servicio de nombres y utilizarla para registrarse, de tal
forma que pueda ser localizado por cualquier cliente que precise
sus servicios.
Un servidor no sabe que peticiones va a recibir, de donde van
recibir ni en que momento, por ello el servidor queda a la espera
indefinidamente, procesando las peticiones a medida que llegan.

Fundamentos del Desarrollo de Sistemas Distribuidos

Implementacin del CLIENTE


El compilador IDL genera el mdulo stub.
Si se desarrolla un servidor con el skeleton, la creacin del cliente
implica la utilizacin del correspondiente stub.
El stub, hace que las llamadas a los mtodos del servidor por parte
del cliente, parezcan llamadas locales.
La clase stub cuenta con los mtodos necesarios para comunicarse
con el ORB del cliente, indicndole todos los datos necesarios para
poder invocar al mtodo remoto en el servidor.
El cliente comienza por inicializar su ORB, luego su servicio de
nombres para obtener referencia al objeto que implementa la
interfaz a utilizar.
Con la referencia, llamada IOR (Interoperable Object Reference) se
llama directamente a los mtodos y se obtendr el resultado
esperado, sin necesidad de ningn paso adicional.

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

La SINCRONIZACIN entre Procesos en los


SISTEMAS DISTRIBUIDOS
La Sincronizacin
En ambientes distribuidos, se requiere de algoritmos que renan
toda la informacin relativa al sistema, antes de realizar un proceso.
Es fundamental sincronizar todos los relojes en un sistema
distribuido.
El algoritmo debe tener las siguientes propiedades:
1.- La informacin relevante se distribuye entre varias mquinas.
2.- Los procesos toman las decisiones solo con base en la
informacin disponible en forma local.
3.- Debe evitarse un punto de fallo en el sistema.
4.- No existe un reloj comn o alguna fuente precisa del tiempo
global.

Fundamentos del Desarrollo de Sistemas Distribuidos

Para sincronizar 2 relojes, se define una relacin llamada (Ocurre antes


de)
Ejemplo: a -- b se lee a ocurre antes de b. Esta relacin cumple la
regla de transitividad, de modo que si ab, y bc, entonces se
cumple que ac.
Si a y b son eventos en el mismo proceso y a ocurre antes que b,
entonces a b es verdadero.
Si a es el evento del envo de un mensaje por un proceso y b es el
evento de la recepcin del mensaje por otro proceso, entonces a b
tambin es verdadero.
Un mensaje no se puede recibir antes de ser enviado o al mismo
tiempo en que se enva, puesto que tarda en llegar una cantidad finita
de tiempo.
Si 2 eventos x y y, estn en procesos diferentes que no intercambian
mensajes (ni siquiera en forma indirecta por medio de un tercero),
entonces x y no es verdadero, ni tampoco lo es y x. Se dice que
del Desarrollo
Sistemasse
Distribuidos
estos eventos son concurrentes loFundamentos
que significa
quedenada
puede

Se debe medir el tiempo , tal que a cada evento a, le podamos


asociar un valor del tiempo C(a) en el que todos los procesos estn
de acuerdo.
Estos valores de tiempo, deben tener la propiedad que si a b,
entonces C(a) < C(b).
Si a es el envo de un mensaje por un proceso y b la recepcin de
ese mensaje por otro proceso, entonces C(a) y C(b) deben ser
asignados de tal forma que todos estn de acuerdo con los valores
de C(a) y C(b).

Fundamentos del Desarrollo de Sistemas Distribuidos

La Exclusin Mutua
Cuando un proceso debe leer o actualizar ciertas estructuras de datos
compartidas, primero entran en una regin crtica para lograr la
exclusin mutua y garantizar que ningn otro proceso utilice las
estructuras
los datos
al mismo tiempo.
La forma dede
lograr
una exclusin
mutua en ambientes centralizado ,
es el siguiente: Algoritmo centralizado
Se elige un proceso como coordinador.
Siempre que un proceso desee entrar a una regin crtica, enva un
mensaje de solicitud al coordinador, donde indica la regin crtica a la
que desea entrar y pide permiso. Si ningn otro proceso est por el
momento en esa regin crtica, el coordinador enva una respuesta
otorgando el permiso , como se muestra en la siguiente figura.
Si otro proceso (2) pidiera entrar a la misma regin crtica, el
coordinador ya sabe que otro proceso distinto ya se encuentra en la
regin crtica por lo que no le otorga permiso a entrar. El proceso 2
pasa a formar una fila de espera.
Cuando el proceso 1 sale de la regin crtica, enva un mensaje al
coordinador para liberar su uso exclusivo.
Fundamentos del Desarrollo de Sistemas Distribuidos

El coordinador extrae el primer elemento de la fila de solicitudes


diferidas y enva a ese proceso un mensaje otorgndole el permiso.
Este mtodo garantiza que slo un proceso se encuentra en la regin
crtica y adems es justo por que se asigna la regin crtica en orden
de llegada la solicitud.

Fundamentos del Desarrollo de Sistemas Distribuidos

La forma de lograr una exclusin mutua en ambientes distribuidos, es


el siguiente: Algoritmo distribuido
Cuando un proceso desea entrar a una regin crtica, construye un
mensaje con el nombre de la regin, el nmero de proceso y la hora
actual.
Este mensaje es enviado a todos los procesos (incluso a si mismo) .
Cuando un proceso recibe el mensaje de solicitud de otro proceso, la
accin que realice depende de su estado con respecto de la regin
crtica nombrada en el mensaje. Pueden presentarse 3 casos:
1.- Si el proceso receptor no esta en la regin crtica y no desea
entrar en ella, enva de regreso un mensaje de OK al emisor.
2.- Si el proceso receptor ya esta en la regin crtica, no responde,
sino que forma la solicitud en una fila.
3.- Si el proceso receptor desea entrar en la regin crtica, pero no lo
ha logrado todava, compara la marca de tiempo en el mensaje
recibido con la marca contenido en el mensaje que envi a cada
uno. La menor de las marcas gana. Si el mensaje recibido tiene
una marca menor, enva de regreso un mensaje ok. Si su propio
mensaje tiene una marca menor, el receptor forma la solicitud en
una fila y no enva nada.
Fundamentos del Desarrollo de Sistemas Distribuidos

La forma de lograr una exclusin mutua en ambientes distribuidos


diferente a la anterior, es el siguiente: Algoritmo de anillo de
fichas
Se usa una red basada en un bus, sin un orden inherente en los
procesos. Se tiene la presencia de un software que construye un anillo
lgico, y a cada proceso se le asigna una posicin en el anillo. (ver
dibujo)

Fundamentos del Desarrollo de Sistemas Distribuidos

El mtodo consiste en asignar las posiciones del anillo segn algn


criterio, como por ejemplo el orden numrico de las direcciones de
la red o algn otro criterio. Lo importante es que cada proceso sepa
quin es el siguiente en la fila.
Al iniciarse el proceso del anillo, se le da al proceso CERO, una
ficha, la misma que circula por todo el anillo. Un proceso recibe la
ficha de su vecina, ingresa a la regin crtica, hace lo que tiene que
hacer, y luego cuando sale de la regin crtica, recin pasa la ficha
a su siguiente vecina. De esta manera nunca 2 procesos intentan
ingresar a la misma vez a la regin crtica, ya que en un instante
dado solo un proceso tiene la ficha, que es requisito para ingresar a
la regin crtica.
Lo peor que puede ocurrir bajo este mtodo es que un proceso
deba esperar a que los dems procesos entren y salgan de la
regin crtica antes que l.
Fundamentos del Desarrollo de Sistemas Distribuidos

Fundamentos del Desarrollo de Sistemas Distribuidos

Você também pode gostar