====== Sistemas Distribuidos ====== Un sistema distribuido es un conjunto de computadores independientes interconectados a través de una red y que son capaces de colaborar con el fin de realizar una tarea. Ahora pasaremos del modelo Monoprocesador a Sistema distribuido. OJO, esto no es programación paralela. ===== Definiciones a tener en cuenta ===== * **Monoprocesador:** Única unidad central de proceso * **Sistema Distribuido:** Conjunto de ordenadores independientes interconectados a través de una red que colaboran para un fin * **Computadores Independientes:** No comparten memoria ni espacio de ejecución * **Computación Distribuida:** Computación que se lleva acabo en un sistema distribuido * Servicio de red: www, FTP, POP3... * Aplicación de red: Aplicación para usuarios finales. ===== Formas de colaboración ===== * **Servicio de red:** Servicio proporcionado por un tipo especial de programa en una red * **Aplicación de red:** Aplicación para usuarios finales ejecutada en ordenadores conectados a través de la red ===== Ventajas de la computación distribuida ===== * Los computadores y acceso a red son económicos * Compartición de recursos * Escalabilidad * Tolerancia a fallos ===== Desventajas ===== * Múltiples Puntos de Fallo * Aspectos de Seguridad ===== Formas de computación ===== * **Monolítica:** un único ordenador sin conexión y con un solo usuario * Mainframe: Varios usuarios conectados a un único ordenador * **Distribuida:** Múltiples computadores conectados por red * **Paralela:** más de un procesador simultáneamente para ejecutar un programa * Difícil dividir un programa en porciones * **Cooperativa:** dividir la computación entre ordenadores conectados **para utilizar los ciclos de CPU excedentes**. ===== Conceptos ===== * **Sesión de servicio:** cada cliente entabla una sesión separada e independiente con el servidor * **Protocolo:** Establece las reglas que deben seguir cliente y servidor * **Localización:** Mecanismos para localizar el proceso servidor: IP + Puerto * **Comunicación y sincronización:** Sigue un patrón petición respuesta. * **Representación de datos:** Depende de la naturaleza y necesidad del protocolo. ===== Tipos de Servidores ===== * Orientados a conexión vs sin conexión * TCP * UDP * Iterativo vs Concurrente * Bloquea por cliente * Atiende a la vez con hilos u operaciones IPC * Con estado vs Sin estado * Un objeto puede cambiar de estado. * Con estado de un objeto representamos el valor de sus atributos. * El estado cambia en función el valor de sus atributos. * Con Estado Entre cada invocación y llamada se retoma información del pasado (Guarda información entre peticiones) * Sin Estado: En cada invocación y llamada se debe enviar toda la información de nuevo