sistemas distribuidos 4. ambientes de programación cliente-servidor...
TRANSCRIPT
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 1
Sistemas Distribuidos4. Ambientes de Programación
Cliente-Servidor
Prof. María FeldgenCurso 2006
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 2
Índice
• Aplicaciones Cliente-Servidor– Modelo Cliente-Servidor– Capa de Transporte TCP/IP– Tipos de Servidores– Ambiente de Programación con Sockets– Ambiente de Programación con RPC
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 2
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 3
Aplicaciones Cliente-Servidor• Las primeras arquitecturas de aplicaciones
distribuidas estaban dominadas por lo que se conocecomo las aplicaciones comerciales de dos capas:– La primera (superior) capa del modelo trata con la
presentación y la lógica del negocio de la aplicación delusuario (cliente) y
– la segunda (inferior) capa trata con la organización de laaplicación y sus datos almacenados (servidor).
• El cliente inicia la acción y el servidor pasivamenteespera por los clientes y realiza las acciones queeste requiere.
• Este ambiente en general se lo conoce como unaarquitectura de aplicación Cliente/Servidor.
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 4
Cliente: inicia lainteracción
ACTIVO
Servidor: Espera por elcliente
PASIVO
REQUEST
REPLY
Modelo Cliente-Servidor
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 3
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 5
Cliente-servidor• El servidor puede ser, por ejemplo un servidor de base de
datos, responsable de la organización y recuperación delos datos.
• En cambio, la aplicación cliente trata con la mayor partedel procesamiento del negocio y provee una interfasegrafica de la aplicación al usuario.
• Es un diseño popular en aplicaciones comerciales, dondela interfase del usuario y la lógica del negocio estánaltamente acopladas al servidor de base de datos y a laactualización y recuperación de datos.
• Ejemplos: se usa en planificación de recursos, sistemasde pago, inventario y otras donde las aplicaciones clienteresiden en múltiples computadoras de escritoriointeractuando con un servidor de base de datos central.
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 6
Aplicación Cliente-Servidor
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 4
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 7
Limitaciones• Procesamiento comercial complejo del lado del cliente
demanda sistemas robustos.• La seguridad es mas compleja de implementar, ya que
los algoritmos y la lógica residen en las máquinas delcliente, que son mas vulnerables a los hackers.
• Se requiere alto ancho de banda para acomodar lasnecesidades de múltiples llamadas al servidor, y estopuede imponer restricciones de escalabilidad.
• El mantenimiento y actualización de las aplicacionesclientes es difícil, ya que cada cliente se mantiene porseparado.
• Esta arquitectura es muy útil para aplicacionesorientadas a base datos centralizadas ya que nogenera componentes reusables robustos.
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 8
Modelo Cliente-Servidor en TCP/IP Es un grupo de procesos cooperantes, llamados servers
(servidores) que brindan servicios a los usuarios,llamandos clients (clientes)
En general se basan en un protocolo sin conexión depregunta/respuesta (request/reply)
Request
Reply
Red
Cliente Servidor54321
Request/Reply
Capas 1 a 4 Capas 1 a 4
Modelo de Capas
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 5
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 9
Capas de Transporte en TCP/IP
PORT
Request enviado al port y dirección de IPdel servidor
Reply enviado al port y dirección de IP del origen
PORT(TCP/UDP) + IP
Cliente Servidor
CON CONEXIÓN: TCP (Transport Control Protocol) SIN CONEXIÓN: UDP (User Datagram Protocolo)
Modelo Cliente Servidor
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 10
HostMAFALDA
Socket o half association activoSocket o half association pasivo
Port bien conocido Port asignado
conexión
HostSUSANITA
(tcp, SUSANITA,1500)
Cliente
(tcp, * ; 21)
Servidor
Association (conexión): (tcp, MAFALDA,21, SUSANITA,1500)Dir local
IPL+portLIPL+portL*.portL
Dir remota
IPR+portR*.**.*
Comportamiento del server:
acepta a un solo cliente (*)acepta datagramas para IPLacepta todos los datagramas para portL
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 6
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 11
Tipos de servidores
IterativoSIN Conexión
IterativoCON Conexión
ConcurrenteSIN Conexión
ConcurrenteCON Conexión
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 12
Server Concurrente
Server
Server hijo
fork Cliente
Host MAFALDA
Host Susanita
(tcp, * ,21)
(tcp, Susanita, 1500)
(tcp, Mafalda, 21)
RequestConexión
Conexión
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 7
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 13
Server Concurrente
Cliente
Host Susanita
(tcp, Susanita, 1500)
server
fork
Host Mafalda
(tcp, * ,21)
serverhijo
(tcp, Mafalda, 21)
Conexión
Cliente
Host Manolito
(tcp, Manolito, 1500)
serverhijo
(tcp, Mafalda, 21)Conexión
RequestConexión
RequestConexión
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 14
Ambientes de ProgramaciónCliente-Servidor
• Sockets (Berkeley):– Paradigma básico sobre el cual se construyen todas las
comunicaciones es Entrada/Salida (I/O).– Primitivas de transporte para TCP y UDP.
• RPC (Remote Procedure Call):– Paradigma básico: Llamar a procedimientos en otras
máquinas.– La información se intercambia por parámetros.– El pasaje de mensajes o I/O no es visible.
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 8
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 15
Ambiente de Programación SOCKETS• API (Aplication Programming Interface): Interface entre el
programa de aplicación y el software del protocolo.• IPC (Interprocess Communication): provee comunicación entre
procesos de un sistema o de sistemas diferentes.• API’s existentes desarrolladas para lenguaje “C”, Java y otros:
– Sockets (4.3BSD) Desarrollado por la Universidad de Berkeley, esla mas frecuente en Unix, Microsoft (Winsock), OS/2 y otros.
– TLI (Transport Layer Interface): de Unix System V 3.0,desarrollado por AT&T.
• TCP/IP no provee ningún mecanismo para crear automáticamente unprograma cuando llega un mensaje, por lo tanto el programa querecibe el mensaje debe estar activo antes de que se efectue laprimera comunicación.
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 16
Funcionalidad de la Interface• Operaciones conceptuales que soporta:
– Alocar recursos locales para la comunicación– Especificar las “puntas” local y remota de la comunicación– Iniciar una conexión (el cliente)– Esperar por una conexión entrante (el server)– Enviar o recibir datos– Terminar un conexión en forma graciosa– Tratar condiciones anormales de terminación– Desalocar recursos cuando la comunicación termina
• Interface conceptual:– no especifica representación de datos o detalles de programación.– es un conjunto de procedimiento y funciones. Sugiere los
parámetros que requieren y la semántica de las operaciones– es “débil”, solo ilustra como las aplicaciones interactúan con
TCP/IP, por lo cual las implementaciones difieren unas de otras.
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 9
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 17
Funciones de sockets
• socket Crea un descriptor para usar en la comunicación• connect ** Conecta con un server remoto (Cliente)• read/readv Recibe datos sobre una conexión• write/writev Escribe datos sobre una conexión• close Termina la comunicación y cierra el descriptor socket• bind * ** Vincula una dirección IP y un port local con un socket• listen * Open pasivo y determina la cola de mensajes• accept * Acepta la próxima conexión entrante• recv/recvmsg Recibe el próximo datagrama entrante• recvfrom Recibe el próximo datagrama y recuerda su origen• send/sendmsg Envia un datagrama• shutdown Termina la conexión TCP en una o ambas direcciones• select Espera por condiciones de I/O
(*) Función del server (**) Función del cliente
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 18
Escenario de transferencia con conexión
socket ( )
connect ( )
write ( )
read ( )
CLIENTE
socket ( )
bind ( )
listen ( )
accept ( )
read ( )
write ( )
SERVER
Bloqueado esperandoun cliente
Procesamiento
Establecimientoconexión
Data request
Data reply
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 10
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 19
Escenario de transferencia sin conexión
sendto ( )
recvfrom( )
socket ( )
bind ( )
recvfrom ( )
sendto ( )
SERVER
Bloqueado esperandodatos de un cliente
Procesamiento
Data request
Data reply
socket ( )
bind ( )
CLIENTE
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 20
Asociaciones
(protocolo, dirección local, proceso local, dirección remota, proceso remoto)
Tipo protocolo Dirección yproceso local
Dirección yproceso remoto
Con Conexión: Cliente socket ( ) bind ( ) listen( ), accept ( ) Server socket ( ) connect ( )Sin Conexión: Cliente socket ( ) bind ( ) recvfrom ( ) Server socket ( ) bind ( ) sendto ( )
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 11
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 21
Ambientes de ProgramaciónRPC
• RPC (Remote Procedure Call):– Un proceso en una máquina local invoca a un
procedimiento en una máquina remota.– Distintas especificaciones e implementaciones:
• Open Network Computing (ONC) RPC• Distributed Computing Environment (DCE) RPC• International Organization for Standarization (ISO)RPC
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 22
Requerimientos
• Pasaje de parámetros• Binding• Protocolo de transporte• Tratamiento de excepciones• Semántica del call• Representacion de datos• Performance• Seguridad
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 12
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 23
Interacción
Cliente StubCliente
Server StubServer
ENTIDAD DE TRANSPORTE ENTIDAD DE TRANSPORTE
1
1092 3
8
745
6
Host del usuario (cliente) Host remoto (server)
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 24
Operación Básica de RPC
Cliente
Call
Retorno
PackParametros
UnpackParametros
Kernel
Server
Call
RetornoPackParametros
UnpackParametros
Kernel
Stub Cliente Stub Server
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 13
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 25
EjemploParameter Marshalling
n = suma (4, 7)
Kernel Kernel
suma
46
mensajesuma
46
mensaje suma (i, j)
int i, j ;{
return (i + j) ;
}
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 26
Implementación del protocolo
• Esquema request - reply• Exclusión mutua en el server de
procedimientos de un mismo programa.• Sobre TCP o UDP manteniendo la semántica
de la capa de transporte• Estrategia simple de time out y
retransmisión.
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 14
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 27
Semántica de RPC
• CAIDA DEL SERVER– La operación entre
cliente y server sepuede repetir o no
dependiendo del tipo deoperación:
• Idempotente (puederepetirse n veces)
• Exactamente una vez• A lo sumo una vez
• Por lo menos una vez
• Caida del Cliente:– Tratamiento de
huérfanos:• Exterminio• Expiración• Reencarnación• Reencarnación gentil
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 28
Binding
• Binding dinámico:– El cliente localiza al server en forma dinámica,
no se usan ports fijos.• Especificación formal del servicio:
– Nombre del servicio– Número de versión– Lista de procedimientos provistos por ese servicio
con sus parámetros indicando tipo:• in, out , in-out
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 15
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 29
RPC
Prog.Cliente Prog.Server
Portmapper
Porta
Port b
Port c
12
3
Host cliente
Host server
ProgramaCliente
StubCliente
StubServer
ProgramaServer
StubServer
Wait
Listening
Host cliente
Comunicación RPC
Transportey la red
Request
Reply
Host server
Call Input Output
Register Nombre,Versión, Handle, Id.único
Deregister Nombre,Versión, Id.
Lookup Nombre, Versión Handle,Id.
Interface del binder
Portmapper o Rpcbind
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 30
Representación de datos en RPC
• XDR (eXternal Data Representation):– Libreria de rutinas para convertir :
• datos individuales del formato interno a unarepresentación general XDR.
• datos complejos (estructuras) usados para definirmensajes RPC.
Aplicación
XDR
RPC
TCP | UDP
Stack de protocolosen ambiente TCP/IP
Capa de presentación
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 16
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 31
Mecanismos de programaciónusando ONC RPC
– Librerias XDR– Librerias Run Time: que permiten efectuar:
• llamadas (call) a procedimientos remotos• registrar servicios con el port mapper• despachar una llamada
– Un generador de programas (rpcgen):• que produce parte del codigo necesario en “C” para construir
un programa distribuido que utiliza RPC.– Ejecución de los procedimientos del server:
• Exclusión mutua o• Trabajar a nivel sockets con el inetd.
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 32
Rutinas de Libreria de alto nivel delONC RPC
• En el server:– Registrar el servicio en el portmapper:
• #include <rpc/rpc.h>int registerrpc (prognum, versnum, procnum,
procname, inproc, outproc);u_long prognum, versnum, procnum;char * (*procname) ( );xdrproc_t inproc, outproc; /*filtros */
– Espera por un cliente sobre un socket con:• void svc_run( );
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 17
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 33
Rutinas de Libreria de alto nivel delONC RPC
En el cliente:– Encontrar y ejecutar un servicio (UDP):
• #include <rpc/rpc.h>int callrpc (host, prognum, versnum, procnum,
inproc in, outproc out);char *host;u_long prognum, versnum, procnum;char * in, out;xdrproc_t inproc, outproc; /*filtros */
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 34
ONC RPC
registerrpc( )portmapper Server
svc-run( )
invoca serviciocall servicio
Ejecuciónservicio
Devolución de resultadosPedido completo
ret = callrpc( )
Return (respuesta)
Programa continúa
Cliente
función callrpc(host, prog, progver, procnum, inproc, in, outproc, out)
Host Cliente Host Server
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 18
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 35
Rutinas de Libreria de nivel menor delONC RPC
Desarrollo de aplicaciones con el rpcgenProgramaCliente
Proced. Server
Q.x rpcgen
Q_clnt. c
Q.h
Q_xdr.c
Q_svc.c CompiladorC
RPC RuntimeLibrary
CompiladorC
cliente
server
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 36
Lenguaje
• Tipos de datos soportados con XDR:– escalares– compuestos– opaque (pasar datos sin traducción)
• Declaración de procedimientos:– Procedimientos con un parametro de in (input).
(Equivalente a “función” del Pascal).– Provee union: para una combinacion entre codigo de
retorno y resultados para la definición de tipo de lafunción.
Sistemas Distribuidos
Prof. María Feldgen - Curso 2006 19
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 37
Ejemplo ONC RPCTradicional con parámetros in
printmsg
printmessage
msg códigoretorno
En una máquina sin RPC
rprintmsg
msg_clnt
msg códigoretorno
msg_svc
printmessage
msg códigoretorno
Esquema Cliente - servidor con RPC
Printmessagestub
rprintmsgstub
msg códigoretorno
Host A Host B
FIUBA-EGRIET 2006 Sistemas Distribuidos (Prof. María Feldgen) 38
Ejemplo ONC RPC con parámetros in y out
printmsg
printmessage
msg cód.retorno +mensaje
En una máquina sin RPC
msg_svc +xdr_msg
printmessage
msgcód.retorno +
mensaje
Esquema Cliente - servidor con RPC
rprintmsg
msg_clnt +xdr_msg
msg cód.retorno +mensaje
Printmessagestub
rprintmsgstubxdr(msg)
xdr(códretorno +mensaje)
Host A Host B