Você está na página 1de 32

A

D
I
U
B
I
TR

IS
D
N

O
I
C
A

A
M
TE

M
A
R
G
O
R
P

Integrantes:
Cavero Cuaresma Nohelia
Aedo Morales Elza Eisabet
Rivera Pumaylle Pavel favio
Tambraico Chuhui Adalbert
Carbajal Achata Samuel

I. LA PROGRAMACIN DISTRIBUIDA
Es un paradigma de programacin enfocado en
desarrollar sistemas distribuidos, abiertos, escalables,
transparentes y tolerantes a fallos. Este paradigma es el
resultado natural del uso de las computadoras y las redes.
Casi cualquier lenguaje de programacin que tenga acceso al
mximo al hardware del sistema puede manejar la
programacin distribuida, considerando una buena cantidad
de tiempo y cdigo.
La programacin distribuida tpicamente cae en alguna de las
varias arquitecturas bsicas o arquitecturas: cliente-servidor,
objetos distribuidos.

II. MODELOS DE PROGRAMACION


DISTRIBUIDA
1.1. MODELO DE PASOS DE MENSAJES:
Es un paradigma de programacin ampliamente usado
en el software moderno. Sus aplicaciones cubren un
amplio campo, y puede usarse desde para garantizar
que los diferentes objetos que constituyen un
programa informtico puedan trabajar de forma
coherente entre ellos hasta para permitir que una tarea
pueda ejecutarse de forma sincronizada entre varios
ordenadores.

http://profesores.elo.utfsm.
cl/~agv/elo330/2s05/projects/CesarVasquez/si
tio_web/que_es.html

OPERACIONES SEND Y RECEIVE

#include <mpi.h> // realiza clculos distribuidos


int MPI_Sendrecv(void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
int dest,
int sendtag,
void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int source,
int recvtag,
MPI_Comm comm,
MPI_Status *status)

PARAMETROS DE ENTRADA
Buf

[El mismo que para recibir] Direccin inicial del buffer de salida (de
envo).

count

Nmero de elementos (del tipo de dato especificado) a enviar y a


recibir, es decir, ambos toman el mismo valor de count(int).

datatype

Tipo de los datos que contiene el buffer de salida y de entrada (Como


por ejemplo MPI INT.

dest

Rango del destino.

sendtag

Etiqueta para el mensaje de salida.

source

Rango del origen del que recibir el mensaje (o bien MPI ANY
SOURCE).

recvtag

Etiqueta del mensaje a recibir, o bien MPI ANY TAG para cualquier
valor de etiqueta.

comm

omunicador por el que se va a realizar tanto el envo como la


operacin de recibimiento.

PARAMETROS DE SALIDA

BUF

Status

[El mismo que para enviar]


Direccin inicial del Buffer de
entrada (de recibimiento).

Dato de tipo MPI STATUS,


contiene datos relevantes
sobre el mensaje(como son el
origen MPI SOURCE)

DESCRIPCIN DEL CODIGO


La operacin send-receive-replace combinan en una sola
llamada el envo de un mensaje a un destino y la
recepcin de otro mensaje, desde otro proceso. Los dos
(origen y destino) pueden ser el mismo.
Un mensaje enviado con una operacin send-receivereplace puede ser recibido o comprobado (MPI_PROBE,
(Comprueba bloqueante de llegada de mensaje)) por una
operacin de recepcin o comprobacin normal. Esta
operacin tambin puede recibir mensajes de envos
normales (como MPI_Send).

MPI_Sendrecv_replace, es una operacin bloqueante,


tanto el envo como la recepcin de mensaje utilizando
un nico bfer

PUERTOS
El protocolo TCP y ( tambien UDP) utilizan los
puertos
para hacer llegar datos de entrada a un proceso concreto que se
ejecuta en una maquina.

http://decon.edu.uy/publica/noec/Cap04.pdf

EL PROTOCOLO UDP Y EL PROTOCOLO TCP


EL PROTOCOLO UDP
UDP es un protocolo no orientado a conexin.
Es una maquina A , que enva datos a la maquina B sin saber la
recepcin o confirmacin de la maquina B.
Por ello el destinatario no conocer al emisor de los datos
excepto su IP.

EL PROTOCOLO TCP
El protocolo TCP est orientado a conexin.
Cuando una mquina A enva datos a una mquina B, la
mquina B es informada de la llegada de datos, y
confirma su buena recepcin. Aqu interviene el control
CRC (control de redundancia cclica) de datos que se
basa en una ecuacin matemtica que permite verificar
la integridad de los datos transmitidos.

El CRC: es una funcin diseada para detectar


cambios accidentales en datos de
computadora y es comnmente usada en
redes digitales y dispositivos de
almacenamiento (como discos duros).

1.2. MODELO RPC


LA LLAMADA A PROCEDIMIENTO REMOTO (RPC).
En , Remote Procedure Call) es un protocolo que permite
a un programa de ordenador ejecutar cdigo en otra
mquina remota sin tener que preocuparse por las
comunicaciones entre ambos. El protocolo es un gran
avance sobre los socket usados hasta el momento. De
esta manera el programador no tena que estar pendiente
de las comunicaciones, estando stas encapsuladas dentro
de las RPC.
Las RPC son muy utilizadas dentro de la comunicacin
Cliente-Servidor. Siendo el cliente el que inicia el proceso
solicitando al servidor que ejecute cierto procedimiento o
funcin y enviando ste de vuelta el resultado de dicha
operacin al cliente

RMI ( Remoto Java mtodo de invocacin)


Es un paquete de JAVA que permite manejar objetos (y sus
respectivos metodos) de manera remota, para utilizar los recursos
de un servidor de manera transparente para el usuario local,
proporciona un mecanismo simple para la comunicacin de
servidores en aplicaciones distribuidas.
La manera en que RMI (y RPC en general) logra hacer esto, es por
medio de lo que se conoce como STUBs. En el caso del STUB
servidor, se conoce como SKELETON. Estos Stubs y Skeletons
permiten que al momento de ser invocada la funcin remota esta
pueda ser "simulada localmente"

COMUNICACIN ENTRE EL SERVIDOR Y EL CLIENTE


Para la comunicacin entre el servidor y el cliente, se
trabaja con interfaces, que deben ser implementadas por el
servidor y/o cliente, evitando una definicin local.
El cliente solo puede ver la interface, mas no la clase
remota.
RMI (Remote Method invocation).- nos ensea , el como se
produce la conectividad entre el cliente y servidor. Para
esto se ocupa una herramienta de JAVA, llamada RMI
Registry.
El funcionamiento general es: Se ejecuta el RMI Registry, en
algn lugar de la red.
Esto es, a grandes rasgos, lo mas indispensable que se debe
saber a la hora de utilizar RMI.

https://www.google.com.pe/search?
q=RMI&es_sm=93&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAW
oVChMIjNTH0c7lxgIVCZiACh3FCQ55&biw=1600&bih=731#imgrc=3t3Tm
ms0G8h8uM%3A

1.3. MODELOS DE OBJETOS DISTRIBUIDOS


En los sistemas Cliente/Servidor, un objeto
distribuido es aquel que esta gestionado por un
servidor y sus clientes.
El cliente invocan sus mtodos utilizando un
mtodo de invocacin remota. El cliente invoca el
mtodo mediante un mensaje al servidor.

LAS TRES TECNOLOGAS IMPORTANTES Y MS USADAS EN ESTE MBITO


SON:

1.

2.

3.

RMI.- Remote Invocation Method.- Fue el primer frame work


(Marco de Trabajo ) para crear sistemas distribuidos de Java. hace
que un objeto de MV llama a otros objetos de MV Diferente, solo
en lenguaje java.
DCOM.- Distributed Component Object Model.- El Modelo de
Objeto Componente Distribuido, esta incluido en los OS de
Microsoft. Es un juego de conceptos e interfaces de programa, es
una forma de hacer consultas en cualquier computadora dentro de
una red. Esta tecnologa esta asociada a la plataforma de productos
Microsoft.
CORBA.- Common Object Request Broker Architecture.(comn
objeto solicitud corredor arquitectura) es introducida por OMG, es
una plataforma para la gestin de objetos remotos independiente
del lenguaje de programacin.

SOCKETS EN JAVA
Sockets: Son Punto de conexion entre procesos
Es bidirectional
El Sockets se enlaza si solo si tiene un destinatario.

LA CLASE SERVERSOCKET

Escucha solicitudes entrantes de creacin


Devuelve un objeto de la clase Socket
Constructor habitual:
ServerSocket L=new ServerSocket(num_puerto)

Bloqueo esperando solicitud


L.accept();

Llamada entrante desde cliente:


Produce desbloqueo.
Cliente obtiene socket valido de retorno

La clase Socket
Implementa un socket desde lado del cliente
Se obtiene como retorno desde el servidor
Constructor habitual.
Socket (direccion_IP, puerto);

Implementando un servidor
1. Crear un objeto ServerSocket
2. Crear un objeto socket
3. Crear un InputStream para leer desde el
cliente
4. Crear un OutputStream para envia
informacion al cliente
5. Hacer E/S con ambos Stream.
6. Cerrar el Socket

Ejemplo Servidor
import java.io.*;
import java.net.*;
public class SocketServidor {
public static final int port = 8080;
public static void main (String [] args) throws IOException {
ServerSocket GenSocket = new ServerSocket(port);
System.out.println("El servidor esta escuchando en: "+ GenSocket);
Try { //espera solicitud conexion desde cliente...
Socket enchufe = GenSocket.accept();
} finally
System.out.println("se cierra la conexin...");
GenSocket.close();
}
}//main
}//SocketServidor

Implementando un cliente
1.
2.
3.
4.
5.
6.

Crear un objeto Socket


Crear un objeto InputStream
Crear un InputStream para leer desde el cliente
Crear un OutputStream para enviar informacion al cliente
Hacer E/S con ambos Stream.
Cerrar el Socket

Ejemplo de Cliente
import java.io.*;
import java.net.*;
public class SocketCliente {
public static void main (String [] args) throws IOException {
//llamando ordenador despacho de al lado...
InetAddress dir _ IP =InetAddress.getByName("150.214.72.96");
Socket enchufe = new Socket (dir_IP, 8080); System.out.println
("Datos socket creado: "+enchufe);

}//main
}//SocketCliente

Intercambiando informacion por el


Socket
Una vez obtenida la conexion, servidor y cliente
disponen de un objeto Socket.
Metodos de la clase Socket
getInputStream() para recibir.
getOutputStream() para enviar.
Envolverlos en decoradores
Manejarlos como flujos de E/S
Asincronas junto con la clase
SocketChannel

Ventajas

Bajo coste de los equipos


Comparticin de recursos
Escalabilidad
Mayor tolerancia a fallos que los sistemas
monolticos

Existencia de aplicaciones que son distribuidas


de por s. Ejemplo: juegos en red local.

DESVENTAJAS

El principal problema es el software, es el diseo,


implantacin y uso del software distribuido, pues
presenta numerosos inconvenientes. Los
principales interrogantes son los siguientes:

Qu tipo de S. O., lenguaje de programacin y


aplicaciones son adecuados para estos sistemas?.
Cunto deben saber los usuarios de la distribucin?.
Qu tanto debe hacer el sistema y qu tanto deben
hacer los usuarios?.

Você também pode gostar