You are on page 1of 102

APLICACIONES DISTRIBUIDAS I

Introduccin
La programacin distribuida es uno de los
modelos ms importantes de la programacin

Sus orgenes se remontan a los aos 70

El desarrollo de las plataformas hardware va de
la mano con los modelos distribuidos as como
lenguajes y tecnologas de desarrollo

Historia
Aos 70 aparicin de mini ordenadores,
estaciones de trabajo y PCs

Desarrollo de las redes de
ordenadores como ARPAnet.
Sistemas operativos de tiempo compartido
como el sistema operativo Unix permitiendo
que muchos usuarios usaran una misma
maquina al mismo tiempo.

El desarrollo de procesadores abri camino
a la idea de crear entornos de
computacin potentes poniendo juntos ya
sea procesadores u ordenadores.

Primeros modelos distribuidos
Tecnologas de programacin
distribuida

Desde los inicios de la programacin
distribuida la comunidad cientfica y de
desarrolladores tuvo el inters de mejorar
los:

1. Modelos de programacin distribuida

2. Tecnologas de Software
Modelos de programacin distribuida

Los mas importantes:
RPC, DCOM, CORBA, SOAP, XLM-RPC, MPI,
PVM, java RMI
Tecnologas de Software
Se refiere a los lenguajes
de programacin los cuales
mediante mecanismos
propios o libreras externas
permiten el uso de las
aplicaciones distribuidas.

Las tendencias bsicas de la
computacin distribuida se las resume
en:

1. Supercomputadoras
2. Redes de rea local y global
3. Sistemas distribuidos Web, Grid y P2P

Supercomputadoras
Redes de rea local y global
Las primeras redes LAN aparecen en los aos 70
por el impulso del Ethernet
Las redes WAN revolucionaron las
aplicaciones distribuidas por la gran
cobertura que logran acaparar.
Sistemas distribuidos Web, Grid y P2P
La computacin Web es la mas comn
de las aplicaciones de Internet
La computacin Grid se especifica en el
desarrollo de aplicaciones mas
complejas.
La computacin P2P aprovecha el
Internet para crear plataformas
distribuidas.
Definicin Aplicaciones distribuidas
La construccin de una aplicacin distribuida tiene un proceso
muy parecido al desarrollo de software, pero presenta
particularidades

Aplicacin Distribuida
Una aplicacin con
distintos
componentes que
se ejecutan en
entornos separados,
normalmente en
diferentes
plataformas
conectadas a travs
de una red
Ejemplos
correo electrnico
navegacin Web
Streaming (Transmisin)
telefona IP


Objetivos
Ejecucin de
Procesos
Independientes
Movilidad
Mnimo cambio
de
programacin
Tolerancia a
Fallos
Virtudes
Compartir
Recursos
Facilitar la
comunicacin
Actualizar los
Componentes
CLASIFICACION
Se clasifican los sistemas cliente servidor de acuerdo
al nivel de abstraccin del servicio que se ofrece. Se
distinguen tres componentes bsicos de software:

La presentacin
La lgica de negocio
El acceso y almacenamiento de datos

SIGNIFICADO DE CADA UNA DE SUS PARTES

1.-La presentacin o interfaz de usuario se refiere al
mecanismo de interaccin del usuario con el sistema
Los tipos de interfaces de software mas comunes son las
aplicaciones de ventanas y web
Los tipos de interfaces de hardware mas comunes son
pantalla, el ratn teclado
2.-La lgica de negocio refiere al conjunto de reglas
que determina especficamente como funciona una
sistema, segn su naturaleza, y bajo que parmetros y
condiciones de acuerdo a las necesidades de los
clientes y usuarios
3.-El acceso a datos refiere al medio atreves del cual
podemos acceder y manipular los datos persistentes de un
sistema.
El almacenamiento de datos refiere a la forma en que se
encuentra guardado los datos.
APLICACIN MONOLITICA
Una aplicacin monoltica es aquella
aplicacin que esta mesclado o
altamente acoplados, esto dificultad que
pueda hacerse una separacin lgica y
fsica donde alguna de sus partes pueda
ser reutilizable
CLIENTE/SERVIDOR
Es donde los datos y la lgica de negocio se
encuentran separados de la interfaz, este tipo
de aplicacin tambin se denomina cliente
liviano
La aplicacin de tres capas es donde la interfaz, la
lgica de negocio, el acceso de datos estn por
separados
APLICACIN 3 CAPAS
APLICACION N CAPAS
LIMITACIONES
SOFTWARE
Actualmente no se
tiene mucha
experiencia con estos
sistemas
COSTE DE DESARROLLO DEL
SOFTWARE
La implementacin de un
sistema distribuido de
bases de datos es ms
difcil y por tanto ms
costoso.

SEGURIDAD
Si se consigue el acceso a la red
(de forma ilegal) se consigue ya
un acceso sencillo a una gran
cantidad de informacin
MLTIPLES PUNTOS DE FALLO
El fallo de uno o ms
computadores, o uno o ms
enlaces de red, puede
suponer problemas para un
sistema de computacin
distribuida
MAYOR PROBABILIDAD DE ERRORES
Es ms difcil asegurarse de la
correccin de los algoritmos, del
funcionamiento especial durante
los fallos de parte del sistema, as
como de la recuperacin.

MAYOR SOBRECARGA DE
PROCESAMIENTO
El intercambio de mensajes y el
cmputo adicional necesario para
conseguir la coordinacin entre los
distintos equipos constituyen una
forma de sobrecarga
VELOCIDAD DE PROPAGACIN DE
INFORMACIN
Muy lenta a veces
Son infinitamente ms
lentos en el procesamiento
de peticiones sencillas
ADMINISTRACIN MS COMPLEJA
Requieren habilitar el
acceso real a la carpeta
de datos para todos los
usuarios de la aplicacin
Sistemas Operativos
Historia
Los primeros sistemas (1945-1955) eran grandes
mquinas operadas desde la consola maestra por los
programadores.
Durante la dcada siguiente (1955-1965) se llevaron a
cabo avances en el hardware: lectoras de tarjetas,
impresoras, cintas magnticas, etc. Esto a su vez
provoc un avance en el software: compiladores,
ensambladores, cargadores, manejadores de
dispositivos, etc.

Los mas utilizados
Microsoft Windows
es el nombre de una familia de sistemas operativos desarrollados y
vendidos por Microsoft.
Microsoft introdujo un entorno operativo denominado Windows el 20 de
noviembre de 1985 como un complemento para MS-DOS en respuesta al
creciente inters en las interfaces grficas de usuario (GUI).
Microsoft Windows lleg a dominar el mercado mundial de computadoras
personales, con ms del 90% de la cuota de mercado, superando a Mac
OS, que haba sido introducido en 1984.
Las versiones ms recientes de Windows son Windows 8 para equipos de
escritorio, Windows Server 2012 para servidores y Windows Phone 8 para
dispositivos mviles.

Linux
Linux es un ncleo libre de sistema operativo
basado en Unix.
Es uno de los principales ejemplos de
software libre. Linux est licenciado bajo la
GPL v2 y est desarrollado por
colaboradores de todo el mundo.
El desarrollo del da a da tiene lugar en la
Linux Kernel Mailing List Archive

MAC
es una serie de sistemas operativos basados en Unix desarrollado,
comercializado y vendido por Apple Inc. que ha sido incluido en su gama
de computadoras Macintosh desde 2002.
Es el sucesor del Mac OS 9 (la versin final del Mac OS Classic), el sistema
operativo de Apple desde 1984.
Est basado en BSD, y se construy sobre las tecnologas desarrolladas en
NeXT entre la segunda mitad de los 80's y finales de 1996, cuando Apple
adquiri esta compaa.
Desde la versin Mac OS X 10.5 Leopard para procesadores Intel, el
sistema tiene la certificacin UNIX 03.

Versin Nombre en cdigo Anuncio Presentacin Versin ms reciente
Mac OS X Server 1.0 Hera 16 de marzo de 1999
1.2v3 (27 de octubre
de 2000)
Beta pblica Kodiak
13 de septiembre de
2000
10.0 Cheetah 24 de marzo de 2001
10.0.4 (22 de junio
de 2001)
10.1 Puma 18 de julio de 2001
25 de septiembre de
2001
10.1.5 (6 de junio de
2002)
10.2 Jaguar 6 de mayo de 2002
24 de agosto de
2002
10.2.8 (3 de octubre
de 2003)
10.3 Panther 23 de junio de 2003
24 de octubre de
2003
10.3.9 (15 de abril de
2005)
10.4 Tiger 4 de mayo de 2004 29 de abril de 2005
10.4.11 (14 de
noviembre de 2007)
10.5 Leopard 26 de junio de 2006
26 de octubre de
2007
10.5.8 (5 de agosto
de 2009)
10.6 Snow Leopard 9 de junio de 2008
28 de agosto de
2009
10.6.8 (23 de junio
de 2011)
10.7 Lion
20 de octubre de
2010
20 de julio del 2011
10.7.4 (21 de mayo
de 2012)
10.8 Mountain Lion
16 de febrero de
2012
25 de julio de 2012
10.8.3 (14 de marzo
de 2013)
Encuesta sobre uso de sistemas
operativos
Windows XP
446 (33% de los votos)
Ubuntu Feisty Fawn (7.04)
342 (25% de los votos)
Otro Linux
165 (12% de los votos)
Otro Ubuntu
150 (11% de los votos)
Windows Vista
116 (8% de los votos)
Mac OS
93 (7% de los votos)
Otro Windows
35 (3% de los votos)
Otro
19 (1% de los votos)
Votos totales: 1366
Iniciada: 26 Abril 2007
1. PROCESO CLIENTE / SERVIDOR

Lo ms significativo en los sistemas de informacin, en los ltimos aos, ha sido
el avance del proceso cliente / servidor. Este modo de procesamiento esta
remplazando a gran velocidad tanto a los mtodos de procesamiento
basados en computadores centrales, como al proceso centralizado y otras
formas alternativas del proceso distribuidos de datos.



QU ES EL PROCESO CLIENTE /SERVIDOR?:

Algunos de los trminos que se encuentran generalmente en las
descripciones de las aplicaciones y productos cliente / servidor son:
Interfaz de programas de aplicacin (API siglas en ingles):
Un conjunto de funciones y programas de llamada que permiten
comunicarse a clientes y servidores.
Cliente: El que solicita informacin a la red, generalmente una PC o
estacin de trabajo, y que puede consultar bases de datos u otra
informacin del servidor.
Middleware: Un conjunto de controladores, API u otro software que mejora
la conectividad entre las aplicaciones de cliente y un servidor.
Base de Datos Relacional: Una base de datos en donde el
acceso a la informacin esta limitado por la seleccin de filas
que satisfacen todos los criterios de bsqueda.
Servidor: Un computador, generalmente una estacin de
trabajo muy potente, un mini computador o un mainframe, que
contiene informacin para que los clientes de red puedan
manipularla.
Lenguaje de Consulta Estructurado (SQL siglas en ingles): Un
lenguaje desarrollado por IBM y estandarizado por ANSI para
direccionar, crear, actualizar o consultar bases de datos
relacinales.


Arquitectura de aplicaciones
distribuidas
Esa informacin se representa en forma estructurada como pequeas
estructuras de datos, como mensajes o documentos estructurados, como
medios continuos (audio/video); Los intercambios los inician y/o reciben:
personas (correo, web) o procesos (comercio electrnico) siguiendo
ciertos protocolos.
Elementos de una arquitectura
Componentes de red
Interfaces de usuario
Administracin de datos
Administracin del procesamiento
Componentes de red
Interfaces de usuario

Generalmente es un conjunto de pantalla, teclado y mouse, pero en
forma creciente vemos nuevos dispositivos como telfonos celulares,
PDAs, etc. Genricamente se denominan cliente
Administracin de datos

Es el otro extremo visto desde la interface de usuario
Involucrado en el almacenamiento y recuperacin de datos
Las tecnologas aplicables incluyen archivos planos, bases de datos
relacionales u orientadas a objetos, etc.
Administracin del
Procesamiento
Todo aquello involucrado con la transformacin de los datos:
genricamente conocido como programas o aplicaciones
Arquitecturas Distribuidas
Modelo de objetos remotos
Middleware
CORBA
Java RMI
DCOM
Servicios Web
Modelo de objetos remotos

Es la generalizacin del modelo tradicional de objetos para el diseo de
software

El paso de mensajes (interaccin) entre objetos sigue siendo el
componente central de la arquitectura

Los objetos comunicantes pueden residir en distintas computadoras
Modelo de objetos remotos

Middleware

Es el conjunto de servicios que
permiten la construccin, despliegue
y funcionamiento de aplicaciones
distribuidas

Existen distintos frameworks que
proveen estos servicios

Incluyen de servicios de localizacin,
mensajera y activacin
CORBA

Es un framework de middleware creado por el Object Management Group
para la interoperabilidad de programas escritos para distintas plataformas
(Unix, Windows, VMS, Mac, etc.) en distintos lenguajes (C, C++, Java,
COBOL, etc.)

Permite la invocacin de mtodos en objetos ubicados en cualquier punto
de una red.

A travs de una especificacin de interfaces es neutral frente al lenguaje y
la plataforma de implementacin de los objetos
CORBA: Arquitectura
ORB: Establece la relacin cliente
servidor entre objetos

Object Services: servicios
agregados al ORB, tales como
nombres, persistencia, seguridad
y transacciones.

Common Facilities: proveen
servicios a las aplicaciones
centrados en el tipo y
campo de aplicacin de cada
desarrollo.

Application Objects: Encapsulan
el comportamiento requerido
para un determinado campo de
aplicacin
Java RMI

Remote Method Invocation (Invocacin del Mtodo remoto) es el
mecanismo provisto por la plataforma Java para la interaccin entre
objetos localizados en distintas computadoras
DCOM

Distributed Component Object Model (Modelo de Objeto de Componente
distribudo) es la infraestructura de middleware implementada en las
plataformas Windows de Microsoft Corporation.
Servicios Web

Son componentes distribuidos que brindan servicios especficos y
delimitados
Permiten ensamblar una aplicacin compleja combinando un conjunto
de SW en una intranet o en Internet
Ejemplo THREAD
La Mquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de
ejecutar varios hilos de ejecucin simultneamente.

Desde el punto de vista de las aplicaciones los
hilos son tiles porque permiten que el flujo del programa sea divido en dos
o ms partes, cada una ocupndose de alguna tarea de forma
independiente.
La forma ms directa para hacer un programa multihilo es extender la
clase Thread, y redefinir el mtodo run(). Este mtodo es invocado
cuando se inicia el hilo (mediante una llamada al mtodo start() de la
clase Thread). El hilo se inicia con la llamada al mtodo run() y termina
cuando termina ste. El ejemplo ilustra estas ideas:
public class ThreadEjemplo extends Thread {
public ThreadEjemplo(String str) {
super(str);}
public void run() {
for (int i = 0; i < 10 ; i++)
System.out.println(i + " " + getName());
System.out.println("Termina thread " + getName());
}
public static void main (String [] args) {
new ThreadEjemplo("Pepe").start();
new ThreadEjemplo("Juan").start();
System.out.println("Termina thread main");
}
}
Concurrencia

De diccionario
Concurrencia: simultaneidad de dos sucesos galicismo por
competencia, rivalidad

Informtica: Dos o ms tareas son concurrentes si el inicio de una de
ellas ocurre entre el inicio y el final de otra

Arquitectura y Procesos
de las Aplicaciones
Distribuidas
Threads



Arquitectura
El diseo de aplicaciones modernas involucra la divisin de una aplicacin en
mltiples capas; la interfaz de usuario, la capa media de objetos de negocios, y la
capa de acceso a datos. Puede ser til identificar los tipos de procesamiento que
podemos esperar que una aplicacin realice. Muchas aplicaciones pueden, al
menos, hacer lo siguiente:
Clculos u otros procesos de negocios.
Ejecucin de reglas de negocios.
Validacin de datos relacionados al negocio.
Manipulacin de datos.
Ejecucin de las reglas de datos relacional.
Interactivo con aplicaciones externas o servicios.
Interactivo con otros usuarios.
SOA (Service Oriented Architecture) La arquitectura orientada a servicios
de cliente.
MOM (Middleware orientado a mensajes) Es software o hardware que
soporta la infraestructura de envo y recepcin de mensajes entre
sistemas distribuidos
REST: utiliza casi siempre HTTP como mtodo de comunicacin y XML o
JSON para intercambiar datos. Cada URL representa un objeto sobre el
que se pueden utilizar los mtodos POST, GET, PUT y DELETE.
SOAP: Es toda una infraestructura basada en XML, cada objeto puede
tener mtodos definidos por el programador con los parmetros que
sean necesarios.
ESB: (Bus de servicios de empresa) consiste en un combinado
de arquitectura de software que proporciona servicios fundamentales
para arquitecturas complejas a travs de un sistema de mensajes.
JBI (Java Business Integration) Proporciona una arquitectura en la que los
componentes aparecen en forma de plug-ins conectados a
contenedores JBI y actuando como proveedores de servicio o
consumidores de servicio.
BPM (Modelado de Procesos de Negocio) En la ingeniera de sistemas es
la actividad de representacin de procesos de una empresa, de
manera que el actual proceso puede ser analizado y mejorado

Hilos de Ejecucion o THREADS
Un hilo de ejecucin, hebra o subproceso es la unidad de procesamiento
ms pequea que puede ser planificada por un sistema
Un hilo es simplemente una tarea que puede ser ejecutada al mismo
tiempo con otra tarea.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos
recursos, son en conjunto conocidos como un proceso. El hecho de que
los hilos de ejecucin de un mismo proceso compartan los recursos hace
que cualquiera de estos hilos pueda modificar stos. Cuando un hilo
modifica un dato en la memoria, los otros hilos acceden a ese dato
modificado inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de
ejecucin y el estado de la CPU (incluyendo el valor de los registros).

PROGRAMACION SECUENCIAL
Hasta ahora se ha trabajado con programas secuenciales
Se ejecuta paso a paso
Son deterministas: si se ejecutan varias veces
en las mismas condiciones, en diferentes
equipos, da los mismos resultados

Programacin Concurrente
En cada momento puede haber varios fragmentos en ejecucin
ms o menos simultnea

Dos ejecuciones, en las mismas circunstancias, pueden producir
resultados diferentes

Trata de las notaciones y tcnicas de programacin que se usan
para expresar el paralelismo potencial entre tareas y para resolver
los problemas de comunicacin y sincronizacin entre procesos.


Hay un procesador utilizable por cada tarea
Independientemente de cmo se vaya a ejecutar realmente el
programa, en un sistema uniprocesador o multiprocesador, el
resultado debe ser el correcto.

Los tipos de relacin entre sucesos son:
Paralelismo: Si los sucesos se producen durante el mismo espacio de
tiempo.
Sopla miento: Si los sucesos se producen en intervalos de tiempo
superpuestos.
Simultaneidad: Si los sucesos se producen en el mismo instante de tiempo.
Tareas (o Procesos)
Programa Secuencial: especifica una ejecucin secuencial de una
lista de instrucciones, siendo esta ejecucin una tarea (o proceso).
Programa Concurrente: especifica dos o ms tareas (programas
secuenciales) que pueden ser ejecutadas concurrentemente como
tareas paralelas.
Sistema Concurrente: es un sisrtema informaico en el que es posible
ejecutar varios procesos concurrentemente
Relaciones entre Procesos
Independencia: No existe relacion entre procesos.
Competencia:se produce cuando los procesos deben compartir recursos
comunes del sistema , por lo que deben competir entre ellos para
adquirirlos.
Cooperacion: se presenta cuando los procesos deben trabajar
conjuntamente sobre distintas partes de un problema para resolverlo, para
lo cual necesitan cambiar informacion entre si.
Interaccion entre procesos
Sincronizacion: imtercambio de procesos de informacion acerca del motor
de flujo de ejecucion de sus instrucciones.
Existen dos y esta son:
- Sincronizacion condicional: un proceso espera
a que se cumpla una condicion para que el
otro contine.
- Exclusin Mutua: cuando varios procesos compiten por un recurso de
acceso exclusivo
Comunicacin: cuando el intercambio de procesos de informacin
acerca de sus datos. La comunicacin implica sincronizacin.

Existen dos modelos :

- Variables compartidas: leen o escriben en
variables de acceso comn para sincronizarse
y comunicarse.
- Paso de mansajes: intercambian mensajes para sincronizarse y
comunicarse.
Estados de un proceso
Un proceso secuencial puede estar en uno de los siguientes
cuatro estados:
Ejecutando: instrucciones estn
siendo ejecutadas por la CPU.
Bloqueado: el proceso est
esperando la ocurrencia de algn
evento (por ejemplo la terminacin
de una entrada/salida).
Listo: el proceso est esperando
que se le asigne un procesador.
En abrazo mortal: el proceso est
esperando por un evento que
nunca ocurrir.
Arquitecturas de sistemas concurrentes
Arquitecturas Fsicas: Existen dos tipos:

- Sistemas Uniprocesador

- Sistemas Multiprocesador: Existen 2 tipos

* Fuertemente acoplados
* Dbilmente acoplados o distribuidos

Mientras que en los sistemas uniprocesador y en los sistemas
multiprocesador fuertemente acoplados, lo habitual es usar el modelo de
variables compartidas en los sistemas distribuidos, lo habitual es usar el
modelo de paso de mensajes.
Multiprogramacin y
Multiprocesamiento
Multiprocesamiento: Es posible que cada proceso de un programa
concurrente se ejecute en un procesador fsico distinto.

Multiprogramacin: Se da cuando el numero de procesos concurrentes es
mayor al numero de procesos disponibles.
Propiedades de la Programacin
Concurrente
Una propiedad de un programa concurrente es un atributo que
debe satisfacer para todas las posibles consecuencias de ejecucin.
Propiedades de Seguridad: debe der siertas en todo instante de la
ejecucion del programa:
- Exclucion Mutua: Establece que nunca puedan intercalarce ciertas
secuencias de instrucciones de un grupo de procesos.
- Ausencia de interbloqueo Pasivo: es unestado en el que el conjunto
de procesos se bloquean , pero ejecutan instrucciones inutiles.
Propiedades de Vida: Son eventuales y ciertas:

- Ausencia Interbloqueo Activo: se produce
cuando ciertos procesos no se bloquean.

- Ausencia Inanicin: se produce cuando un
proceso podra progresar y no lo ase por que
otros procesos acaparan la utilizacin de los
recursos del sistema.
Ventajas y Desventajas
Ventajas:
Aumento de la Eficiencia.
Reduccin de Costes
Aumento de Legibilidad
Desventajas:
Indeterminismo
Dificultad de Verificacin

Programacion Concurrente
Modelo de variables Compartidas:
Para este modelo se desarrollo los semaforos y los monitores.
Semaforos
Herramienta de bajo nivel que facilita la sincronizacion condicional entre
procesos y la exclucion mutua en el acceso a sus secciones criticas.

Un semforo es un tad definido:
Un conjunto de operaciones que se puede efectuar sobre un
semforo.
Estructura de datos echa de un contador.
La sintaxis de declaracin es una variable en pascal fc.
Operaciones bsicas que se realizan
en un semforo son:
Initial: almacena el valor inicial en contador del semforo.
Wait : si el valor es mayor que cero se decreta en una unidad el contador y
el proceso continua su ejecucin.
Signal: si hay procesos bloqueados en la lista asociada al semforo uno de
ellos abandona la lista, pasando al estado de preparado.
monitores
La idea bsica de este mecanismo es la de agrupar, en un mismo mdulo,
las regiones crticas relacionadas con un determinado recurso, haciendo
que toda regin crtica se encuentre asociada a un procedimiento del
monitor, el que podr ser llamado por las tareas.
La propiedad ms importante que caracteriza a los monitores es que la
ejecucin de un procedimiento del monitor por una tarea excluye la
ejecucin de cualquier otro procedimiento del mismo monitor por otra
tarea.
Un monitor se escribe como:
un conjunto de declaracin de variables
un conjunto de procedimientos
Sincronizacin condicional
Se lleva acabo mediante las llamadas de variable de condicin
Declaraciones sobre monitores
Delay: provoca el bloque incondicional del proceso que la invoca en la
cola de condicin asociada a la variable.
Resume: al ejecutar libera el primer proceso de la cola de condicin
asociada.
Empty : devuelve un true si la cola asociada a la variable condicin esta
vaca o false en caso contrario.