Uploaded by TheBeruGamer YT

tema.2

advertisement
Diseño de aplicaciones telemáticas
Middleware
Introducción
Middleware
●
Algún ejemplo de las responsabilidades del middleware:
–
La API de sockets BSD no maneja la problemática asociada a la
representación de datos transmitidos por la red:
●
Big Endian/Little Endian de las máquinas
●
El tamaño de la palabra de la arquitectura (32 o 64 bit)
●
La forma de estructuras de datos complejas, con diferencias en
padding y alineamiento según la máquina
–
Falta de gestión de mensajes de control que permitieran por ejemplo
mandar cierta tarea a una rutina en el equipo remoto
–
Necesario proceso de serialización
●
Empaquetar los datos en forma adecuada para su transmisión por la red
●
Marshaling: equivalente a serialización aplicada a objetos con estado
Middleware
●
Middleware es cualquier capa que se encuentra entre sistema
operativo y aplicaciones:
–
–
–
Abstrae conceptos como el paso de mensajes a bajo nivel entre las redes de
ordenadores
●
Implementa serialización y marshaling de objetos
●
Reintentos, colas de peticiones, transaccionalidad y serialización de operaciones
●
Paneles de control, gestión de errores, garantías de ejecución
Oculta “detalles” de implementación
●
Por ejemplo el problema de la heterogeneidad de redes y máquinas
●
Abstracción del entorno de ejecución: arquitectura, endianness
Favorece la reutilización (modelo de facilities)
●
Por ejemplo, FTP y HTTP transfieren ficheros
–
¿Porqué no reutilizar esa parte?
Middleware
●
En todas las capas
1-N Máquinas
Middleware
Aplicación
Aplicación
Aplicación
Middleware
Middleware
socket
Sistema operativo y hardware
Middleware
Middleware
●
Facilidades típicas de un middleware:
–
Servicio de nombres: identificación de servicios
–
Ejecución remota
–
Acceso a datos distribuidos
–
Persistencia de datos
–
Transacciones: múltiples operación de manera atómica
–
Seguridad: encriptación y autenticación
Middleware
●
Desventajas
–
Pérdida de la eficiencia en la transmisión de datos
●
●
–
Mayor carga de señalización (cabeceras de protocolos y paquetes
de control)
Transferencias masivas de datos se deben implementar
directamente sobre el API de sockets BSD (HTTP, FTP, etc.) en
lugar de usar middleware si se quieren hacer de forma eficiente
Pérdida de control
●
Sobre los paquetes transmitidos por la red y la información
intercambiada
Middleware
●
En todas las capas
Modelos de Middleware
Modelos de Middleware
●
Tipos:
–
Llamada a procedimientos remotos (RPC)
–
Objetos distribuidos (ROI, CORBA, RMI)
–
Comunicación orientada a mensajes (MOC)
–
Comunicación orientada a streams (streaming, logs de
eventos)
Remote Procedure Call (RPC)
Remote Procedure Call (RPC)
●
Está formado por dos partes asimétricas
–
Permite llamar a procedimientos (líneas de código)
localizados y ejecutados en otra máquina
–
La máquina A llama a un procedimiento en la máquina B
●
El proceso llamante en A es suspendido.
●
Tiene lugar la ejecución del procedimiento en B.
●
Los resultados retornan a A.
Remote Procedure Call (RPC)
●
Paso de parámetros
–
–
Mismo convenio de formatos y representación de datos:
●
Independiente de la máquina
●
Unificación Big Endian y Little Endian.
Punteros o parámetros por referencia:
●
●
Se pasa copia de la zona de memoria al servidor
Se copia el resultado de nuevo en la misma zona original del
cliente.
Remote Procedure Call (RPC)
●
¿Como se definen?
–
–
Los procedimientos (funciones, servicios) disponibles
●
Se especifican mediante Interface Definition Language (IDL)
●
Se utiliza en tiempo de compilación.
Existe la posibilidad de RPC asíncrono
●
En ellos se suele enviar la petición
●
se espera a la aprovación de la operación
●
Se sigue el procesado en el cilente
●
Tarde o temprano se recibe el resultado
Remote Procedure Call (RPC)
●
Implementaciones
–
DCE
●
OpenSource
●
Portado a multitud plataformas
●
●
–
Casi todo implementado a nivel de usuario menos el sistema de ficheros que
funciona a nivel de núcleo.
Funcionalidades:
–
Ejecución remota de procedimientos
–
Servicio de ficheros distribuidos
–
Servicios de directorio (Búsqueda de recursos)
–
Servicio de seguridad
–
Sincronización de relojes
SUN RPC
Remote Object/Method Invocation (ROI/RMI)
Remote Object/Method Invocation (ROI/RMI)
●
Aplicar la idea de los RPC a los objetos
–
Los objetos encapsulan:
●
Estado
●
Métodos
–
Los métodos se ofrecen a través de dicho interfaz.
–
El objeto esta en un lugar y los métodos en otro
●
El objeto podría tener el estado distribuido entre varias
máquinas.
Remote Object/Method Invocation (ROI/RMI)
●
Aplicar la idea de los RPC a los objetos
–
Hay un equivalente al STUB de los RPCs
●
–
Una interfaz permite la compilación y la definición de las
llamadas.
–
Proxy pogramado en el cliente (define los metodos pero no los implementa)
–
Skeleton programado en el servidor (Aqui se implementan los métodos)
Para el envío del estado hacia quien tiene implementado
el método se emplea marshalling o serialización
Remote Object/Method Invocation (ROI/RMI)
●
Aplicar la idea de los RPC a los objetos
–
–
La referencia a un objeto incluye:
●
IP servidor
●
Puerto del servidor
●
Identificador de objeto
Distintas estrategias en la creación de objetos:
●
Creación en tiempo de compilación
–
●
Creación en tiempo de ejecución
–
–
El lengaje de todo el sistema es el mismo
Permite objetos multilenguaje
Distinto tipo de objeto según su persistencia:
●
Persistentes: Se almacenan en almacenamientos secundarios
●
Transitorios: Solo existen mientras exista el servidor
Remote Object/Method Invocation (ROI/RMI)
●
OJO esto presenta inconvenientes:
–
Normalmente, el objetivo de todas las implementaciones es
ocultar la red al desarrollado, esto es, ocultar el problema de
la programación distribuida
●
●
●
Los procesos en remoto pueden fallar por problemas de conectividad,
a diferencia de la ejecución en local
Así que el problema sigue estando ahí
Hacer como si no tuviesemos ejecución distribuida no es una buena
solución:
–
–
HACER EXPLÍCITO LO IMPLICITO
Ejemplo fallido: CORBA
Web Services
Web Services
●
La web se ha llenado de aplicaciones.
●
La web está pensada para interacción con humanos.
●
●
Queremos hacer la web accesible a otros ordenadores y
aplicaciones.
–
Un nuevo middleware!
–
Acceso directo, no mediante la simulación de un cliente
Ventajas:
–
Protocolos conocidos (HTTP)
–
HTTP es el tráfico que se permite normalmente en las redes (a diferencia de
otros servicios en otros puertos)
–
Permite reutilizar infraestructura existente (servidor web)
Web Services
●
●
¿Qué es un servicio Web?
–
Identificada por un URI
–
Uso mediante mediante artefactos XML.
–
Preparado para ser automatizable.
–
El interfaz define una colección de operaciones que son
accesibles de forma remota usando mensajes XML mediante
protocolos estándar de Internet.
Consiste en una colección de operaciones que
pueden ser usadas por un cliente a través de Internet.
Web Services
●
Ejemplo de combinación de Web Services
–
Web de agencias de viajes hace uso de interfaces web
services que proveen los proveedores de servicio final
–
Agregadores de contenido
SOAP
SOAP
●
●
●
Es un protocolo basado en XML:
–
intercambio de información
–
forma descentralizada
–
entornos distribuidos.
Define un mecanismo:
–
para el paso de instrucciones (comandos)
–
parámetros entre clientes y servidores (RPCs).
Totalmente independiente:
–
de la plataforma
–
del modelo de datos
–
Del lenguaje de programación usado.
●
Se transporta normalmente sobre HTTP.
●
Utiliza:
–
SOAP con XML como payload.
–
HTTP como transporte.
SOAP
●
XML (eXtensible Markup Language)
–
XML define el formato textual para representar datos estructurados.
<etiqueta atributo=“valor”>contenido</etiqueta>
–
Forma sencilla de describir estructuras de datos complejas y
jerárquicas (serializaciones).
–
Separa la definición de estructuras de la presentación de las mismas.
–
Características:
●
Flexibilidad
●
Facilidad de procesado
●
Independencia de plataformas/arquitecturas
SOAP
●
XML Ejemplo:
<?xml version="1.0"?>
<catalogo>
<libro ISBN=“1-861003-11-0”>
<titulo>Professional XML</titulo>
<autor>Didier Martin et al.</autor>
<editorial>Wrox</editorial>
<anyo>2000</anyo>
</libro>
<libro ISBN=“0-07-212646-9”>
<titulo>XML Developer’s Guide</titulo>
<autor>Fabio Arciniegas</autor>
<editorial>McGraw-Hill</editorial>
<anyo>2001</anyo>
</libro>
</catalogo>
SOAP
●
●
WSDL (Web Services Description Language)
–
XML
–
descripción de servicios web
–
detalles de la conexión
WSDL definirá:
–
Operaciones que puede realizar
–
Dónde está
–
Cómo se invoca
SOAP
●
UDDI (Universal Description Discovery and Integration)
–
Estructura de Datos estándar
–
Basado en XML
–
Es un servicio Web
–
Soporta:
●
–
●
Gestión de taxonomía para ayudar las búsquedas
Búsquedas por personas y máquinas
Los usuarios buscan en este servicio:
–
Reciben un puntero al documento WDSL que caracteriza el servicio
SOAP
●
Componentes
SOAP
●
Componentes
Otros interfaces a servicios web
Otros interfaces a servicios web
●
XML-RPC
–
●
REST (REpresentational State Tranfer)
–
–
●
Mediante métodos POST HTTP peticiones y respuestas XML que imitan una
funcionalidad RPC sobre la web
Patrón de diseño
●
Peticiones mediante métodos GET/HTTP
●
Respuestas XML/JSON
●
Imitan una funcionalidad RPC sobre la web
Se codifica la petición en la URL
●
Simplifica la depuración
●
Válido para peticiones de tamaño pequeño
AJAX (Asynchronous JavaScript and XML)
Comunicación orientada a mensajes
(MOC)
Comunicación orientada a mensajes
(MOC)
●
En este sistema:
–
–
La comunicación se basa en tickets
●
En determinados entornos se pueden almacenar
●
Útil en sistemas con comunicación intermitente
Las comunicaciones puede ser:
●
Sincronas/Asincronas
–
●
El que envia el mensaje sigue procesando su programa despues del envío de este.
Persistente/Transitorio
–
Si es necesario que el servidor que realiza la tarea esté activo a la hora de enviar el mensaje.
●
Transitorios
●
Basados en recibo
●
Basados en envío
●
Basados en respuesta
Comunicación orientada a mensajes
(MOC)
●
Message Queue (MQs):
–
Message passing Interface (MPI)
●
Estandar para nodos corriendo aplicación paralelizada
–
Mare Nostrum
●
Libreria disponible en casi todos los lenguajes de programación.
●
No soporta:
●
–
caida de procesos
–
Caida de la red
La comunicación se realiza entre un grupo de procesos identificados por:
–
GroupID
–
ProcessID
Comunicación orientada a streams
(streaming)
Comunicación orientada a streams
●
Stream: información continua con requerimientos temporales y de ordenación en los datos
encapsulados.
–
●
Ejemplo: señal PCM voz 8bits 8KHz -> 64Kbps
Tipos de transmisión:
–
Síncrona: los datos se envían a la máxima tasa para que lleguen al destino antes de cuando sean requeridos.
●
–
Isosíncrona: los datos lleguen al destino a determinada tasa dentro de ciertos umbrales, de manera que el
buffer en recepción es menor.
●
●
Ej: voz sobre IP (paquetes de 200bytes cada 20ms).
Un stream puede ser complejo y estar compuesto por varios substreams.
–
●
Ej: predescarga de contenidos pregrabados.
Ej: pista video y audio.
La dependencia temporal exige recursos de calidad de servicio (QoS) en la red:
–
Tasa
–
Retardo
–
Jitter.
Sistemas de actores
Sistemas de actores
●
●
Actor: objetos que encapsulan estado y comportamiento y se comunican
exclusivamente usando una cola de mensajes, en un bucle:
–
Leer mensaje
–
Procesar mensaje: cambiar estado y/o enviar mensajes a otros actores
Por defecto no es un modelo de petición/respuesta
–
●
●
Se implementa y controla en la aplicación, si es necesario
Concurrencia: Como máximo un hilo puede ejecutar un actor al mismo tiempo
–
Modelo simple y muy eficiente, de petición/respuesta
–
Modelo generalmente asíncrono
–
Nativamente distribuido: Escalable pero más complejo
–
No hay muchas implementaciones y no todas al mismo nivel de madurez
Ejemplos: Erlang, Akka Actors
Download