Sistemas Distribuidos. Llamadas a Procedimientos Remotos

Documentos relacionados
Comunicación en Sistemas Distribuidos

RPC (llamada a un procedimiento remoto)

RPC. Llamadas a Procedimientos Remotos (RPC) Paradigmas. Conceptos. Modelo Conceptual

Middleware. Introducción: capas de middleware

2.3 Llamada a procedimientos remotos (RPC)

Lección 8 Introducción a las llamadas a procedimientos remotos (RPC) Universidad de Oviedo / Dpto. de Informática

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

RPC Llamadas a Procedimientos Remotos

Desarrollo de Aplicativos con winsockets

Las RPC s. El cliente debe saber: Transparencia? 1. petición. 2. respuesta

Sistemas Distribuidos. Soporte de Sistemas Operativos

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Tema 4: INVOCACIÓN REMOTA

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX.

ARQUITECTURAS CLIENTE/SERVIDOR

APLICACIONES DE INTERNET: SOAP

Aspectos Básicos de Networking

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Arquitecturas cliente/servidor

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Tema 2 Introducción a la Programación en C.

Redes de Computadores Más sobre TCP. Área de Ingeniería Telemática Dpto. Automática y Computación

RPC. ONC (Open Network Compu2ng) n Ru2nas para la conversión de datos XDR. n XDR maneja estructuras complejas n Herramienta de generación de programas

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Bloque III: El nivel de transporte. Tema 6: Conexiones TCP

Modelo OSI y TCP/IP. Teleprocesamiento Ing. Zoila Marquez.

Conceptos básicos de redes TCP/IP. LANs

Tema 3.1: Introducción a Servicios Web

Programación Orientada a Objetos en Java

Facultad de Ingeniería Mecánica y Eléctrica SEGURIDAD EN REDES EVOLUCION DE LA SEGURIDAD EN REDES TCP/IP

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Modelo de Objetos Distribuidos

ARQUITECTURA BÁSICA DEL ORDENADOR: Hardware y Software. IES Miguel de Cervantes de Sevilla

Unidad II Modelos de Referencias TCP/IP

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Introducción a las redes de ordenadores y protocolos de comunicación. Ordenador que no depende de otro para su funcionamiento.

Protocolos de Internet

Sistemas distribuidos

GUÍA DE ESTUDIO TEMA 2. MODELO OSI. ESTÁNDARES Y PROTOCOLOS. MODELO TCP/IP.

2.2 Nombres, Ligado y Ámbito

La capa de Aplicación

Bloque IV: El nivel de red. Tema 12: ICMP

Sistemas Distribuidos: Migración de Procesos

Cuando el lenguaje si importa

-> Todo socket viene definido por dos características fundamentales:

Módulo 2 Comunicación

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Comandos TCP-IP para Windows

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Unidad I: Organización del Computador. Ing. Marglorie Colina

Objetos Distribuidos - Componentes. Middleware

Alumno: Grupo: Ejercicio 1. Responda a las siguientes preguntas cortas justificando brevemente su respuesta (3 puntos).

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

Tipos de comunicación La comunicación puede ser:

Fundamentos de Ordenadores. Depurar programas usando Nemiver

Ubuntu Server HOW TO : DHCP

Clasificación n de los Sistemas Operativos. Clasificación de los SO Estructuras de los SO Modos de procesamiento

Herramientas Informáticas I Software: Sistemas Operativos

SISTEMAS OPERATIVOS Y TCP/IP. - El Modelo de Referencia TCP/IP -

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

TALLER DE PROGRAMACION I

Equipamiento ADSL» Inalámbrico. Adaptador USB PAUTAS PARA LA VERIFICACION TCP/IP

20483 Programación en C#

Usando el Sistema Operativo

Componentes de un S.O.

Capítulo 1. Componentes de CORBA.

SISTEMAS DISTRIBUIDOS DE REDES 3.- ESTANDAR CORBA Características

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA)

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Conceptos generales de sistemas distribuidos

1. Computadores y programación

Diagramas De Casos De Uso

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

SISTEMAS DE TRANSMISION DE DATOS: TEORIA Y PRACTICA TELEMÁTICAS

Shell Script de instalación y configuración para el servicio DHCP en CentOS v5.x. Manual de instrucciones.

Introducción a los Sistemas Operativos

PASOS PARA OPTIMIZAR SU CENTRAL DE MONITOREO

CAPITULO 22 REMOTE PROCEDURE CALL Introducción [10][11][S.O.]

Redes de Computadores - Problemas y cuestiones

1.4.1 Inicio de la computadora por primera vez Hay problemas Causas, síntomas y soluciones a posibles averías...

Computadora y Sistema Operativo

a) Indique las principales características de los sistemas distribuidos.

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Un. VI. Generador de código intermedio.

LÓGICA DE PROGRAMACIÓN

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Capítulo 16. Diagrama de Clases UML

Cristian Blanco

Transcripción:

Sistemas Distribuidos Llamadas a Procedimientos Remotos Sun RPCs RPC Sistemas Distribuidos 1 Llamadas a Procedimientos Remotos Cliente send(msg) receive(rpy) msg rpy Paso de mensajes (visión de bajo nivel) receive(msg) send(rpy) Servidor RPC Sistemas Distribuidos 2 1

Llamadas a Procedimientos Remotos Cliente x=buscar(1556) Llamadas a procedimientos remotos (más alto nivel)?? int buscar(int cod) { return val; } Comodidad Servidor RPC Sistemas Distribuidos 3 Llamadas a Procedimientos Remotos Remote Procedure Call: RPC. Evolución: Propuesto por Birrel y Nelson en 1985. Sun RPC es la base para varios servicios actuales (NFS o NIS). Llegaron a su culminación en 1990 con DCE (Distributed Computing Environment) de OSF. Han evolucionado hacia orientación a objetos: invocación de métodos remotos (CORBA, RMI). RPC Sistemas Distribuidos 4 2

Funcionamiento General de RPC Cliente: El proceso que realiza una la llamada a una función. Dicha llamada empaqueta los argumentos en un mensaje y se los envía a otro proceso. Queda la espera del resultado. Servidor: Se recibe un mensaje consistente en varios argumentos. Los argumentos son usados para llamar una función en el servidor. El resultado de la función se empaqueta en un mensaje que se retransmite al cliente. RPC Sistemas Distribuidos 5 Funcionamiento General de RPC Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia). RPC Sistemas Distribuidos 6 3

Elementos Necesarios Código cliente. Código del servidor. Formato de representación. Definición del interfaz. Localización del servidor. Semánticas de fallo. Cliente x=buscar(1556) int buscar(int cod) { return val; } Servidor RPC Sistemas Distribuidos 7 Código Cliente/Código Servidor Las funciones de abstracción de una llamada RPC a intercambio de mensajes se denominan resguardos (stubs). SISTEMA CLIENTE CÓDIGO DE LA APLICACIÓN RESGUARDO CLIENTE INICIO LLAMADA 1 BIBLIOT. EJECUCIÓN 2 RPC PREPARA ENTRADA FIN LLAMADA CONVIERTE 9 SALIDA ENVÍA ENTRADA RECIBE SALIDA 8 SISTEMA SERVIDOR PROCEDIMIENTOS 5 EJECUTA PROCEDIMIENTO REMOTO RESGUARDO SERVIDOR 6 BIBLIOT. EJECUCIÓN RPC 7 CONVIERTE ENTRADA 4 PREPARA SALIDA RECIBE Y PASA TRANSMITE SALIDA 3 RPC Sistemas Distribuidos 8 4

Resguardos (stubs) Se generan automáticamente por el software de RPC en base a la interfaz del servicio. Son independientes de la implementación que se haga del cliente y del servidor. Sólo dependen de la interfaz. RPC Sistemas Distribuidos 9 Resguardos (stubs) Tareas que realizan: Localizan al servidor. Empaquetan los parámetros y construyen los mensajes. Envían el mensaje al servidor. Espera la recepción del mensaje y devuelven los resultados. Se basan en una librería de funciones RPC para las tareas más habituales. RPC Sistemas Distribuidos 10 5

Formato de Representación Una de las funciones de los resguardos es empaquetar los parámetros en un mensaje: aplanamiento (marshalling). RPC Sistemas Distribuidos 11 Formato de Representación Problemas en la representación de los datos Servidor y cliente pueden ejecutar en máquinas con arquitecturas distintas. Big Endian o Little Endian XDR (external data representation) es un estándar que define la representación de tipos de datos. Pasos de parámetros (entrada/salida): Problemas con los punteros: Una dirección sólo tiene sentido en un espacio de direcciones. RPC Sistemas Distribuidos 12 6

Definición de Interfaces: IDL IDL (Interface Definition Language) es un lenguaje de representación de interfaces: Hay muchas variantes de IDL: Integrado con un lenguaje de programación (Cedar, Argus). Específico para describir las interfaces (RPC de Sun y RPC de DCE). Define procedimientos y argumentos (No la implementación). Se usa habitualmente para generar de forma automática los resguardos (stubs). RPC Sistemas Distribuidos 13 Definición de Interfaces: IDL Server ServidorTickets { procedure void reset(); procedure int getticket(in string ident); procedure bool isvalid(in int ticket); } RPC Sistemas Distribuidos 14 7

Localización del Servidor La comunicación de bajo nivel entre cliente y servidor por medio de paso de mensajes (por ejemplo sockets) Requiere Localizar la dirección del servidor Dirección IP como número de puerto en el caso de sockets. Enlazar con dicho servidor (verificar si esta sirviendo). Estas tareas las realiza el resguardo cliente. En el caso de servicios cuya localización no es estándar se recurre al enlace dinámico (dynamic binding). RPC Sistemas Distribuidos 15 Enlace Dinámico Enlace dinámico Permite localizar objetos con nombre en un sistema distribuido Servidores que ejecutan las RPC. RPC Sistemas Distribuidos 16 8

Enlace Dinámico Tipos de enlace: Enlace no persistente La conexión entre el cliente y el servidor se establece en cada llamada RPC. Enlace persistente La conexión se mantiene después de la primera RPC: Útil en aplicaciones con muchas RPC repetidas. Problemas si lo servidores cambian de lugar o fallan. RPC Sistemas Distribuidos 17 Enlazador Dinámico Enlazador dinámico (binder) Es el servicio que mantiene una tabla de traducciones entre nombres de servicio y direcciones Incluye funciones para: Registrar un nombre de servicio (versión). Eliminar un nombre de servicio. Buscar la dirección correspondiente a un nombre de servicio. RPC Sistemas Distribuidos 18 9

Enlazador Dinámico Como localizar al enlazador dinámico: Ejecuta en una dirección fija de una computadora fija. El sistema operativo se encarga de indicar su dirección. Difundiendo un mensaje (broadcast) cuando los procesos comienzan su ejecución. RPC Sistemas Distribuidos 19 RPC: Protocolo Básico enlaza con el servidor prepara parámetros, envía petición Desempaqueta la respuesta cliente servidor Se registra con un servicio de nombres recibe petición Ejecuta el procedimiento envía petición RPC Sistemas Distribuidos 20 10

Semántica Fallos Problemas que pueden plantear las RPC: El cliente no es capaz de localizar al servidor. [1] Se pierde el mensaje de petición del cliente al servidor. [2] Se pierde el mensaje de respuesta del servidor al cliente. [3] El servidor falla después de recibir una petición. [4] El cliente falla después de enviar una petición. [5] RPC Sistemas Distribuidos 21 Semántica Fallos [5] Cliente Cliente Cliente Cliente [1] [2]? Servidor Servidor Servidor Servidor [4] El cliente no es capaz de localizar al servidor. [1] Se pierde el mensaje de petición del cliente al servidor. [2] Se pierde el mensaje de respuesta del servidor al cliente. [3] El servidor falla después de recibir una petición. [4] El cliente falla después de enviar una petición. [5] RPC Sistemas Distribuidos 22 11

Cliente no puede localizar al servidor El servidor puede estar caído El cliente puede estar usando una versión antigua del servidor La versión ayuda a detectar accesos a copias obsoletas Cómo indicar el error al cliente Devolviendo un código de error (-1) No es transparente Ejemplo: sumar(a,b) Elevando una excepción Necesita un lenguaje que tenga excepciones RPC Sistemas Distribuidos 23 Pérdida de Mensajes del Cliente Es la más fácil de tratar. Se activa una alarma (timeout) después de enviar el mensaje. Si no se recibe una respuesta se retransmite. Depende del protocolo de comunicación subyacente. RPC Sistemas Distribuidos 24 12

Pérdidas de Mensajes de Respuesta Más difícil de tratar Se pueden emplear alarmas y retransmisiones, pero: Se perdió la petición? Se perdió la respuesta? El servidor va lento? RPC Sistemas Distribuidos 25 Pérdidas de Mensajes de Respuesta Algunas operaciones pueden repetirse sin problemas (operaciones idempotentes) Idempotentes Pueden repetirse n veces sin alterar el resultado Una transferencia bancaria no es idempotente Solución con operaciones no idempotentes es descartar peticiones ya ejecutadas Un nº de secuencia en el cliente Un campo en el mensaje que indique si es una petición original o una retransmisión RPC Sistemas Distribuidos 26 13

Fallos en los Servidores El servidor no ha llegado a ejecutar la operación Se podría retransmitir El servidor ha llegado a ejecutar la operación RPC Sistemas Distribuidos 27 Fallos en los Servidores El cliente no puede distinguir los dos Qué hacer? No garantizar nada Semántica al menos una vez Reintentar y garantizar que la RPC se realiza al menos una vez No vale para operaciones no idempotentes Semántica a lo más una vez No reintentar, puede que no se realice ni una sola vez Semántica de exactamente una Sería lo deseable RPC Sistemas Distribuidos 28 14

Fallos en los Clientes La computación está activa pero ningún cliente espera los resultados (computación huérfana) Gasto de ciclos de CPU Si el cliente rearranca y ejecuta de nuevo la RPC se pueden crear confusiones RPC Sistemas Distribuidos 29 Aspectos de Implementación Protocolos RPC Orientados a conexión Fiabilidad se resuelve a bajo nivel, peor rendimiento No orientados a conexión Uso de un protocolo estándar o un específico Algunos utilizan TCP o UDP como protocolos básicos RPC Sistemas Distribuidos 30 15

Aspectos de Implementación Coste de copiar información aspecto dominante en rendimiento: buffer del cliente buffer del SO local red buffer del SO remoto + buffer del servidor Puede haber más copias en cliente para añadir cabeceras scatter-gather: puede mejorar rendimiento RPC Sistemas Distribuidos 31 RPC de Sun Utiliza como lenguaje de definición de interfaz IDL: Una interfaz contiene un nº de programa y un nº de versión. Cada procedimiento específica un nombre y un nº de procedimiento Los procedimientos sólo aceptan un parámetro. Los parámetros de salida se devuelven mediante un único resultado RPC Sistemas Distribuidos 32 16

RPC de Sun El lenguaje ofrece una notación para definir: constantes definición de tipos estructuras, uniones programas RPC Sistemas Distribuidos 33 RPC de Sun rpcgen es el compilador de interfaces que genera: Resguardo del cliente Resguardo del servidor y procedimiento principal del servidor. Procedimientos para el aplanamiento (marshalling) Archivos de cabecera (.h) con los tipos y declaración de prototipos. RPC Sistemas Distribuidos 34 17

RPC de Sun Enlace dinámico El cliente debe especificar el host donde ejecuta el servidor El servidor se registra (nº de programa, nº de versión y nº de puerto) en el port mapper local El cliente envía una petición al port mapper del host donde ejecuta el servidor RPC Sistemas Distribuidos 35 Ejemplo del IDL (Sun RPC) struct peticion { int a; int b; }; program SUMAR { version SUMAVER { int SUMA(peticion) = 1; } = 1; } = 99; RPC Sistemas Distribuidos 36 18

Programación con un Paquete de RPC El programador debe proporcionar: La definición de la interfaz (idl) Nombres de las funciones Parámetros que el cliente pasa al servidor Resultados que devuelve el servidor al cliente El código del cliente El código del servidor El compilador de idl proporciona: El resguardo del cliente El resguardo del servidor RPC Sistemas Distribuidos 37 Programación con RPC DESARROLLO DE LA INTERFAZ DEFINICIÓN DE INTERFAZ COMPILADOR IDL RESGUARDO EN CLIENTE CABECERA RESGUARDO EN SERVIDOR COMPILADOR C ARCHIVOS FUENTE DEL CLIENTE CABECERA CABECERA ARCHIVOS FUENTE DEL SERVIDOR COMPILADOR C COMPILADOR C COMPILADOR C OBJETO RESGUARDO EN CLIENTE ARCHIVOS OBJETO DEL CLIENTE BIBLIOT. RPC BIBLIOT. RPC ARCHIVOS OBJETO DEL SERVIDOR OBJETO RESGUARDO EN SERVIDOR MONTADOR MONTADOR DESARROLLO DEL CLIENTE EJECUTABLE DEL CLIENTE EJECUTABLE DEL SERVIDOR DESARROLLO DEL SERVIDOR RPC Sistemas Distribuidos 38 19

Ejemplos RPC Interfaz IDL (ejemplo-rpc/idl): Descripción de los servicios: OBTENER_UID OBTENER_NOMBRE Código Cliente (ejemplo-rpc/cliente): Ejecutables que solicitan cada uno de los servicios. Código Servidor (ejemplo-rpc/servidor): Implementación de la interfaz IDL RPC Sistemas Distribuidos 39 Esquema de una Aplicación cliente.c idl_clnt.c Archivos para el cliente idl.x repcgen idl_xdr.c idl.h Archivos comunes idl_svc.c servidor.c Archivos para el servidor RPC Sistemas Distribuidos 40 20