Publicado el 23 de Enero del 2019
1.040 visualizaciones desde el 23 de Enero del 2019
487,4 KB
24 paginas
Creado hace 12a (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
Comentarios de: 3. Comunicación en Sistemas Distribuidos - Sistemas Distribuidos (0)
No hay comentarios