SISTEMAS DISTRIBUIDOS
Tabla de contenido
INTRODUCCIÓN .............................................................................................. 2
¿Qué es un sistema distribuido? .................................................................... 2
Características importantes (Ramificaciones) ................................................ 2
Retos de los sistemas distribuidos ................................................................. 3
Manejo de fallas ............................................................................................ 4
JAVA RMI .......................................................................................................... 5
Serialización ................................................................................................. 5
Protocolos TCP/IP ............................................................................................. 6
Características de la comunicación de interprocesos ..................................... 6
Sockets y comunicación entre procesos............................................................ 7
Hilos (Threads) ................................................................................................. 8
CORBA (Common Object Request Broker Architecture) ...................................... 9
Web Services y SOAP ...................................................................................... 11
SOAP (Simple Object Access Protocol) ............................................................ 13
Comparación: CORBA vs Web Services/SOAP .................................................. 14
INTRODUCCIÓN
¿Qué es un sistema distribuido?
Un sistema distribuido es una colección de elementos computacionales autónomos
presentada a sus usuarios como un sistema único coherente.
• Maarten van Steen, Andrew S Tanenbaum
Un sistema distribuido es aquel en el que los componentes ubicados en
computadoras en red, comunican y coordinan sus acciones sólo pasando mensajes.
• George Coulouris, Jean Dollimore
Características importantes (Ramificaciones)
🔄 Concurrencia
• Es la norma en redes: múltiples programas se ejecutan al mismo tiempo.
• Requiere coordinación para compartir recursos correctamente.
🕒 No hay reloj global
• No hay un tiempo central para sincronizar acciones.
• Se coordina a través de mensajes, lo cual complica la precisión temporal.
⚠️ Fallas independientes
• Cada componente puede fallar por separado.
• Una falla no implica que todo el sistema deje de funcionar.
• Las fallas deben ser manejadas sin depender de un estado global.
Ejemplos de sistemas distribuidos
Google (Buscador)
• Maneja billones de búsquedas mensuales.
• Tiene centros de datos en todo el mundo.
• Usa sistemas distribuidos para:
o Archivos grandes
o Almacenamiento rápido
o Computación paralela y masiva
Juegos en línea multijugador (MMORPG)
• Soportan hasta 50.000 jugadores simultáneos.
• Retos: rapidez de respuesta, consistencia del mundo virtual.
Trading financiero
• Necesita acceso en tiempo real a eventos económicos.
• Usa sistemas basados en eventos para detectar oportunidades.
• Debe traducir múltiples formatos de datos en uno común.
Internet
• Es un sistema distribuido global.
• Componentes interconectados en constante comunicación.
Dispositivos móviles
• Parte integral de sistemas distribuidos modernos.
• Participan en redes, aplicaciones, y servicios distribuidos.
Computación en la nube (Cloud computing)
• Proporciona recursos como servicio: almacenamiento, procesamiento, etc.
• Permite escalar fácilmente.
Retos de los sistemas distribuidos
Heterogeneidad
• Diferentes redes, equipos y plataformas deben funcionar como uno solo.
• Protocolos de internet ayudan a lograrlo.
Apertura (Openness)
• Capacidad de extender el sistema y añadir nuevos servicios accesibles a
distintos clientes.
Seguridad
• Incluye:
o Confidencialidad (evitar accesos no autorizados)
o Integridad (evitar alteraciones)
o Disponibilidad (asegurar acceso a recursos)
Escalabilidad
• El sistema debe funcionar bien aunque aumenten los usuarios y recursos.
• Retos:
o Costo de recursos físicos
o Rendimiento
o Evitar agotar recursos de software
Manejo de fallas
• Estrategias:
o Detección
o Enmascaramiento
o Tolerancia
o Recuperación
o Redundancia
Concurrencia
• Varios clientes acceden a la vez a recursos compartidos → debe haber control y
coordinación.
Transparencia
• Ocultar al usuario que el sistema está distribuido.
• Debe parecer un sistema único, no una colección de partes.
Calidad del servicio (QoS)
• Más allá del rendimiento:
o Debe cumplir con garantías de puntualidad (respuestas a tiempo).
JAVA RMI
RMI significa Invocación Remota de Métodos . Es un mecanismo que permite que
un objeto residente en un sistema (JVM) acceda o invoque un objeto que se ejecuta
en otra JVM.
La implementación de RMI consta de tres capas de abstracción.
Estas capas de abstracción son:
1. La capa Apéndice y esqueleto, que intercepta llamadas de métodos
realizadas por el cliente a la variable de referencia de interfaz y redirige estas
llamadas a un servicio RMI remoto.
2. La capa Interfaz remota entiende cómo interceptar y gestionar las referencias
realizadas por los clientes a objetos de servicio remoto.
3. La capa inferior es la capa Transporte, que se basa en las conexiones TCP/IP
entre máquinas de una red. Proporciona conectividad básica, así como
algunas estrategias de penetración cortafuegos.
Serialización
La serialización es el proceso de convertir el estado de un objeto en un formulario que
se puede conservar o transportar. El complemento de la serialización es la
deserialización, que convierte una secuencia en un objeto . Juntos, estos procesos
permiten almacenar y transferir datos.
Protocolos TCP/IP
TCP/IP es un protocolo de comunicación utilizado entre sistemas informáticos
separados físicamente. TCP/IP se puede implementar en una amplia variedad de
redes físicas.
La comunicación entre procesos consiste en transmitir un mensaje entre un Socket
en un proceso y un Socket en otro proceso.
Cualquier proceso puede hacer uso de múltiples puertos para recibir mensajes, pero
un proceso no puede compartir puertos con otros procesos en la misma
computadora (los procesos que utilizan multidifusión IP son una excepción, ya que
comparten puertos).
Sin embargo, cualquier número de procesos puede enviar mensajes al mismo puerto.
Características de la comunicación de interprocesos
Comunicación síncrona (synchronous communication):
• Los procesos de envío y recepción se sincronizan en cada mensaje, acción
bloqueante
Comunicación asíncrona (asynchronous communication):
• Se permite que el proceso de envío continúe tan pronto como el mensaje se
haya copiado en un búfer local, y la transmisión del mensaje continúa en
paralelo con el proceso de envío. No bloqueante
Destinos de los mensajes (message destinations):
• Los procesos pueden usar varios puertos para recibir mensajes. Cualquier
proceso que conozca el número de un puerto puede enviarle un mensaje.
Fiabilidad (Reliability):
• Para integridad, los mensajes deben llegar sin corrupción y sin duplicación.
Orden:
• Algunas aplicaciones requieren que los mensajes se entreguen en el orden del
remitente, es decir, el orden en que fueron transmitidos por el remitente.
Sockets y comunicación entre procesos
Protocolos TCP/IP
• TCP (Transmission Control Protocol): Protocolo de capa de transporte.
Conexión confiable de circuito virtual. Garantiza entrega sin errores ni
duplicados, y en el mismo orden.
• UDP (User Datagram Protocol): Protocolo de capa de transporte. Conexión
poco confiable de datagramas. No garantiza orden ni entrega.
• IP (Internet Protocol): Protocolo de capa de red. Servicio de datagramas sin
conexión. Compatible con TCP y UDP. La unidad de transmisión es el
datagrama.
Sockets
• Un Socket es un punto final de comunicación entre procesos.
• Los procesos se comunican transmitiendo mensajes entre sockets.
• Un socket debe estar ligado a un puerto local y una dirección IP.
• Cada computadora tiene 65.536 puertos posibles.
• Un proceso no puede compartir puertos con otros (excepto en multidifusión
IP).
• Cada socket se asocia a un protocolo (UDP o TCP).
Características de la comunicación entre procesos
• Síncrona: envío y recepción son bloqueantes.
• Asíncrona: el envío es no bloqueante.
• Destinos: los mensajes se envían a pares (dirección IP, puerto). Un puerto
tiene un solo receptor, pero muchos remitentes.
• Fiabilidad: los mensajes deben entregarse incluso con pérdidas razonables y
llegar sin corrupción ni duplicación.
• Orden: algunos sistemas exigen que los mensajes lleguen en el orden en que
se enviaron.
Hilos (Threads)
Multitarea
• Servidor iterativo: atiende un cliente a la vez. No es eficiente si la atención es
larga.
• Servidor concurrente: usa procesos o hilos para atender varios clientes
simultáneamente.
Proceso por cliente
• Cada conexión de cliente crea un nuevo proceso.
• En UNIX, fork() crea un proceso hijo.
• Es costoso: duplica estado, memoria, descriptores. Los procesos hijos
muertos quedan como zombis hasta que se liberan.
Hilo por cliente
• Más eficiente: un hilo comparte memoria y recursos con el proceso padre.
• Permite atender varios clientes con menor costo.
Procesos e hilos
• Un proceso = entorno de ejecución + uno o más hilos.
• Un hilo = abstracción de una actividad dentro de un proceso.
• Los hilos comparten espacio de direcciones, archivos abiertos, etc.
• Beneficio: ejecución concurrente y superposición de cómputo con
entrada/salida.
Arquitectura Worker Pool
• Al iniciar, el servidor crea un grupo fijo de hilos de trabajo.
• Un hilo receptor coloca solicitudes en una cola compartida para que los
trabajadores las atiendan.
Arquitecturas de servidores multi-hilo
• Hilo por solicitud: se crea un hilo por cada petición. Ventaja: máximo
rendimiento. Desventaja: sobrecarga por creación/destrucción.
• Hilo por conexión: un hilo por conexión cliente. Menos sobrecarga que la
anterior.
• Hilo por objeto: un hilo por objeto remoto. Cada objeto tiene su propia cola de
solicitudes.
• Comparación: hilo-por-conexión e hilo-por-objeto son más eficientes que
hilo-por-solicitud, pero pueden generar retrasos.
CORBA (Common Object Request Broker Architecture)
¿Qué es CORBA?
CORBA es un estándar definido por Object Management Group (OMG) que permite
que componentes de software escritos en múltiples lenguajes de programación y
ejecutándose en múltiples computadoras funcionen juntos. Es fundamentalmente un
estándar para distribuir objetos a través de redes, permitiendo que las operaciones en
esos objetos se invoquen de forma remota.
Características Principales de CORBA
• Independencia del lenguaje: No está asociado con un lenguaje de
programación específico
• Multiplataforma: Permite integración entre diferentes sistemas
• Definición mediante IDL: Los objetos se describen usando Interface
Definition Language (IDL)
• Transparencia: La ubicación, lenguaje de implementación y otros aspectos
son transparentes para el cliente
Arquitectura del Object Request Broker (ORB)
El ORB es el núcleo de CORBA y es responsable de:
1. Localización: Encontrar la implementación del objeto para la solicitud
2. Preparación: Preparar la implementación del objeto para recibir la solicitud
3. Comunicación: Transmitir los datos que componen la solicitud
4. Marshalling/Unmarshalling: Empacar y desempacar parámetros de forma
transparente
Componentes de la Arquitectura CORBA
Del Lado del Cliente
• Cliente: Entidad que desea realizar una operación en el objeto
• Object Reference: Referencia al objeto remoto
• Stub IDL: Código específico generado para la interfaz del objeto
• Dynamic Invocation Interface: Interfaz genérica independiente del objeto
destino
Del Lado del Servidor
• Object Implementation: Código y datos que implementan realmente el objeto
• IDL Skeleton: Código específico generado para recibir invocaciones
• Dynamic Skeleton: Skeleton genérico para recepción dinámica de solicitudes
• Object Adapter: Proporciona servicios al Object Implementation
Proceso de Comunicación en CORBA
1. Iniciación: El cliente accede a una Object Reference y conoce el tipo de objeto
2. Invocación: El cliente puede usar:
o Stub IDL (específico del objeto)
o Dynamic Invocation Interface (genérico)
3. Procesamiento: El ORB localiza la implementación y transmite parámetros
4. Ejecución: El Object Implementation recibe la solicitud a través del Skeleton
5. Respuesta: Los valores de control y salida retornan al cliente
Interface Definition Language (IDL)
El IDL permite definir interfaces de dos maneras:
1. Definición estática: Interfaces definidas en lenguaje IDL que especifican:
o Tipos de objetos
o Operaciones disponibles
o Parámetros de las operaciones
2. Interface Repository Service: Servicio que representa componentes de
interfaz como objetos, permitiendo acceso en tiempo de ejecución
Object Adapter
El Object Adapter es responsable de:
• Generación e interpretación de referencias de objetos
• Invocación de métodos
• Seguridad de las interacciones
• Activación y desactivación de objetos
• Mapeo de referencias a implementaciones
• Registro de implementaciones
Web Services y SOAP
¿Qué son los Web Services?
Los Web Services son servicios tradicionales (como servicios de nombres, informes
meteorológicos, proveedores electrónicos) que están disponibles a través de Internet
y se adhieren a una colección de estándares. Esto permite que aplicaciones cliente
que siguen esos mismos estándares puedan descubrirlos y acceder a ellos.
Principio de Funcionamiento
El principio básico es simple: una aplicación cliente puede llamar servicios
proporcionados por una aplicación servidor. La estandarización ocurre en:
1. Descripción de servicios: Cómo se describen para que los clientes puedan
buscarlos
2. Llamada de servicio: Cómo se realizan las llamadas según las reglas del
servidor
Arquitectura de Web Services
Componentes Principales
1. UDDI (Universal Description, Discovery and Integration)
o Servicio de directorio que almacena descripciones de servicios
o Base de datos que permite a los clientes buscar servicios relevantes
2. WSDL (Web Services Definition Language)
o Lenguaje formal similar a los IDL de RPC
o Contiene definiciones precisas de las interfaces del servicio:
▪ Especificación del procedimiento
▪ Tipos de datos
▪ Ubicación lógica de servicios
o Se puede traducir automáticamente a stubs cliente y servidor
3. SOAP (Simple Object Access Protocol)
o Protocolo para el intercambio de datos estructurados
o Framework para estandarizar la comunicación entre procesos
Web Services
• Un servicio web es un servicio tradicional (ej. nombres, clima, proveedor
electrónico) disponible a través de Internet.
• Se basa en estándares que permiten que aplicaciones cliente lo descubran y
usen.
• Proporcionar/usar un servicio web: una aplicación cliente llama a un servicio
en un servidor.
• Se usan directorios UDDI (Universal Description, Discovery and Integration)
para almacenar descripciones de servicios.
• Las descripciones se hacen en WSDL (Web Services Definition Language):
especifica procedimientos, tipos de datos, ubicación de servicios, etc.
• De un WSDL se pueden generar Stubs automáticamente (cliente y servidor).
• El núcleo de la comunicación entre procesos en servicios web se basa en
SOAP.
SOAP (Simple Object Access Protocol)
¿Qué es SOAP?
SOAP es un protocolo que permite el intercambio de datos estructurados entre pares
en un entorno distribuido y descentralizado. La estructura de los datos se especifica
mediante esquemas XML.
Características de SOAP
• Basado en XML: Los mensajes están codificados en XML
• Portabilidad: XML hace que los mensajes sean portátiles e independientes del
sistema
• Integración: Permite acceso a sistemas legacy y compartir datos entre
empresas
• Versiones: Disponible en versiones 1.1 y 1.2
• Transporte: Generalmente se envía a través de HTTP, pero puede usar otros
protocolos
Ventajas de usar XML en SOAP
• Portabilidad: Representación de datos independiente del sistema
• Integración: Natural para informática basada en Web
• Seguridad: Los cortafuegos pueden reconocer y filtrar paquetes SOAP por tipo
de contenido (text/xml-SOAP)
SOAP (Simple Object Access Protocol): protocolo que permite intercambio de
datos estructurados entre pares en entornos distribuidos y descentralizados.
• Los datos se representan en XML, lo que los hace portables e independientes
de sistema.
• SOAP facilita acceder a sistemas legacy y compartir datos entre empresas.
• Generalmente se transmite sobre HTTP, aunque puede usar otros protocolos.
• Cortafuegos pueden reconocer mensajes SOAP por el tipo de contenido
(text/xml-SOAP).
• Existen namespaces estandarizados (env, enc, rpc, rep, xop, xmime).
• Versiones disponibles: 1.1 y 1.2.
• Los mensajes SOAP tienen formato de Envelope, que incluye Header
(opcional) y Body (contenido principal).
Comparación: CORBA vs Web Services/SOAP
CORBA
• Orientado a objetos: Trabajo directo con objetos distribuidos
• Múltiples lenguajes: Soporte nativo para múltiples lenguajes de
programación
• Transparencia completa: Ubicación, lenguaje e implementación
transparentes
• Complejidad: Más complejo de implementar y configurar
• Performance: Generalmente mejor rendimiento para comunicación interna
Web Services/SOAP
• Orientado a servicios: Enfoque en servicios web accesibles
• Basado en estándares web: Usa HTTP, XML y estándares web
• Interoperabilidad: Excelente para integración entre organizaciones
• Simplicidad: Más simple de implementar y debuggear
• Firewall-friendly: Funciona bien a través de cortafuegos corporativos