PDF de programación - Programación Concurrente distribuida. Sockets y Cliente/Servidor.

Imágen de pdf Programación Concurrente distribuida. Sockets y Cliente/Servidor.

Programación Concurrente distribuida. Sockets y Cliente/Servidor.gráfica de visualizaciones

Publicado el 14 de Diciembre del 2018
503 visualizaciones desde el 14 de Diciembre del 2018
1,2 MB
53 paginas
Creado hace 11a (03/04/2013)
Asignatura 780014

Programación Avanzada

TEMA 7 –

Programación Concurrente distribuida.

Sockets y Cliente/Servidor.

© [email protected]

Computación distribuida

 Comunicación y
sincronización

 Entre procesos

concurrentes

 Que se ejecutan

en distintas
máquinas

 Se rompe la
limitación de la
memoria única

Sistema Distribuido

Definición:

– Solución software
– Funcionalidad repartida entre distintas máquinas
– Máquinas interconectadas por una red
– Cada máquina con

• Su propio procesador (pueden ser varios)
• Su propia memoria
• Su propio sistema operativo

Conceptos

• Ya no hay una memoria común para comunicar
– Los procesos utilizan líneas de comunicación físicas
– Concurrencia real, hay varios de cada HW

• Los sistemas deben ser muy desacoplados

– Intercambiar la menor cantidad de información

• Las líneas trabajan velocidades inferiores



Hay varios modelos para la creación de los programas
– Para describirlos usaremos en el concepto de canal:

• Línea de comunicación ideal, 100% fiable

Ventajas y desventajas

• Ventajas:

• Hardware más económico
• Mayor potencia de cálculo global
• Uso de la distribución de cálculo y datos

• Mayor fiabilidad global del sistema ante caídas y percances


Compartición recursos entre varios equipos

Posibilidad de escalabilidad del sistema (añadir HW)
Posibilidad de sistemas abiertos (especificaciones públicas, independencia de HW)
Facilidad en el despliegue de nuevas aplicaciones o versiones





• Desventajas:

Complejidad adicional en la coordinación de HW, SO, etc. distintos.


• Necesidad de red con una buena fiabilidad y rapidez (hoy todo está en red)


Seguridad menor que en un ordenador único, aislado y bien protegido
• Una conexión de red es una puerta a ataques, virus, troyanos, etc.
– Hay nuevas herramientas para la protección (firewalls, etc)

Motivación

• Motivos para el uso programación distribuida:

• Posibilidades:

• Compartir recursos en tiempo real
• Compartir sin necesidad de medios removibles

• Necesidades:

• Compartir un recurso único
• Aumentar la seguridad en recursos

– Mediante SW distribuido y niveles de acceso

• Aumentar potencia de cálculo

– Distribuyendo el trabajo.

Tipos de línea física

• Directa. Cable serie o infrarrojos.



Lenta, poco fiable y sólo permite crear sistemas específicos que se basen en la
existencia de la conexión.

• Directa tipo red, con cable o inalámbricas, entre dos

• Más eficientes y seguras, pero el sistema seguirá estando limitado a trabajar con dos
ordenadores y las ventajas de la programación distribuida no se alcanzan realmente.

• Red, interna (intranet) o Internet

• HW y SW nos aíslan del componente físico de la red

• Requiere un sistema de nombrado lógico

• Escenario ideal

• Podremos obtener todas la ventajas

Canales y protocolos

• Los canales y las aplicaciones que hacemos con ellos

– Se basan en todos los niveles de red inferiores

Repaso de protocolos

IP,Internet Protocol – Nivel de Red
Usado para comunicación entre aplicaciones

– Es el protocolo base de Internet
– Encargado de mover datos en forma de paquetes entre

un origen y un destino

Todo dispositivo conectado posee un identificador

– Dirección IP de 4 bytes=32 bits (ahora más con IP v6)
– Lo identifica unívocamente

La comunicación se basa en la utilización de direcciones IP

Repaso de protocolos

La dirección IP

– 4 byte, 4 cifras del 0 al 255
– Difícil de recordar, poco natural
– Se crea el concepto de nombre de dominio que es:

• Una cadena de caracteres
• Asociada a una dirección IP

El Sistema de Nombres de Dominio (DNS)

– Creado para la conversión entre los dominios e IP
– De forma automática

Repaso de protocolos

TCP, Transfer Control Protocol – Nivel de Transporte
Incorporado a protocolo IP

– Seguridad a la comunicación
– Valida que los paquetes de un mensaje llegan a destino y

en orden para la recomposición del mensaje original

– Puede pedir retransmisión de paquetes en mal estado o

perdidos

Repaso de protocolos

UDP, User Datagram Protocol – Nivel de Transporte

Se utiliza con IP, en comunicaciones:

– Donde no es tan importante que lleguen todos los mensajes a

un destinatario

– Donde el orden no es relevante
– Es preferible la velocidad a la fiabilidad en la entrega

Desventajas respecto TCP:

– Menos fiable.
– Necesidad de implementar verificación de envío y sincronización

El funcionamiento similar al del envío de una carta

Tipos de programación distribuida

• Vamos a ver 3 formas de crear los programas distribuidos

• Paso de mensajes

• RPC

• Cliente – Servidor

Paso de mensajes

Diseñar una aplicación que usa el paso de mensajes consiste en:
• Crear los programas necesarios en cada uno de los ordenadores
• Establecer los canales de comunicación entre ellos
• Definir el protocolo de envío/recepción de datos que requiera la
aplicación.

Los programas se crean independientes (ni siquiera tienen que estar
escritos en el mismo lenguaje), se compilan y la relación entre ellos se
establece en tiempo de ejecución, cuando se crean los canales y se envían
los datos con las consiguientes validaciones de tipos de datos.

Paso de mensajes

• Los canales serán de 2 tipos, con y sin capacidad de

almacenamiento, lo que da lugar a 2 tipos de comunicación y a 2
tipos de programación: comunicación asíncrona y síncrona.

• Cada canal tendrá asociado un tipo de datos, que podrá ser cualquiera

(simplifica la programación, al no tener que averiguar el mismo).
• Comunicación síncrona: los dos extremos de la comunicación
tienen que estar dispuestos para que ésta se produzca. También se
llama comunicación orientada a la conexión.

• Comunicación asíncrona: se pueden enviar datos sin necesidad de
que el otro extremo los esté esperando, pudiéndolos recibir más tarde.
También se llama comunicación orientada a datagramas.
 En este caso los datagramas podrán quedar almacenados en la red o

en el propio sistema receptor (en las capas inferiores).

Canales y protocolos

Canal:
conexión de red totalmente
fiable y con un sistema de
nombrado que nos permite
crear un tubo para comunicar
2 procesos en 2 máquinas
distintas.
Los canales serán
bidireccionales.

Paso de mensajes

Los programas deberán:
•Definir el canal: incluirá identificador para el canal,
nombre del canal de destino, tipo de canal (síncrono o
asíncrono) y el tipo de datos a enviar. Este canal existirá
durante toda la ejecución del programa.
•Enviar datos: identificador del canal de envío y datos a
enviar (coherentes con el tipo del canal). El resultado de esta
operación informará si se ha llevado a cabo o ha fallado.
•Recibir datos: identificador del canal y la variable donde
guardar los datos recibidos. El resultado de esta operación
informará si se ha llevado a cabo o ha fallado.

Paso de mensajes

El comportamiento de las operaciones será distinto dependiendo del
canal y del estado de ocupación del mismo:
•Send en canales asíncronos, siempre enviará el dato y continuará
la ejecución con la siguiente instrucción.
•Send en canales síncronos, solo enviará el dato y continuará su
ejecución si receptor está preparado para recibir. Si no, esperará (espera
no activa) hasta que el destino ejecute receive.
•Receive en canales asíncronos, recibirá el dato y continuará la
ejecución con la siguiente instrucción. Si no hubiera dato pendiente en el
canal, quedará a la espera de que se produzca un envío.
•Receive en canales síncronos, sólo recibirá el dato y continuará su
ejecución si hay un envío bloqueado a la espera. En caso contrario se
bloqueará sin espera activa hasta que el envío se produzca.

Paso de mensajes

Ejemplo de productor-consumidor, donde la
comunicación se hace en un solo sentido:
•Un programa Pr1 lee un dato x y se lo pasa a otro
programa Pr2 que lo escribe. Esta acción la realiza 10
veces.

Diagrama de precedencia

Paso de mensajes

Solución síncrona:

Si el canal fuese asíncrono el productor no necesita esperar
al consumidor en caso de que el productor sea más rápido.

Paso de mensajes

El protocolo TCP/IP transporta bytes.
El protocolo de Aplicación proporciona la

semántica.

Sockets

Son una abstracción del sistema operativo (no Hw)
 Las aplicaciones los crean, los utilizan y los cierran cuando ya no

son necesarios

 Su funcionamiento está controlado por el sistema operativo

Comunicación entre procesos

 Los procesos envían/reciben mensajes a través de su socket
 Los socket se comunican entre ellos

La comunicación en Internet es de socket a socket

 El proceso que está comunicándose se identifica por medio de su

socket

 El socket tiene un identificador
 Identificador = dir. IP del computador + núm. Puerto

Sockets

Para establecer una comunicación entre dos

programas, se crea un socket en cada máquina.
Podemos imaginar un cable enchufado en cada

extremo al socket correspondiente.

La API Socket

 Servidor y Cliente intercambian mensajes a través de la red mediante la

API Socket

 Permite a las aplicaciones utilizar los protocolos de la pila TCP/IP.
 Define las operaciones permitidas y sus argumentos

La clase InetAddress

 Java proporciona la clase InetAddress para la manipulación y

conocimiento de direcciones y dominios. Representa una dirección IP.

 Métodos:

 byte[] getAddress() =>Devuelve la dirreción IP de un objeto InetAddress.
 InetAdress getByName(String host)=>Devuelve un objeto InetAddress

representando el host que se le pasa como parámetro, bien como nombre o
bien como parámetro.

 InetAdress[] getAllByName(String host)=>Devuelve un array de objetos

InetAddress que se puede utilizar para determinar todas las direcciones IP
asignadas al host.

 static InetAddressgetByAddress(byte[] addr) =>Devuelve un objeto

InetAdress, dada una dirección IP.

 static InetAddressgetByAddress(String host, byte[] addr) =>Devuelve un

objeto InetAddress a partir del host y la dirección
  • Links de descarga
http://lwp-l.com/pdf14530

Comentarios de: Programación Concurrente distribuida. Sockets y Cliente/Servidor. (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad