PDF de programación - 3. Comunicación en Sistemas Distribuidos - Sistemas Distribuidos

Imágen de pdf 3. Comunicación en Sistemas Distribuidos - Sistemas Distribuidos

3. Comunicación en Sistemas Distribuidos - Sistemas Distribuidosgráfica de visualizaciones

Publicado el 23 de Enero del 2019
888 visualizaciones desde el 23 de Enero del 2019
487,4 KB
24 paginas
Creado hace 11a (24/01/2013)
Sistemas Distribuidos

Fernando Pérez Costoya

Índice

Introducción

Sistemas Distribuidos

Comunicación en
Sistemas
Distribuidos

Introducción


• Paso de mensajes

– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (MOM)
• Llamadas a procedimientos remotos (RPC)



– Sun/ONC RPC
Invocación de métodos remotos (RMI)
– Java RMI y CORBA

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
2

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

• Sistema de comunicación: Espina dorsal del SD
• Paradigmas de comunicación

– ¿Qué API de comunicación ofrece SD a las aplicaciones?
• Memoria compartida (¿en SD?) vs. Paso de mensajes
• Adecuación del paradigma a las distintas arquitecturas

– cliente/servidor; editor/subscriptor; P2P

• Grado de acoplamiento del paradigma: espacial y temporal
• Comunicación persistente

– SD almacena información hasta que destinatario(s) lo obtenga(n)
– Incluso aunque emisor ya no exista → desacoplamiento temporal

• Patrón de comunicación (cardinalidad):

– unidifusión versus multidifusión

Sistemas Distribuidos
3

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Paradigmas de comunicación

Índice

• Paso de mensajes

• Unidifusión de mensajes no persistentes (sockets, MPI,…)

– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (Message-oriented middleware)

• Multidifusión de mensajes no persistentes (ISIS, JGroups,…)

• Paso de mensajes persistentes

• Llamadas a procedimientos remotos (RPC) (ONC, DCE,…)


Invocación de métodos remotos (RMI)
– Entornos distribuidos basados en objetos (Java RMI, CORBA,…)

• Servicios web → Sistemas orientados a servicios
• Memoria compartida (tema 6)

– Distributed Shared Memory
– Espacios de tuplas

Sistemas Distribuidos

Paso de mensajes

Introducción


• Paso de mensajes

– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (MOM)

• Llamadas a procedimientos remotos (RPC)



• Sun/ONC RPC
Invocación de métodos remotos (RMI)
– Java RMI y CORBA

Sistemas Distribuidos
4

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
6

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

3-Comunicaciones

1

Sistemas Distribuidos

Fernando Pérez Costoya

Paradigma de paso de mensajes

API de paso de mensajes

Esquemas de direccionamiento

• HW de paso de mensajes → API de paso de mensajes
• Sist. de paso de mensajes: Capa sobre protocolo de transporte
• Alternativas de diseño en aspectos como:

– API de comunicación ofrecido
– Direccionamiento: ¿cómo especifica origen/destino de comunicación?
– Especificación del mensaje
– Optimización de transferencias (zero-copy)
– Integridad de los mensajes
– Representación externa de datos
– Grado de sincronía (y buffering)

• Ejemplos con distintos niveles de funcionalidad (sockets, MPI)

• MPI

int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest,

int tag, MPI_Comm comm)

int MPI_Recv(void *buf, int count, MPI_Datatype, int source, int tag,

MPI_Comm comm, MPI_Status *status)

• Sockets datagrama

ssize_t sendto(int socket, const void *buffer, size_t length, int flags,

const struct sockaddr *dest_addr, socklen_t dest_len);

ssize_t recvfrom(int socket, void * buffer, size_t length, int flags,

struct sockaddr *address, socklen_t * address_len);

• Esquemas con conexión

– Existen además primitivas para conectar y desconectar
– Operaciones de envío y recepción no incluyen direcciones

• Usando número de proceso (MPI):

– En envío: nº proceso destinatario
– En recepción: nº proceso origen; sólo interacción 1 → 1
• O cualquiera (MPI_ANY_SOURCE): interacción N → 1
– Difícil asignar nº proceso único en entorno de propósito general

• Pero no en aplicación ejecutada en entorno de computación paralela
• Usando puertos: buzón asociado a una máquina (sockets)

– Comunicación entre puertos
– Proceso reserva uso de un puerto de su máquina (bind de sockets)
– Envío: desde puerto origen local a puerto destino especificados
– Recepción: de puerto local; interacción N → 1
– Sockets INET: ID puerto = dir. IP + nº puerto + protocolo (TCP|UDP)

• Usando colas: buzón de carácter global; interacción N → N

– Sistemas de colas de mensajes; desacoplamiento espacial+temporal

Sistemas Distribuidos
7

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
8

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
9

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Modos de interacción punto-a-punto

nº proceso: 1 → 1

puerto: N → 1

cola: N → N

Especificación del mensaje
• Con o sin información de tipos (MPI vs. sockets)
– Sin ella: aplicación debe gestionar heterogeneidad
– Con ella: sistema de comunicaciones gestiona heterogeneidad

• Clases de mensajes (etiquetas)

• Sistema de comunicación puede gestionar clases de mensajes

– En envío: especifica clase de mensaje enviado
– Recepción: especifica clase de mensaje que se quiere recibir

• o usa comodín (MPI_ANY_TAG)

• Múltiples canales sobre una misma comunicación
• Diversas aplicaciones como por ejemplo:

– Establecer prioridades entre mensajes
– En cliente-servidor puede identificar operación a realizar
– En editor-subscriptor basado en temas como identificador de tema
• Disponible en MPI como parámetro de primitivas (tag)
• No soportado en sockets, aunque sí mensajes urgentes (OOB)

Zero-Copy

• Reducir al mínimo (≈ a cero) copias entre zonas de memoria
• Escenario 1: envío de N datos dispersos de emisor a receptor
• N envíos: sobrecarga de llamada de as + fragmentación de mensajes
• Reserva de buffer y 1 envío: sobrecarga de copias
• Funciones scatter/gather: minimizar copias y llamadas

– UNIX: readv, writev, sendmsg, recvmsg

• Escenario 2: envío de un fichero

– Dos copias de memoria: de buffer de sistema a de usuario y viceversa

• Uso de operaciones convencionales de lectura y envío
• Uso de proyección de ficheros (mmap) y envío
• Uso de operaciones de transferencia directa entre descriptores
– No requiere copias entres buffers; reduce nº llamadas al sistema
– Linux: sendfile, splice

– Una copia de memoria a buffer de sistema en envío

Sistemas Distribuidos
10

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
11

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
12

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

3-Comunicaciones

2

Sistemas Distribuidos

Fernando Pérez Costoya

Datos dispersos: Envío múltiple

Datos dispersos: Envío con copia

Datos dispersos: Envío gather

Envía(dest, dir1, tam1, ...)

Envía(dest, dir2, tam2, ...)

Envía(dest, dir3, tam3, ...)

dir1
tam1

dir2
tam2

dir3
tam3

tipo1

tipo2

tipo3

dir1
tam1

dir2
tam2

dir3
tam3

dir

tipo1

tam

COPIA

Envía(dest, dir, tam, ...)

tipo2

tipo3

Envía(dest,dir1,tam1,dir2,tam2,dir3,tam3,...)

dir1
tam1

dir2
tam2

dir3
tam3

tipo1

tipo2

tipo3

Sistemas Distribuidos
13

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
14

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
15

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Datos dispersos: Recepción scatter

Envío convencional de fichero

Envío con proyección de fichero

Recibe(org,dir1,tam1,dir2,tam2,dir3,tam3,...)

dir1
tam1

dir2
tam2

dir3
tam3

tipo1

tipo2

tipo3

Proceso

buffer de
usuario

read(f…)

send(s,…)

buffer de
sistema

buffer de
sistema

SO

Proceso

mmap(…f…)

buffer de
usu|sis

send(s,…)

buffer de
sistema

SO

Sistemas Distribuidos
16

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
17

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

Sistemas Distribuidos
18

Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández

3-Comunicaciones

3

Sistemas Distribuidos

Fernando Pérez Costoya

Envío zero-copy de fichero

Integridad de los mensajes

Proceso

sendfile(f,s…)

buffer de
sistema

SO

• En recepción debe especificarse buffer de tamaño ≥ mensaje
– Si menor: pérdida de resto del mensaje (MPI y sockets datagrama)
– Se mantiene integridad de los mensajes
– Nunca se entregan restos de mensajes ni dos mensajes juntos

• Excepto en comunicación como flujo de bytes (sockets stream)

– Datos de mensaje no leídos se obtienen en próxima recepción
– Recepción puede devolver datos de fragmentos de mensajes
– Recepción puede devolver dos mensajes junto
– Si se requiere no mezclar mensajes de tamaño variable se puede:

• Enviar longitud
• Usar un separador
• Usar 1 conexión/mensaje y hacer shutdown de socket de envío

Representación externa de datos
• Emisor y receptor misma interpretación de información

– Misma cuestión, y soluciones, para lector y escritor de un fichero

• Procesadores, lenguajes, compiladores difieren en:

– Orden de bytes en tipos numéricos (endian)
– Tamaño de datos numéricos (en C: ¿tamaño de int, long,…?)
– Strings (con longitud vs. carácter terminador (¿qué carácter?))
– Formatos de texto (ISO-8859-1, UTF-8,…)
– Organización estructuras datos (compactación, alineamientos,…),…

• Se necesitan “serializar” los datos para enviar/almacenar

– Asegurando misma interpretación en sistema heterogéneo
– Eficientemente (en serialización, en uso de red/disco,…)
– Facilitando la programación de la serialización
– Admitiendo cambios incrementales en protocolo

– P.e. protocolo con nuevo campo opcional pero cliente antiguo sigue OK

Sistemas Distri
  • Links de descarga
http://lwp-l.com/pdf14961

Comentarios de: 3. Comunicación en Sistemas Distribuidos - Sistemas Distribuidos (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