Software">
Nothing Special   »   [go: up one dir, main page]

UNIDAD - I - Sistemas Distribuidos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA


MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACAN

Asignatura: SISTEMAS DISTRIBUIDOS

“UNIDAD I: ARQUITECTURA DE UN SISTEMA


DISTRIBUIDO”

Alumno: Pineda Cruz Brandon

Grupo: 8CM12

Boleta: 2020350529

Fecha: 3 de septiembre del 2023


1
Contenido

Introducción a los sistemas distribuidos. ...................................................................................................... 3


Características de un sistema distribuidos. ......................................................................................................... 4
Heterogeneidad. ................................................................................................................................................ 4
Extensibilidad .................................................................................................................................................... 5
Seguridad .......................................................................................................................................................... 6
Escalabilidad ...................................................................................................................................................... 7
Control de errores ............................................................................................................................................. 8
Concurrencia. .................................................................................................................................................... 9
Transparencia. ................................................................................................................................................. 10
Modelos arquitectónicos. ................................................................................................................................ 10
Modelos fundamentales. ................................................................................................................................. 12
Recursos de comunicación. .............................................................................................................................. 13
Protocolo TCP/IP.............................................................................................................................................. 14
Servicios y puertos. .......................................................................................................................................... 15
Procesos y demonios. ...................................................................................................................................... 16
Referencias. ..................................................................................................................................................... 17

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.

La heterogeneidad es un término fundamental en el contexto de los sistemas distribuidos y la


informática en general. Se refiere a la presencia de diversidad o diferencia en los componentes,
recursos y entidades que forman parte de un sistema. Esta diversidad puede manifestarse en
diversos aspectos, incluyendo hardware, software, protocolos, sistemas operativos, arquitecturas y
más.
En un sistema distribuido, la heterogeneidad se presenta en varios niveles:

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

La extensibilidad es un concepto fundamental en la informática y el diseño de sistemas de software.


Se refiere a la capacidad de un sistema para adaptarse y crecer de manera sencilla y eficiente,

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

La seguridad en sistemas distribuidos es un aspecto crítico que se refiere a la protección de datos,


recursos y operaciones en un entorno donde múltiples componentes interconectados y
geográficamente dispersos interactúan a través de redes de comunicación. La seguridad busca
garantizar que los sistemas distribuidos sean resistentes a amenazas, ataques y vulnerabilidades,
preservando la confidencialidad, integridad y disponibilidad de la información y los recursos
involucrados.
Existen varios elementos clave de seguridad en sistemas distribuidos:

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

La escalabilidad en sistemas distribuidos es un principio fundamental que se refiere a la capacidad de


un sistema para crecer y adaptarse eficientemente a medida que aumentan las demandas de
recursos o el tamaño del sistema, sin comprometer su rendimiento o funcionalidad. En otras palabras,
una infraestructura distribuida escalable es capaz de manejar un mayor volumen de trabajo o
usuarios sin experimentar una degradación significativa en su desempeño.
Existen dos dimensiones clave en las que se puede evaluar la escalabilidad en sistemas distribuidos:
Escalabilidad Vertical (Scaling Up): Esta forma de escalabilidad implica mejorar el rendimiento de
un sistema distribuido aumentando la capacidad de sus componentes individuales, como agregar más
CPU, memoria o recursos de almacenamiento a un servidor. Si bien esta estrategia puede mejorar el
rendimiento temporalmente, tiene un límite práctico y puede volverse costosa.
Escalabilidad Horizontal (Scaling Out): La escalabilidad horizontal es el enfoque más común en
sistemas distribuidos. Implica la adición de nuevos nodos o servidores al sistema para distribuir la

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

El control de errores en sistemas distribuidos es un componente esencial para garantizar la


confiabilidad y la integridad de la comunicación y el procesamiento de datos en un entorno donde
múltiples componentes interconectados operan de manera conjunta. Este concepto se enfoca en la
detección, la corrección y la prevención de errores que pueden surgir debido a fallos en la red, en los
componentes hardware o software, o a otras situaciones imprevistas.
Algunos aspectos clave del control de errores en sistemas distribuidos:
Detección de errores: El primer paso en el control de errores es la detección de problemas. Esto
implica la implementación de técnicas que permiten identificar cuando se ha producido un error en la
transmisión de datos o en la ejecución de una tarea. Las sumas de comprobación (checksums) y los
códigos de redundancia cíclica (CRC) son ejemplos comunes de técnicas de detección de errores.
Corrección de errores: En algunos casos, es posible corregir automáticamente los errores
detectados. Esto se logra mediante la incorporación de datos redundantes en la transmisión para
permitir la recuperación de información perdida o dañada. Los códigos correctores de errores, como
los códigos Reed-Solomon, son utilizados con este propósito.
Reintento y recuperación: Cuando se detectan errores en la comunicación o en la ejecución de
tareas, es importante implementar estrategias de reintento y recuperación. Esto implica retransmitir
datos o reintentar tareas hasta que se complete con éxito. También puede involucrar la sincronización
y el registro de los resultados de manera que se puedan revertir cambios si ocurren fallos graves.
Tolerancia a fallos: La tolerancia a fallos es un enfoque más amplio que abarca la prevención y la
mitigación de errores. Los sistemas distribuidos a menudo se diseñan con redundancia y mecanismos
de recuperación para garantizar que puedan seguir funcionando incluso si uno o más componentes
fallan.
Control de concurrencia: En sistemas distribuidos, la concurrencia puede dar lugar a conflictos y
errores si no se controla adecuadamente. El control de concurrencia es esencial para garantizar que

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.

La concurrencia en sistemas distribuidos se refiere a la capacidad de múltiples tareas, operaciones o


procesos para ejecutarse simultáneamente y de manera independiente en un entorno donde los
recursos computacionales están distribuidos en diferentes nodos o componentes interconectados. En
otras palabras, implica que varias acciones puedan ocurrir al mismo tiempo dentro del sistema, lo que
puede llevar a la ejecución paralela o concurrente de múltiples operaciones.
Aspectos clave relacionados con la concurrencia en sistemas distribuidos:
Independencia de tareas: La concurrencia permite que las tareas se ejecuten de manera
independiente y sin estar directamente relacionadas entre sí. Esto es fundamental para lograr un alto
rendimiento y una mayor eficiencia en sistemas distribuidos, ya que múltiples operaciones pueden
avanzar simultáneamente sin esperar a que se completen otras.
Procesamiento paralelo: La concurrencia es la base del procesamiento paralelo en sistemas
distribuidos. Permite la división de tareas en subprocesos o procesos independientes que pueden
ejecutarse en paralelo en diferentes nodos del sistema. Esto acelera la velocidad de procesamiento y
mejora la capacidad de respuesta.
Coordinación y sincronización: Aunque la concurrencia permite la ejecución simultánea de tareas,
también plantea desafíos en términos de coordinación y sincronización. Es importante garantizar que
las tareas concurrentes no entren en conflicto o accedan a recursos compartidos de manera
incorrecta. Los mecanismos de sincronización, como semáforos y mutex, son esenciales para
gestionar la concurrencia de manera segura.
Problemas de concurrencia: La concurrencia puede dar lugar a problemas como condiciones de
carrera (race conditions), bloqueos mutuos (deadlocks) y problemas de consistencia de datos si no se
maneja adecuadamente. Identificar y resolver estos problemas es esencial para garantizar el
funcionamiento correcto de los sistemas distribuidos concurrentes.
Escalabilidad: La concurrencia bien gestionada puede mejorar la escalabilidad de un sistema
distribuido. Al permitir que múltiples tareas se ejecuten al mismo tiempo, se pueden aprovechar
eficazmente los recursos disponibles, lo que facilita la adaptación del sistema a un aumento en la
carga de trabajo o la demanda.

9
Transparencia.

La transparencia en sistemas distribuidos es un principio fundamental que se refiere a la habilidad de


ocultar la complejidad y las peculiaridades de la distribución de recursos, la comunicación y la gestión
de sistemas a los usuarios y aplicaciones. En otras palabras, busca hacer que un sistema distribuido
parezca funcionar como una entidad única y coherente, a pesar de que sus componentes pueden
estar geográficamente dispersos y conectados a través de una red.

Modelos arquitectónicos.

Los modelos arquitectónicos en sistemas distribuidos son representaciones estructuradas y


organizadas de cómo los componentes y módulos de un sistema interactúan entre sí en un entorno
distribuido. Estos modelos sirven como planos o esquemas para diseñar y comprender la arquitectura
subyacente de un sistema distribuido, lo que facilita la comunicación, la planificación y el desarrollo de
aplicaciones y servicios en este contexto complejo.
Abstracción de la Arquitectura: Los modelos arquitectónicos proporcionan una abstracción de alto
nivel de un sistema distribuido, lo que significa que simplifican y representan sus componentes y su
comportamiento de una manera comprensible. Esto ayuda a los diseñadores y desarrolladores a
visualizar la estructura general y las interacciones del sistema.
Componentes y Conexiones: Estos modelos identifican los componentes individuales del sistema
distribuido (como servidores, clientes, bases de datos, etc.) y describen cómo se conectan y
comunican entre sí. Esto incluye la definición de interfaces y protocolos de comunicación.

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

El Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP) es un conjunto de protocolos


de comunicación esenciales que forman la base de la infraestructura de Internet y desempeñan un
papel crucial en sistemas distribuidos. Este conjunto de protocolos proporciona un conjunto de reglas
y estándares que permiten que los dispositivos y sistemas se comuniquen y compartan datos de
manera eficiente y confiable en una red.
TCP/IP consta de dos componentes principales:
Protocolo de Control de Transmisión (TCP): TCP es un protocolo orientado a la conexión y confiable
que se encarga de dividir los datos en paquetes, enviarlos a través de la red y garantizar que lleguen
correctamente al destino. Proporciona una comunicación bidireccional y establece conexiones punto
a punto entre dispositivos. TCP se utiliza para aplicaciones que requieren una transmisión de datos
precisa y confiable, como la transferencia de archivos y la navegación web.
Protocolo de Internet (IP): IP es el protocolo que se encarga de dirigir y enrutar los paquetes de datos
a través de la red hasta su destino final. Es el componente que proporciona direcciones IP únicas
para identificar dispositivos en la red y asegura que los datos se entreguen a la máquina correcta. IP
es una parte esencial de la arquitectura de Internet y es fundamental para la comunicación entre
sistemas distribuidos en diferentes ubicaciones geográficas.
En sistemas distribuidos, TCP/IP se utiliza ampliamente para permitir la comunicación entre nodos
dispersos en una red. Esto es esencial para la interconexión de servidores, estaciones de trabajo,
dispositivos móviles y otros componentes en un entorno distribuido. TCP/IP garantiza la entrega
confiable de datos, lo que es crítico en aplicaciones donde la integridad de la información es esencial.
Además, TCP/IP es altamente escalable y admite la comunicación entre sistemas heterogéneos, lo
que significa que puede utilizarse en una amplia variedad de dispositivos y plataformas. Su amplia
adopción y su robusta funcionalidad lo convierten en la columna vertebral de la comunicación en

14
sistemas distribuidos, permitiendo la interconexión de sistemas y la colaboración en un mundo cada
vez más conectado.

Servicios y puertos.

Los conceptos de servicios y puertos son fundamentales para facilitar la comunicación y la


identificación de recursos y aplicaciones en una red. Estos conceptos son esenciales para garantizar
que los dispositivos y nodos en una red distribuida puedan interactuar de manera efectiva y segura.
Servicios en Sistemas Distribuidos:
Un servicio en sistemas distribuidos se refiere a una funcionalidad o una aplicación que se encuentra
disponible en un nodo o dispositivo y que puede ser accedida o utilizada por otros nodos en la red.
Estos servicios pueden variar ampliamente, desde servicios de correo electrónico y transferencia de
archivos hasta servicios web y bases de datos. Cada servicio se identifica mediante un nombre único
o una dirección que permite a otros nodos acceder a él.
Los servicios son esenciales para permitir la colaboración y la interacción entre diferentes partes de
un sistema distribuido. Los usuarios y aplicaciones pueden hacer solicitudes a estos servicios para
realizar tareas específicas, y los servicios responden proporcionando los resultados correspondientes.
Los servicios también pueden ofrecer interfaces que definen cómo se pueden utilizar y qué tipos de
datos pueden intercambiarse con ellos.
Puertos en Sistemas Distribuidos:
Los puertos en sistemas distribuidos se utilizan para identificar de manera exclusiva un servicio o una
aplicación en un dispositivo o nodo. Cada servicio se asocia a un número de puerto específico, que
actúa como una dirección virtual que permite a otros nodos en la red encontrar y comunicarse con
ese servicio en particular.

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.

Tanenbaum, A. S. (2008). Sistemas distribuidos: Principios y paradigmas. Ciudad de México:


Pearson Education. Recuperado el 02 de Septiembre de 2023
De Asís, F., & Fuentes, L. (s/f). Uam.mx. Recuperado el 3 de septiembre de 2023, de
http://dccd.cua.uam.mx/libros/archivos/03IXStream_sistemas_distribuidos.pdf
Distributed Systems: Concepts and Design" de George Coulouris. (s/f).
Sistemas distribuidos. (s/f). Cinvestav.mx. Recuperado el 3 de septiembre de 2023, de
https://www.tamps.cinvestav.mx/~vjsosa/clases/sd/sistemas_distribuidos_panorama.pdf
(S/f). Edu.ar. Recuperado el 3 de septiembre de 2023, de https://cs.uns.edu.ar/~sd/data/apuntes/SD-
2020-mod%2002.pdf

17

También podría gustarte