Sistemas distribuidos

24
SISTEMAS DISTRIBUIDOS UPM FI © Fco. Javier Yágüez García 1 SISTEMAS DISTRIBUIDOS: ARQUITECTURAS DE COMUNICACIONES RESUMEN Javier Yágüez mayo 2009

Transcript of Sistemas distribuidos

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García1

SISTEMAS DISTRIBUIDOS: ARQUITECTURAS DE COMUNICACIONES

RESUMENJavier Yágüez

mayo 2009

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García2

Objetivos del resumenMiddleware de comunicaciones en el modelo tradicional cliente y servidor: Arquitecturas de niveles y protocolos intermedios de comunicaciones entre el nivel de transporte y aplicación TCP/IP

Modelos de desarrollo de sistemas distribuidos• Tecnologías asociadas

Sistemas Distribuidos: Introducción y Generalidades

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García3

APLICACIÓN

TRANSPORTE

INTERNET

INTERFAZ DERED

HARDWARE

RED DE

ACCESO

Sockets

MODELO TRADICIONAL CLIENTE Y SERVIDOR

INTERFAZ ENTRE EL NIVEL DE TRANSPORTE Y APLICACIÓN

NIVELES INTERMEDIOSNIVELES INTERMEDIOS == Middleware de comunicacionesMiddleware de comunicaciones

Por encima del interfaz de sockets,pueden existir 1 o más niveles intermedios de comunicacionesy, por tanto, 1 o más protocolos intermedios de comunicaciones

(p. ej., protocolo entre el stub del cliente y stub del servidor

en un sistema RPC, o elprotocolo IIOP entre el ORB

cliente y el ORB servidor más el protocolo entre el stub

cliente y skeleton servidor en un sistema CORBA, etc.)

(Stubs, Skeletons, ORBs = Entidades intermedias de comunicaciones)

TCP/IP

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García4

ARQUITECTURA DE CLIENTE/SERVIDOR EN DOS NIVELES

Sin middleware de comunicaciones

ARQUITECTURA DE CLIENTE/SERVIDOR EN TRES NIVELES

Middleware: Software de 1 o mMiddleware: Software de 1 o máás niveles s niveles intermedios de comunicaciones entre el cliente y intermedios de comunicaciones entre el cliente y el servidorel servidor: RPC, RMI, CORBA (ORB), ..., JDBC, …Facilitar las tareas al programador y que éste, por ejemplo, se olvide de las comunicaciones

MODELO TRADICIONAL CLIENTE/SERVIDORTipos de Arquitecturas Cliente/Servidor

- El modelo tradicional cliente y servidor divide una aplicación entre 2 o más componentes especializados distribuyendo la ejecución entre 1 o más máquinas mediante:

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García5

Aplicación de Usuario

RPCRPC

Interfaz de sockets

TCP UDP

IP

Interfaz de Accesoy Hardware

RedRed

SISTEMA ORIENTADOA LLAMADAS A FUNCIONES REMOTAS:

RPC de Sun: Sistema RPC más extendido (Unix)

Añade un nivel intermedio de comunicaciones

y, por tanto un protocolointermedio de comunicaciones

El sistema hace las llamadasdirectamente al API de sockets

RPC es la filosofRPC es la filosofíía operativaa operativade la mayorde la mayoríía de tecnologa de tecnologíías para el as para el desarrollo de sistemas distribuidos desarrollo de sistemas distribuidos

en el modelo cliente y servidoren el modelo cliente y servidor

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García6

SISTEMA A

FÍSICO FÍSICO

RED

SISTEMA B

TCP/UDP

ENLACE

IP

TCP/UDP

ENLACE

IP

Proceso Cliente

STUB CLIENTESTUB CLIENTE

Proceso Servidor

STUB STUB SERVIDORSERVIDOR

Protocolo stub cliente-stub servidor

SISTEMA RPC

Interpretay gestiona

las referencias remotas hechas

por el cliente

Interpreta ygestiona

las referencias remotas en referencias

locales

Interceptalas llamadas

a funciones remotas

Prog ver proc xid parm parm

xid parm parm

SOLICITUD

RESPUESTA

encapsula

Generado por el compilador IDL, define el modo en que se

debe llamar a un procedimiento del interfaz

de acceso del proceso servidor

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García7

Programación en RPCFichero fuente IDL

Compilador IDL

CabeceraStub cliente Stub servidor

Fuente cliente Fuente servidor

Compilador Compilador

Objetos clientey stub

Objetos servidory stub

Montador Montador

Ejecutable cliente Ejecutable servidor

Runtime library(RTL)

Runtime library(RTL)

-Vía IDL la especificación de un servicio es puramente declarativa y separada de su implementación-Para el cliente es totalmente transparente cómo estáimplementado el servicio

Vía IDL se define el interfaz de acceso al programa servidor:

-Nombre y nº del programa servidor-Nº de versión del programa servidor

-Nombre y nº de las funciones (prototipos)-Nombre y tipos de los parámetros

de la llamada

(De IDL al lenguaje de programación)

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García8

RPC: Proceso Cliente Solicita un Servicio

Stubdel clienteCliente

Entidad de

transporte

Servidor

Entidadde

transporte

1

2

3

4

5

67

8

9

10

Stubdel servidor

RED

Sistema RPC = software interno basado en un Sistema RPC = software interno basado en un nivel intermedio de comunicaciones nivel intermedio de comunicaciones estructurado en 2 mestructurado en 2 móódulos de comunicaciones o STUBSdulos de comunicaciones o STUBS que que independizan vindependizan víía IDL a las a IDL a las

implementaciones reales del cliente y servidorimplementaciones reales del cliente y servidor (permitiendo que puedan (permitiendo que puedan ser escritas en diferentes lenguajes) y permite ser escritas en diferentes lenguajes) y permite realizar las llamadas al interfaz de socketsrealizar las llamadas al interfaz de sockets

Protocolo de Comunicaciones entre StubsEncapsula los parámetros de la llamada

en un mensaje en formato de sintaxis común (p. ej., XDR de RPC de Sun)

Representación ficticiadel cliente

Representación ficticiadel servidor

Prog ver proc xid parm parm

xid parm parm

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García9

PROGRAMANDO CON UN INTERFAZ DE SOCKETS

Selección destinoConexión TCP

Connect

TCP UDP

EnvíoWrite

EnvíoSendto

Selección protocoloSocket

Selección puerto

Bind

LecturaRecvfrom

LecturaRead

CLIENTE

LiberarClose

Selección protocoloSocket

Selección puerto

Bind

TCPDefinición cola

Listen

Proceso peticiónAccept

LecturaRecvfrom

LecturaRead

UDP

SERVIDOR

EnvíoSend

EnvíoSendto

LiberarClose

NNºº puerto local y dir.IP localpuerto local y dir.IP localBind Bind

descriptor socketdescriptor socket

Descriptor socketDescriptor socket

ConexiConexióón n socket cliente socket cliente y socket servery socket server

mediante mediante establecimiento establecimiento

conexiconexióón TCPn TCP

Libera la conexiLibera la conexióón TCP n TCP previamente establecidapreviamente establecida

por el lado del clientepor el lado del cliente

UDP vUDP víía connect para no indicara connect para no indicarnnºº puerto remoto y dir.IP remotapuerto remoto y dir.IP remota

con write y readcon write y read

Para enviar y recibir datosPara enviar y recibir datosdel socket remoto vdel socket remoto víía UDPa UDP

(Cola de solicitudes de conexiónpendientes de aceptación y proceso)

(De solicitud de conexión)

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García10

socket (familia de direccionesfamilia de direcciones, tipo de sockettipo de socket, tipo de protocolo de comunicacionestipo de protocolo de comunicaciones)

AF_INETAF_INET6

SOCK_STREAMSOCK_DGRAM

SOCK_RAW

IP_PROTO_TCPIP_PROTO_UDP

IP_PROTO_IP0

SERVICIO DESEADO DE TRANSPORTE O IP

descriptor = socket(AF_INET, SOCK_STREAM, 0)descriptor = socket(AF_INET, SOCK_STREAM, 0)

connect(descriptor, dir_IP_remota, nº_puerto_remoto)

write(descriptor, puntero_dir_datos_a_transmitir, nº_octetos_a_transmitir)

read(descriptor, puntero_dir_almacenamiento, longitud_buffer)

CÓDIGO DEL CLIENTE

……

……

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García11

socket (familia de direccionesfamilia de direcciones, tipo de sockettipo de socket, tipo de protocolo de comunicacionestipo de protocolo de comunicaciones)

AF_INETAF_INET6

SOCK_STREAMSOCK_DGRAM

SOCK_RAW

IP_PROTO_TCPIP_PROTO_UDP

IP_PROTO_IP0

SERVICIO DESEADO DE TRANSPORTE O IP

descriptor = socket(AF_INET, SOCK_STREAM, 0)bind(descriptor, nº_puerto_local, dir_IP_local)

read(descriptor, puntero_dir_datos_a_transmitir, nº_octetos_a_transmitir)

send(descriptor, puntero_dir_almacenamiento, longitud_buffer)

CÓDIGO DEL SERVIDOR

listen(descriptor, nº_máximo de solicitudes_conexión)

accept(descriptor, puntero_estructura) dir_IP_remota, Nº_puerto_remoto

……

……

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García12

CLIENTE

close( )

socket( )

socket( )

bind( )

listen( )

connect( )

write( )

ESTABLECIMIENTO CONEXIÓN

DATOS (SOLICITUD)

DATOS (RESPUESTA) send( )read( )

close( )

read( )PROCESAMIENTO

SOLICITUD

accept( )

SERVIDOR

LAS FUNCIONES DEL INTERFAZ DE SOCKETSPARA TCP

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García13

SERVIDOR

recvfrom( )

sendto( )

DATOS (RESPUESTA)

socket( )

bind( )

sendto( )

DATOS (SOLICITUD)

PROCESAMIENTOSOLICITUD

recvfrom( )

BLOQUEO

socket( )

CLIENTE

LAS FUNCIONES DEL INTERFAZ DE SOCKETSPARA UDP

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García14

Aplicación de Usuario

Interfaz de SocketsInterfaz de Sockets

TCP UDP

IP

Interfaz de Accesoy Hardware

RedRed

SISTEMA BÁSICO ORIENTADO A LLAMADAS A FUNCIONES LOCALES (API)

Interfaz de Sockets de la Universidad de Berkeley

No existe middleware de comunicaciones,el programador tiene que trabajar a bajo nivel

y llamar directamentea las funciones de comunicaciones del API de programación proporcionado por un sistema

basado en un interfaz de sockets

Primer Interfaz de Sockets (y base de otros)fue desarrollado por la Universidad de Berkeley (Unix)

como un API basado en unas librerías de funciones<sys/socket.h>, <netdb.h> y <netinet/in.h>

y estructuras escritas en C para facilitar la creación de nuevas aplicaciones TCP/IP

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García15

Características de un Sistema RPCModo de operación: SOLICITUDES Y RESPUESTAS POR LA RED

AsimAsiméétrico (semidtrico (semidúúplex): Toda respuesta necesita plex): Toda respuesta necesita previamente de una solicitudpreviamente de una solicitudSSííncrono: ncrono: ““Parada y EsperaParada y Espera”” entre una solicitud y su entre una solicitud y su respuestarespuestaPunto a punto o unicast sobre TCP/UDP

• Opción RPC de Sun: difusión (broadcast) sobre UDP

Servidor RPC:Iterativo: Atiende una operación y no procesa otra hasta que no acaba la primera“Pseudoconcurrente”: Atiende múltiples clientes a la vez pero los va procesando de uno en uno

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García16

FÍSICO FÍSICO

RED

TCP

ENLACE

IP

TCP

ENLACE

IP

Proceso Cliente

STUB CLIENTESTUB CLIENTE

Proceso Servidor

SKELETON SKELETON SERVIDORSERVIDOR

Protocolo stub-skeleton

SISTEMA JAVA RMI

Referencias locales y remotas segúnformato Java

(Mensajes de solicitud y respuesta)

SOLICITUD

RESPUESTAInterpretay gestiona

las referencias remotas hechas

por el cliente

Interpreta ygestiona

las referencias remotas en referencias

locales

SISTEMA A SISTEMA B

Interceptalas invocaciones

a métodos remotos

(RPC en JavaRPC en Java)

Comunicación entre objetos remotos JAVA

y creación de aplicacionesJava distribuidas

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García17

Modelo de referencia de una arquitectura común de componentes distribuidos basados en el bus de objetos ORBORB (Object Request Broker) o intermediario de solicitudes entre objetos Dispone de 2 niveles intermedios de comunicaciones (middleware Dispone de 2 niveles intermedios de comunicaciones (middleware de comunicacionesde comunicaciones): ):

Stub cliente y Skeleton servidor Stub cliente y Skeleton servidor ORB cliente y ORB servidor ORB cliente y ORB servidor

EspecificaciEspecificacióón abiertan abierta (grupo OMG: Object Management Group) que define una arquitectura de componentes distribuidos con el objetivo de permitir la comunicación e interoperabilidad entre objetos heterogéneos para la creación de aplicaciones en red mediante llamadas a métodos remotos independientemente del:

Lenguaje de implementación de los objetosLocalización física de los objetosEstado de ejecución de los objetosArquitectura de máquina y sistema operativoProtocolos de comunicacionesetc.

CORBACORBA (Common Object Request Broker Architecture)

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García18

SISTEMA A

FÍSICO FÍSICO

RED

SISTEMA B

TCP

ENLACE

IP

TCP

ENLACE

IP

Proceso Cliente

ORB CLIENTEORB CLIENTE

STUB CLIENTESTUB CLIENTE

Proceso Servidor

ORB SERVIDORORB SERVIDOR

SKELETON SKELETON SERVIDORSERVIDOR

Protocolo stub-skeleton

IIOP

SISTEMA CORBASOLICITUD

RESPUESTAInterpretay gestiona

las referencias remotas hechas

por el cliente

Interpreta ygestiona

las referencias remotas en referencias

locales

Protocolo de comunicaciones Protocolo de comunicaciones a trava travéés del cual se comunican todoss del cual se comunican todos

los componentes CORBAlos componentes CORBAIndependientemente delIndependientemente del

lenguaje de implementacilenguaje de implementacióón,n,localizacilocalizacióón del objeto servidor,n del objeto servidor,estado del objeto servidor, etc.estado del objeto servidor, etc.

Gestión de referenciaslocales y remotas

Interceptalas invocaciones

a métodos remotos

(Mensajes de solicitud y respuesta)

(RPC sobre ORB)

Comunicación entre objetos remotos

heterogéneos y creación de aplicaciones

en red distribuidas

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García19

CLIENTE

Stub IDL cliente

ORB localcliente

SERVIDOR

Skeleton IDL servidor

ORB localservidor

IIOPIIOP (Internet Inter(Internet Inter--ORB Protocol)ORB Protocol)

Invocaciónmétodo remoto

Resultados

Implementación real

Implementación real

Implementación ficticia del objeto cliente Implementación

ficticia del objeto servidor

Middleware de CORBA Middleware de CORBA Niveles Intermedios de ComunicacionesNiveles Intermedios de Comunicaciones

A través del protocolo de comunicaciones IIOP se comunican, finalmente, todos los componentes de CORBA incluyendo al que permite (Adaptador de Objetos)

localizar y activar objetos servidores remotos y pasar la solicitud de servicio al skeleton pertinente

Gestión de referenciaslocales y remotas

-Vía IDL la especificación de un servicio es puramente declarativa y separada de su implementación-Para el cliente es totalmente transparente como está implementado el servicio

Vía IDL se define el interfaz de acceso al programa servidor:

Adaptador de Objetos

(POA)

(Mensajes de solicitud y respuesta)

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García20

Diagrama de Interacción y Ruta de Invocación de Objetos CORBA

NNúúcleo del ORBcleo del ORB

Stub IDLInterfaz Interfaz del ORBdel ORB

SkeletonIDL

ClienteImplementación

de Objetos

1122

33

44 55

Cliente Stub POAImplementación

del Servidor

44

ORB

Skeleton

Adaptador de objetos

(Interfaz POA)

11

22

33

44

55

registro

IOR (Interoperable Object Reference)

(localiza y activa) Se pone a la escucha

solicitudrespuesta

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García21

CORBA: Interoperabilidad Cliente/Servidor

Ada Cobol Java

Intermediario de Solicitudes entre Objetos (ORB)Intermediario de Solicitudes entre Objetos (ORB)

CLIENTE

Stub

C C++ SmallTalk Ada Cobol Java

SERVIDOR

C C++ SmallTalk

… …Stub Stub Stub Stub Stub skeleton skeleton skeleton skeleton skeleton skeleton

Si el producto ORB (CORBA) dispone de los compiladores IDL adecuados, los clientes y servidores se pueden escribir en cualquier lenguaje

CORBA = RPC SOBRE ORBCORBA = RPC SOBRE ORB

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García22

Servicios Web DistribuidosEscenario

REGISTRO DEL SERVICIO

CONSUMIDOR DEL SERVICIO

PROVEEDOR DEL SERVICIO

Invocación (o solicitud) del servicio

SOAP (XML)/HTTP

Publicación del servicioDescubrimiento del servicio

Servidor Web

Servidor UDDI(Registro UDDI

público o privado)

Clientes de servicios Web:Aplicación JavaAplicAción C++

Respuesta (resultado) del servicio

SOAP (XML)/HTTP

(mensajes XML estandarizados vía SOAP sobre HTTP)

(mensajes XML estandarizados Vía SOAP sobre HTTP)

CLIENTEDocumentos

WSDLDocumentos

WSDL 12

3

Servidor Web

Servicio Web = RPC basado en WSDL/XML/SOAP

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García23

MODELOS DE DESARROLLO DE SISTEMAS DISTRIBUIDOS

1.1. Modelo de igual a igual (peer to peer)Modelo de igual a igual (peer to peer)Redes de igual a igual o de pares o peer to peer (P2P)

• Comunicación entre sistemas finales iguales• Ningún sistema final tiene mayor prioridad que otro• No existen clientes y servidores fijos• Cada proceso participante es cliente (solicitudes) y servidor (respuestas)

simultáneamente– Cliente envía solicitudes de servicio– Servidor escucha de forma pasiva y proporciona servicios como respuestas

• Aplicaciones: Napster, eMule, eDonkey, GNUtella, Kazaa, MSN Messenger, Skype, …

2.2. MODELO TRADICIONAL CLIENTE Y SERVIDORMODELO TRADICIONAL CLIENTE Y SERVIDORRedes de cliente y servidor

• Cada proceso participante es cliente (solicitudes) o servidor (respuestas)

– El proceso servidor puede, a su vez, convertirse en cliente de otro proceso servidor igual• Aplicaciones: DNS, SMTP, …• Tecnologías: API de sockets, Sun RPC, JAVA RMI, producto CORBA (ORB), etc.

3.3. Modelo de eventosModelo de eventosRedes de objetos remotos mediante un mecanismo de publicaciones, suscripciones mecanismo de publicaciones, suscripciones y notificacionesy notificaciones

• Un proceso es cliente y otro servidor pero sin interacciones de mensajes del tipo de solicitud y respuesta

• Tecnología: JINI (Sun Microsystems)

SISTEMAS DISTRIBUIDOS

UPMFI

© Fco. Javier Yágüez García24

Sistemas cliente y servidor Sistemas cliente y servidor orientados aorientados a:1.1. Llamadas a funciones locales (API)Llamadas a funciones locales (API): Interfaz (API) de socketsInterfaz (API) de sockets

•• No existe un nivel intermedio de comunicaciones (middleware de No existe un nivel intermedio de comunicaciones (middleware de comunicacionescomunicaciones))

•• Trabajar directamente a bajo nivel con las funciones de comunicaTrabajar directamente a bajo nivel con las funciones de comunicaciones del APIciones del API de un sistema basado en un interfaz de socketsinterfaz de sockets:– Interfaz de sockets de la Universidad de Berkeley (Unix)– Interfaz de Windows sockets de Microsoft (Windows)– Interfaz de sockets en Java de Sun Microsystems (entorno Java)

2.2. Llamadas a funciones remotas (del proceso servidor remotoLlamadas a funciones remotas (del proceso servidor remoto)): Sun RPCSun RPC, …•• Sistema hace las llamadas directas al interfaz de sockets = FILOSistema hace las llamadas directas al interfaz de sockets = FILOSOFSOFÍÍA A

OPERATIVA DEL RESTO DE SISTEMASOPERATIVA DEL RESTO DE SISTEMAS (salvo agentes móviles) = IDLIDL +NIVEL NIVEL INTERMEDIO DE COMUNICACIONES (middleware de comunicaciones)INTERMEDIO DE COMUNICACIONES (middleware de comunicaciones)

3.3. Invocaciones a mInvocaciones a méétodos remotostodos remotos (objetos distribuidos): JAVA RMI (RPC en Java), CORBA (RPC sobre ORB), COM + (RPC sobre bus Microsoft para Windows orientado a objetos en la plataforma .NET) y Enterprise Java Beans (Java RMI en la plataforma Java EE de Sun)

4.4. Servicios Web distribuidosServicios Web distribuidos: webservices de Sun (pila Metro), Java EE, .NET (Microsoft), etc.• RPC basado en WSDL/XML/SOAP• Librerías XML, SOAP, WSDL y UDDI

5.5. Agentes mAgentes móóvilesviles: Sin solicitudes y respuestas por la redSin solicitudes y respuestas por la red, sólo en el propio entorno de ejecución en donde se ofrece el servicio. No hay que estar a la espera del servicio y los cálculos se mueven hacia los datos y no al revés (p. ej., Aglets de IBM Tokyo Research Laboratory).

Modelo Tradicional Cliente y Servidor: 5 Tecnologías o Sistemas