Software">
UNIDAD - I - Sistemas Distribuidos
UNIDAD - I - Sistemas Distribuidos
UNIDAD - I - Sistemas Distribuidos
UNIDAD CULHUACAN
Grupo: 8CM12
Boleta: 2020350529
2
Introducción a los sistemas distribuidos.
En un mundo cada vez más conectado y dependiente de la tecnología, los sistemas distribuidos
desempeñan un papel crucial al permitir la creación de aplicaciones y servicios escalables, resilientes
y altamente disponibles que impulsan una amplia gama de aplicaciones, desde redes sociales hasta
servicios en la nube y sistemas de control críticos. Los sistemas distribuidos representan un pilar
fundamental en el mundo de la informática moderna. En un panorama tecnológico cada vez más
interconectado y globalizado, estos sistemas desempeñan un papel crucial al permitir la creación y
gestión de redes de computadoras y recursos de manera distribuida en múltiples ubicaciones
geográficas. A través de este enfoque, se logra una infraestructura informática que ofrece
escalabilidad, disponibilidad, tolerancia a fallos y eficiencia en una amplia variedad de aplicaciones y
entornos.
Un sistema distribuido se caracteriza por su capacidad para dividir la carga de trabajo y los recursos
entre múltiples componentes interconectados que operan en diferentes ubicaciones físicas. A través
de una red de comunicación, estos componentes colaboran y comparten información para lograr
objetivos comunes. Este enfoque descentralizado proporciona ventajas sustanciales en términos de
rendimiento, redundancia y escalabilidad, pero también presenta desafíos únicos en cuanto a
coordinación, concurrencia y tolerancia a fallos. La esencia de un sistema distribuido radica en su
capacidad para conectar y coordinar múltiples componentes de software y hardware, permitiéndoles
trabajar en conjunto como una sola entidad coherente. Estos componentes pueden abarcar desde
servidores en centros de datos ubicados en diferentes continentes hasta dispositivos inteligentes
interconectados en el Internet de las cosas (IoT). La comunicación entre estos componentes se
realiza a través de redes de comunicación, generalmente utilizando protocolos estándar como
TCP/IP.
Uno de los principios fundamentales de los sistemas distribuidos es la distribución geográfica de los
recursos y la transparencia que ofrecen a los usuarios. Esto significa que los usuarios pueden
interactuar con estos sistemas sin necesidad de conocer la ubicación física de los recursos, lo que
simplifica enormemente la administración y el acceso a los mismos.
Además, los sistemas distribuidos están diseñados para ser tolerantes a fallos. Esto significa que
pueden continuar funcionando incluso si uno o varios de sus componentes experimentan problemas.
La redundancia y la replicación de datos son estrategias comunes para garantizar la disponibilidad y
la confiabilidad.
La seguridad es otra consideración importante en los sistemas distribuidos, ya que la comunicación
entre componentes se realiza a través de redes públicas o privadas. La autenticación, la autorización
y la protección de datos sensibles son aspectos críticos para garantizar la integridad y la
confidencialidad de la información transmitida.
los sistemas distribuidos son la base tecnológica que permite la construcción de aplicaciones y
servicios en un mundo altamente interconectado. Su capacidad para distribuir recursos, ofrecer
transparencia, tolerancia a fallos y seguridad los convierte en una herramienta indispensable en una
amplia gama de industrias y aplicaciones, desde la nube hasta el IoT y más allá. Su diseño y gestión
pueden ser desafiantes, pero los beneficios que brindan en términos de escalabilidad y confiabilidad
son invaluables en la era digital actual.
3
Características de un sistema distribuidos.
Los sistemas distribuidos son una clase especial de sistemas informáticos que poseen características
únicas que los diferencian de los sistemas centralizados. Estas características son fundamentales
para comprender cómo funcionan y cómo abordan los desafíos específicos de la computación
distribuida.
Distribución Geográfica: Una característica central de los sistemas distribuidos es la presencia de
componentes que se encuentran en ubicaciones geográficas diferentes. Esto permite la colaboración
y la coordinación entre recursos en lugares distantes.
Comunicación en Red: Los componentes en un sistema distribuido se comunican a través de una red.
La comunicación se realiza mediante protocolos de red como TCP/IP, lo que permite el intercambio
de datos y la coordinación de tareas.
Tolerancia a Fallos: Los sistemas distribuidos están diseñados para ser tolerantes a fallos. Esto
significa que pueden seguir funcionando incluso si algunos de sus componentes fallan. La
redundancia y la recuperación de fallos son estrategias clave en este aspecto.
Coordinación y Sincronización: Gestionar la coordinación y la sincronización de acciones entre
componentes distribuidos puede ser un desafío. Los sistemas distribuidos utilizan algoritmos y
protocolos específicos para garantizar la coherencia de datos y la ejecución de tareas en el orden
correcto.
Rendimiento y Eficiencia: La eficiencia en la comunicación y la gestión de recursos es esencial para
el rendimiento óptimo de los sistemas distribuidos. Los algoritmos de enrutamiento, la asignación de
recursos y la gestión de la carga son factores clave.
características:
• Fáciles de expandir o escalar
• Pueden interactuar con un sistema distribuido de manera consistente y uniforme, sin importar
dónde y cuándo tenga lugar.
• Un sistema distribuido estará disponible de manera continua, aunque tal vez algunas partes
pudieran encontrarse fuera de operación.
• Las diferencias entre las distintas computadoras y la manera en que se comunican entre sí
quedan ocultas para el usuario
Heterogeneidad.
4
Heterogeneidad de Hardware: Los componentes físicos de un sistema distribuido, como servidores,
dispositivos de almacenamiento, estaciones de trabajo y sensores, pueden provenir de diferentes
fabricantes y tener especificaciones técnicas variadas. Esto puede incluir diferencias en la capacidad
de procesamiento, la memoria, la velocidad de la red y otros recursos.
Heterogeneidad de Software: Los sistemas distribuidos suelen utilizar una variedad de software
para llevar a cabo sus funciones. Esto puede incluir diferentes sistemas operativos, lenguajes de
programación, bibliotecas y aplicaciones. La heterogeneidad de software puede dificultar la
interoperabilidad y la comunicación entre componentes.
Heterogeneidad de Protocolos: Los protocolos de comunicación utilizados en un sistema distribuido
pueden variar según los componentes involucrados. Diferentes dispositivos y aplicaciones pueden
utilizar protocolos de red distintos, lo que requiere mecanismos de traducción y adaptación para
garantizar la comunicación efectiva.
Heterogeneidad de Datos: La heterogeneidad de datos se refiere a la diversidad en la
representación y el formato de los datos en un sistema. Los datos pueden estar en diferentes
formatos, estructuras y esquemas, lo que puede complicar la integración y el procesamiento de la
información.
La gestión de la heterogeneidad es un desafío clave en los sistemas distribuidos. Para abordar esta
complejidad, se utilizan enfoques como la virtualización, la abstracción de hardware y software, los
middlewares de integración, y la estandarización de protocolos. Estos mecanismos permiten que los
componentes heterogéneos puedan trabajar juntos de manera más eficiente y coherente. La
heterogeneidad es un elemento inherente a los sistemas distribuidos debido a la diversidad de
componentes y tecnologías involucradas. La comprensión y la gestión de la heterogeneidad son
esenciales para garantizar la interoperabilidad, la eficiencia y el éxito de estos sistemas en un entorno
tecnológico cada vez más diversificado y complejo.
Extensibilidad
5
permitiendo la incorporación de nuevas funcionalidades o características sin tener que modificar en
exceso el sistema existente. Esta capacidad de ampliación es esencial para mantener la relevancia y
la utilidad de un sistema a medida que evolucionan las necesidades y los requisitos. La extensibilidad
se basa en la modularidad y la capacidad de diseño flexible.
Algunos aspectos clave de la extensibilidad:
Módulos y componentes independientes: Un sistema extensible se organiza en módulos o
componentes independientes que realizan tareas específicas. Cada módulo tiene una interfaz clara
que define cómo se comunica con otros componentes. Esto permite que nuevos módulos se
agreguen o se sustituyan con relativa facilidad.
Interfaces bien definidas: Las interfaces entre los módulos son cruciales para la extensibilidad.
Deben estar bien documentadas y ser estables con el tiempo para que los nuevos módulos puedan
conectarse sin problemas.
Estructura jerárquica: La arquitectura del sistema debe ser jerárquica, lo que significa que los
componentes de nivel superior coordinan y gestionan componentes de nivel inferior. Esto facilita la
incorporación de nuevos módulos sin afectar gravemente la estructura existente.
Abstracción y encapsulación: La extensibilidad se beneficia de la abstracción, que oculta los
detalles internos de los componentes. La encapsulación asegura que la funcionalidad de un
componente esté contenida en sí mismo y no dependa en exceso de otros componentes.
Retrocompatibilidad: Un sistema extensible debe mantener la compatibilidad hacia atrás con
versiones anteriores para que las funcionalidades existentes no se vean afectadas cuando se
agreguen nuevas extensiones. Esto implica una planificación cuidadosa y la gestión de versiones.
La extensibilidad se encuentra en el corazón del desarrollo de software moderno y es un principio
clave en la creación de plataformas, sistemas operativos, aplicaciones y bibliotecas de software.
Permite a los desarrolladores y usuarios aprovechar al máximo la capacidad de un sistema,
adaptándolo a nuevas demandas y necesidades sin desencadenar una reescritura completa o una
interrupción en el funcionamiento existente. La extensibilidad es la capacidad de un sistema para
crecer y adaptarse de manera efectiva a través de la incorporación de nuevas funcionalidades o
características sin perturbar su estructura o funcionamiento previos. Esto es esencial para mantener
la relevancia y la utilidad de los sistemas de software en un entorno tecnológico en constante
evolución.
Seguridad
6
Autenticación: La autenticación verifica la identidad de los usuarios y componentes antes de permitir
el acceso a los recursos. Esto evita el acceso no autorizado y garantiza que solo las personas o
sistemas legítimos puedan interactuar con el sistema distribuido.
Autorización: La autorización define los permisos y los niveles de acceso que tienen los usuarios o
sistemas autenticados. Esto garantiza que las acciones se realicen de acuerdo con las políticas y los
roles establecidos.
Confidencialidad: La confidencialidad implica proteger la información sensible de ser vista o
accedida por partes no autorizadas. La encriptación de datos y las medidas de control de acceso son
estrategias comunes para lograr este objetivo.
Integridad: La integridad asegura que los datos y los recursos no sean alterados de manera no
autorizada durante su tránsito o almacenamiento. La firma digital y los mecanismos de detección de
cambios son ejemplos de técnicas utilizadas para mantener la integridad.
Disponibilidad: La disponibilidad se refiere a garantizar que los recursos estén disponibles cuando
se necesitan, a pesar de fallos o ataques. Esto se logra mediante la redundancia, la tolerancia a fallos
y la planificación de la capacidad.
Auditoría y registro: Llevar un registro de actividades y eventos es esencial para rastrear y analizar
actividades sospechosas o violaciones de seguridad en un sistema distribuido. Los registros de
auditoría ayudan en la investigación de incidentes y en el cumplimiento de regulaciones.
Gestión de claves: La gestión de claves es crucial para garantizar que las claves de encriptación y
autenticación se almacenen y administren de manera segura. La pérdida o el compromiso de claves
puede resultar en graves problemas de seguridad.
La seguridad en sistemas distribuidos implica una combinación de políticas, procedimientos y
tecnologías para abordar los riesgos y amenazas. La implementación de medidas de seguridad
efectivas es esencial para proteger la confidencialidad y la integridad de los datos, así como para
mantener la disponibilidad de los servicios en un entorno de sistemas distribuidos en constante
evolución y crecimiento.
Escalabilidad
7
carga de trabajo y aumentar su capacidad global. Esto se logra mediante la duplicación de recursos y
la división de tareas entre múltiples instancias del sistema. Es altamente flexible y puede seguir
creciendo a medida que las necesidades lo requieran.
La escalabilidad es esencial en un mundo digital en constante expansión, donde las aplicaciones y
servicios en línea deben atender a millones de usuarios o manejar enormes volúmenes de datos. Los
sistemas distribuidos escalables son cruciales en entornos como plataformas en la nube, redes
sociales, aplicaciones web de alta demanda y sistemas de procesamiento de big data.
Para lograr la escalabilidad en sistemas distribuidos, es necesario considerar factores como la
distribución de la carga, la redundancia de recursos, la gestión eficiente de la comunicación entre
componentes y la capacidad de crecimiento incremental. El diseño y la arquitectura de un sistema
deben ser planificados cuidadosamente para garantizar que puedan expandirse de manera efectiva a
medida que se enfrentan a nuevos desafíos y oportunidades. En última instancia, la escalabilidad
permite que los sistemas distribuidos se adapten y prosperen en un entorno tecnológico en constante
cambio.
Control de errores
8
múltiples componentes puedan acceder y modificar datos compartidos de manera segura y
coherente.
El control de errores es especialmente crítico en aplicaciones donde la integridad de los datos es
esencial, como sistemas financieros, sistemas de control industrial y aplicaciones médicas. Un diseño
cuidadoso y la implementación de técnicas de control de errores adecuadas pueden ayudar a
prevenir problemas costosos y garantizar un funcionamiento confiable y seguro en sistemas
distribuidos.
Concurrencia.
9
Transparencia.
Modelos arquitectónicos.
10
Capas y Niveles: Los modelos arquitectónicos a menudo dividen el sistema en capas o niveles
lógicos para facilitar la gestión y el modularidad. Esto permite que diferentes partes del sistema se
desarrollen, mantengan y actualicen de manera independiente.
11
Patrones de Interacción: Describen cómo los componentes intercambian datos y control en el sistema
distribuido. Los patrones de interacción pueden incluir cliente-servidor, punto a punto, publicación-
suscripción, entre otros.
Escalabilidad y Tolerancia a Fallos: Los modelos arquitectónicos también pueden incorporar
consideraciones de escalabilidad y tolerancia a fallos. Por ejemplo, un modelo puede indicar cómo se
pueden agregar más nodos o réplicas para manejar una mayor carga o cómo se manejan los fallos y
se asegura la continuidad del servicio.
Seguridad y Control de Acceso: La seguridad también es un elemento importante en los modelos
arquitectónicos. Pueden describir cómo se implementan medidas de seguridad, como autenticación,
autorización y encriptación, para proteger los datos y recursos distribuidos.
La utilización de modelos arquitectónicos en sistemas distribuidos ayuda a los equipos de desarrollo a
planificar y comunicar sus ideas de manera efectiva, permitiendo una comprensión compartida de la
estructura y el funcionamiento del sistema. Esto es crucial para evitar problemas de diseño, fomentar
la colaboración entre equipos y garantizar que el sistema cumpla con los requisitos y objetivos
deseados en un entorno distribuido, donde la complejidad y la coordinación son factores clave.
Modelos fundamentales.
Los modelos fundamentales en sistemas distribuidos son conceptos esenciales que definen cómo se
estructuran y operan estos sistemas. Estos modelos proporcionan un marco teórico y conceptual para
comprender y diseñar sistemas distribuidos. Aquí se explican tres modelos fundamentales clave:
12
Modelo Cliente-Servidor: Este es uno de los modelos más comunes en sistemas distribuidos. En él,
los componentes se dividen en dos categorías: clientes y servidores. Los clientes solicitan servicios o
recursos, mientras que los servidores los proporcionan. Esta división permite la escalabilidad y la
distribución de la carga, ya que múltiples clientes pueden interactuar con múltiples servidores.
Ejemplos de esto se encuentran en aplicaciones web, donde el navegador actúa como cliente y los
servidores web entregan contenido.
Modelo Punto a Punto (Peer-to-Peer, P2P): En este modelo, todos los nodos (o "pares") tienen
capacidades similares y pueden actuar tanto como clientes como servidores. Los nodos pueden
intercambiar recursos y servicios directamente entre sí, lo que permite una mayor descentralización y
autonomía. Las redes P2P son conocidas por su resistencia y capacidad de autoorganización.
Ejemplos incluyen redes de intercambio de archivos como BitTorrent.
Modelo Publicación-Suscripción (Publish-Subscribe): Este modelo se basa en el envío y
recepción de mensajes en función de intereses o suscripciones. Los nodos pueden "suscribirse" a
ciertos temas o tipos de eventos y recibirán información relacionada cuando esté disponible. Esto es
útil para aplicaciones donde los datos deben distribuirse a múltiples destinatarios sin requerir una
conexión directa entre ellos. Un ejemplo es el uso de sistemas de mensajería en tiempo real.
Cada uno de estos modelos tiene sus ventajas y desventajas, y la elección del modelo adecuado
depende de los requisitos específicos de la aplicación y las características del sistema. Los sistemas
distribuidos también pueden combinar estos modelos fundamentales para lograr una funcionalidad
más avanzada. Además, la comprensión de estos modelos es esencial para diseñar sistemas
distribuidos eficientes y confiables, ya que influyen en la arquitectura, la escalabilidad, la tolerancia a
fallos y la seguridad de dichos sistemas.
Recursos de comunicación.
Los recursos de comunicación en sistemas distribuidos son componentes esenciales que permiten la
interacción y el intercambio de información entre los diversos nodos o componentes dispersos
geográficamente en una red distribuida. Estos recursos son fundamentales para garantizar que los
sistemas distribuidos funcionen de manera efectiva y puedan coordinar sus actividades sin
problemas. Aquí se explican algunos de los recursos de comunicación clave en este contexto:
Canal de Comunicación: Un canal de comunicación es la infraestructura física o lógica que permite la
transferencia de datos entre los nodos en un sistema distribuido. Puede ser un cable de red, una
conexión inalámbrica, una red de área local (LAN), o incluso una conexión a través de Internet. La
elección del canal adecuado depende de la distancia, la velocidad y la confiabilidad requeridas para la
comunicación.
Protocolos de Comunicación: Los protocolos son conjuntos de reglas y convenciones que gobiernan
cómo se intercambian los datos entre los nodos. Establecen el formato de los mensajes, la secuencia
de operaciones y la forma en que se manejan los errores. Protocolos comunes en sistemas
distribuidos incluyen TCP/IP para la comunicación en redes y protocolos específicos de aplicación,
como HTTP para la World Wide Web.
Middleware: El middleware es una capa de software que facilita la comunicación y la interoperabilidad
entre los componentes de un sistema distribuido. Proporciona abstracciones y servicios comunes que
13
simplifican el desarrollo y la gestión de la comunicación. Ejemplos de middleware incluyen sistemas
de mensajería, servicios web y bases de datos distribuidas.
Servicios de Nombres: Los servicios de nombres asignan identificadores significativos (como
direcciones IP o nombres de dominio) a los recursos y servicios en un sistema distribuido. Esto facilita
la ubicación de recursos en la red y la identificación de los nodos con los que se desea comunicarse.
Gestión de la Calidad de Servicio (QoS): La gestión de QoS se refiere a la capacidad de controlar y
garantizar ciertas características de la comunicación, como la velocidad de transferencia, la latencia y
la fiabilidad. Esto es crucial para aplicaciones que requieren un rendimiento específico, como las
aplicaciones de transmisión de video en tiempo real.
Seguridad en la Comunicación: Los recursos de comunicación también deben incluir medidas de
seguridad para proteger los datos sensibles durante la transmisión. Esto implica el uso de técnicas de
cifrado, autenticación y control de acceso. Los recursos de comunicación son los elementos clave que
permiten la interacción efectiva entre los nodos dispersos en una red distribuida. La elección y la
gestión adecuadas de estos recursos son esenciales para garantizar un rendimiento óptimo, la
fiabilidad y la seguridad en sistemas distribuidos.
Protocolo TCP/IP
14
sistemas distribuidos, permitiendo la interconexión de sistemas y la colaboración en un mundo cada
vez más conectado.
Servicios y puertos.
15
Los puertos son esenciales para la segmentación y la organización de la comunicación en una red.
Cuando un nodo desea acceder a un servicio en otro nodo, especifica el número de puerto asociado
a ese servicio para que la comunicación se enrutará al servicio correcto. Esto garantiza que los datos
lleguen al destino adecuado dentro del dispositivo de destino y se comuniquen con la aplicación o el
servicio correcto. Los servicios representan las funcionalidades o aplicaciones disponibles para la
comunicación, mientras que los puertos actúan como identificadores únicos para acceder a estos
servicios. La combinación de servicios y puertos permite una comunicación efectiva y organizada
entre los nodos de una red distribuida, lo que es esencial para la interoperabilidad y la colaboración
en entornos distribuidos.
Procesos y demonios.
Los conceptos de procesos y demonios son fundamentales para comprender cómo se gestionan y
ejecutan las tareas y servicios en los diferentes nodos de la red. Estos conceptos son esenciales para
la coordinación y la ejecución de aplicaciones y servicios en un entorno distribuido.
Procesos:
Un proceso es una instancia de un programa en ejecución en un sistema distribuido. Cada proceso
tiene su propia memoria y espacio de direcciones, lo que significa que puede ejecutar código y
manipular datos de manera independiente de otros procesos. En sistemas distribuidos, los procesos
pueden residir en diferentes nodos de la red y comunicarse entre sí a través de la red.
Los procesos pueden ser tanto locales como remotos. Los procesos locales se ejecutan en el mismo
nodo en el que se inician, mientras que los procesos remotos se ejecutan en nodos diferentes y
requieren comunicación a través de la red. Los procesos en sistemas distribuidos a menudo se
utilizan para ejecutar aplicaciones, servicios y tareas que requieren paralelismo o interacción con
otros nodos en la red.
Demonios:
Los demonios, a menudo llamados "daemons" en sistemas Unix-like, son procesos de fondo que se
ejecutan continuamente en segundo plano en un nodo o servidor en un sistema distribuido. Los
demonios suelen iniciarse automáticamente cuando se inicia el sistema y están diseñados para
realizar tareas específicas de forma autónoma.
Los demonios son comunes en sistemas distribuidos para realizar funciones de mantenimiento,
administración y servicios esenciales. Algunos ejemplos incluyen demonios de servidor web que
esperan y gestionan solicitudes entrantes, demonios de correo que entregan mensajes de correo
electrónico y demonios de copia de seguridad que programan y ejecutan copias de seguridad de
datos. La distinción clave entre procesos y demonios es que los procesos suelen estar asociados con
la ejecución de aplicaciones y tareas interactivas, mientras que los demonios se enfocan en la
ejecución continua de servicios y tareas en segundo plano sin interacción directa con usuarios.
Los procesos son instancias en ejecución de programas que pueden residir en nodos locales o
remotos y comunicarse a través de la red, mientras que los demonios son procesos de fondo que se
ejecutan continuamente para proporcionar servicios y tareas esenciales en segundo plano. Ambos
conceptos son esenciales para la operación y la gestión efectiva de sistemas distribuidos.
16
Referencias.
17