programacion distribuida

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

Upload: mayito-ch

Post on 13-Dec-2015

32 views

Category:

Documents


6 download

DESCRIPTION

la promagramacion y su importancia enel ámbito de computo y la programacion para el desarrollo y su facilitamiento en muchas utilidades

TRANSCRIPT

TEMA PROGRAMACION DISTRIBUIDA

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

I. LA PROGRAMACIÓN DISTRIBUIDA

▪ Es un paradigma de programación 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 programación que tenga acceso al máximo al hardware del sistema puede manejar la programación distribuida, considerando una buena cantidad de tiempo y código.

▪ La programación distribuida típicamente cae en alguna de las varias arquitecturas básicas o arquitecturas: cliente-servidor, objetos distribuidos.

II. MODELOS DE PROGRAMACION DISTRIBUIDA

1.1. MODELO DE PASOS DE MENSAJES:

Es un paradigma de programación 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 informático 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/sitio_web/que_es.html

➢ OPERACIONES SEND Y RECEIVE

#include <mpi.h> // realiza cálculos 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)

Buf [El mismo que para recibir] Dirección inicial del buffer de salida (de envío).

count Número 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 envío como la operación de recibimiento.

PARAMETROS DE ENTRADA

BUF[El mismo que para enviar] Dirección inicial del Buffer de entrada (de recibimiento).

Status Dato de tipo MPI STATUS, contiene datos relevantes sobre el mensaje(como son el origen “MPI SOURCE”)

PARAMETROS DE SALIDA

➢ DESCRIPCIÓN DEL CODIGO

➢ La operación send-receive-replace combinan en una sola llamada el envío de un mensaje a un destino y la recepción de otro mensaje, desde otro proceso. Los dos (origen y destino) pueden ser el mismo.

➢ Un mensaje enviado con una operación send-receive-replace puede ser recibido o comprobado (MPI_PROBE,(Comprueba bloqueante de llegada de mensaje)) por una operación de recepción o comprobación normal. Esta operación también puede recibir mensajes de envíos normales (como MPI_Send).

➢MPI_Sendrecv_replace, es una operación bloqueante, tanto el envío como la recepción de mensaje utilizando un único búfer

➢ 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 conexión. Es una maquina A , que envía datos a la maquina B sin saber la recepción o confirmación 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 conexión.

Cuando una máquina A envía datos a una máquina B, la máquina B es informada de la llegada de datos, y confirma su buena recepción. Aquí interviene el control CRC (control de redundancia cíclica) de datos que se basa en una ecuación matemática que permite verificar la integridad de los datos transmitidos.

• El CRC: es una función diseñada para detectar cambios accidentales en datos de computadora y es comúnmente 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 código en otra máquina 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 tenía que estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las RPC.

➢ Las RPC son muy utilizadas dentro de la comunicación Cliente-Servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha operación al cliente

➢ RMI ( Remoto Java método de invocación)

➢ 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 comunicación 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 función remota esta pueda ser "simulada localmente"

➢ COMUNICACIÓN ENTRE EL SERVIDOR Y EL CLIENTE

➢ Para la comunicación entre el servidor y el cliente, se trabaja con interfaces, que deben ser implementadas por el servidor y/o cliente, evitando una definición local.

➢ El cliente solo puede ver la interface, mas no la clase remota.

➢ RMI (Remote Method invocation).- nos enseña , 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 algún 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_AUoAWoVChMIjNTH0c7lxgIVCZiACh3FCQ55&biw=1600&bih=731#imgrc=3t3Tmms0G8h8uM%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 métodos utilizando un “método de invocación remota”. El cliente invoca el método mediante un mensaje al servidor.

➢ LAS TRES TECNOLOGÍAS IMPORTANTES Y MÁS USADAS EN ESTE ÁMBITO SON:

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

2. 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 tecnología esta asociada a la plataforma de productos Microsoft.

3. CORBA.- Common Object Request Broker Architecture.(común objeto solicitud corredor arquitectura) es introducida por OMG, es una plataforma para la gestión de objetos remotos independiente del lenguaje de programación.

➢ 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 creación❑ 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 ServerSocket2. Crear un objeto socket3. Crear un InputStream para leer desde el

cliente4. Crear un OutputStream para envia

informacion al cliente5. Hacer E/S con ambos Stream.6. Cerrar el Socket

➢ Ejemplo Servidorimport 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 conexión..."); GenSocket.close(); } }//main }//SocketServidor

➢ Implementando un cliente

1. Crear un objeto Socket

2. Crear un objeto InputStream

3. Crear un InputStream para leer desde el cliente

4. Crear un OutputStream para enviar informacion al cliente

5. Hacer E/S con ambos Stream.

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

• Compartición de recursos

• Escalabilidad

• Mayor tolerancia a fallos que los sistemas monolíticos

• Existencia de aplicaciones que son distribuidas de por sí. Ejemplo: juegos en red local.

DESVENTAJAS

• El principal problema es el software, es el diseño,

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

• – ¿Qué tipo de S. O., lenguaje de programación y

aplicaciones son adecuados para estos sistemas?.– ¿Cuánto deben saber los usuarios de la distribución?.– ¿Qué tanto debe hacer el sistema y qué tanto deben

hacer los usuarios?.