Fundamentos de Arquitectura de Sistemas Distribuidos y Comunicación en Red
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,48 KB
Introducción a los Sistemas Distribuidos
Un sistema distribuido es una infraestructura donde múltiples componentes de hardware o software, situados en computadoras conectadas en red, se comunican y coordinan sus acciones únicamente mediante el paso de mensajes. El motivo principal del sistema es compartir recursos.
Retos de Implementación: Heterogeneidad, extensibilidad, seguridad, escalabilidad, tratamiento de fallos, concurrencia y transparencia.
Comunicación entre Procesos (IPC)
La Comunicación entre Procesos (IPC) es la infraestructura lógica, administrada por el Sistema Operativo, que permite a los procesos intercambiar datos a través de colas de mensajes, semáforos o memoria compartida.
Operaciones Básicas y Sincronización
La comunicación se basa en dos primitivas: send (enviar) y receive (recibir).
- Síncrona (Bloqueante): Tanto el emisor como el receptor se bloquean hasta que la operación se completa. El emisor espera hasta que se produce el
receivecorrespondiente, y el receptor espera hasta que llega un mensaje. - Asíncrona (No bloqueante): El proceso emisor continúa su ejecución tan pronto como el mensaje se copia en el búfer local. La operación
receivepuede tener variantes bloqueantes o no bloqueantes.
Destino y Flujo
- Unicast: (ej. sockets).
- Multicast: (ej. modelos de publicación/suscripción).
- Colas: A cada destino se le asocia una cola; los emisores añaden mensajes a colas remotas y los receptores los eliminan de las locales.
Un deadlock ocurre cuando las operaciones de bloqueo se ejecutan en una secuencia errónea, provocando que dos o más procesos se esperen mutuamente de forma indefinida. Se deben evitar o detectar mediante el uso de timeouts.
Serialización y Representación de Datos
Marshalling: Proceso de (1) aplanar una estructura de datos y (2) convertirla a una representación externa/de red.
Unmarshalling: Proceso inverso de convertir los datos a una representación interna y reconstruir las estructuras de datos.
Estándares según el Nivel de Abstracción
- Sun XDR: Estándar de red.
- ASN.1: Lenguaje general de codificación de datos.
- XML: Lenguaje basado en texto donde las etiquetas indican el significado de los datos, facilitando el intercambio en la web y la lectura humana.
El Modelo de Capas y Cliente/Servidor
La complejidad se separa mediante el diseño de capas y servicios:
- Hardware
- Plataforma
- Middleware: Capa de software que enmascara la heterogeneidad y provee un modelo de programación uniforme.
- Aplicaciones y Servicios
Variaciones del Modelo Cliente/Servidor
- Servidores Múltiples
- Proxy y Caché: Intermediarios que optimizan el acceso a servidores web.
- Cliente Ligero (Thin Client): El procesamiento se realiza en un servidor de cómputo, mientras el cliente solo maneja la interfaz.
- Código Móvil (Applets): El servidor envía código que se ejecuta localmente en el cliente.
- Agentes Móviles: Procesos que se trasladan entre computadoras para realizar tareas.
Invocación Remota y Protocolos
RMI (Remote Method Invocation)
Desarrollado para el ecosistema Java, permite que un hilo en una máquina virtual invoque métodos de un objeto en otra máquina virtual como si fuera local.
Componentes: Stub (proxy lado cliente), Skeleton (lado servidor) y RMI Registry (directorio de nombres).
Ventajas: Soporta recolección de basura distribuida y paso de objetos por valor.
COM/DCOM
Estándar de Microsoft para interoperabilidad binaria.
- COM: Permite la reutilización de componentes independientes del lenguaje (C++, VB, Delphi).
- DCOM: Extensión para redes que usa RPC de Microsoft de forma transparente.
Servicios Web (Web Services)
Diseñados para superar barreras de plataforma y firewalls mediante estándares abiertos.
- SOAP: Orientado a operaciones con contratos rígidos (WSDL) y formato XML.
- REST: Arquitectura ligera orientada a recursos, usa verbos HTTP (GET, POST, etc.) y comúnmente JSON. Es el estándar de facto para APIs modernas.
Otros Modelos Modernos
- gRPC (Google): Basado en HTTP/2 para alto rendimiento, usa Protocol Buffers para serialización binaria ultrarrápida.
- CORBA: Estándar abierto para comunicación entre lenguajes heterogéneos usando un Object Request Broker (ORB).
- MOM (Message-Oriented Middleware): Paradigma desacoplado basado en colas (ej. Apache Kafka, RabbitMQ).
- P2P (Peer-to-Peer): Modelo descentralizado donde los nodos actúan simultáneamente como clientes y servidores (servents), como en BitTorrent o redes blockchain.
Concurrencia e Hilos en Java
Thread miHilo = new MiClaseThread();
miHilo.start();
try {
miHilo.sleep(10000);
} catch (InterruptedException e){
}Ciclo de Vida de un Hilo
- Nacido:
Thread miHilo = new MiClaseThread(); - Listo:
miHilo.start(); - Ejecutable: El método
start()se ejecuta y llama al métodorun()del thread, el cual se ejecuta en forma secuencial. - En ejecución
- No ejecutable: Un hilo continúa la ejecución de su método
run()hasta que pasa al estado de no ejecutable, originado cuando ocurre alguno de los siguientes cuatro eventos:- Se invoca a su método
sleep(). - Se invoca a su método
suspend(). - El thread utiliza su método
wait()para esperar una condición variable. - El thread está bloqueado durante una solicitud de entrada/salida.
- Se invoca a su método