programacion distribuida
Short Description
Descripción: la promagramacion y su importancia enel ámbito de computo y la programacion para el desarrollo y su facilit...
Description
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 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/si tio_web/que_es.html
➢
OPERACIONES SEND Y RECEIVE
#include // 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)
PARAMETROS DE ENTRADA 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 SALIDA
BUF
Status
[El mismo que para enviar] Dirección inicial del Buffer de entrada (de recibimiento).
Dato de tipo MPI STATUS, contiene datos relevantes sobre el mensaje(como son el origen “MPI SOURCE”)
➢ 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-receivereplace 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_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 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.
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 tecnología esta asociada a la plataforma de productos Microsoft. 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 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 conexión..."); 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 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?.
View more...
Comments