Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ingeniería de sistemas
Sistemas Distribuidos
Resumen
Analizar los temas referidos a los sistemas distribuidos, es de suma importancia para entender
los básico sobre la materia, conociendo así su contenido, la arquitectura y los procesos,
mediante estos conceptos básicos, mejoraremos la capacidad de generar un sistema, mediante
herramientas como la transparencia, el grado de apertura, etc. Se podrá generar arquitecturas
de sistemas distribuidos de una manera limpia y ordenada, temas como hilos, virtualización,
clientes y servidores, nos ayudarán a optimizar los recursos utilizados y sacarle el mayor
provecho. estos temas son de de gran relevancia por que nos ayudan a ejecutar más de un
proceso a la vez o permite ingresar nuevos procesos o recursos sin que este pierda efectividad.
La comunicación entre procesos es el núcleo de todos los sistemas distribuidos, por tal razón
es importante entender la manera en que los procesos localizados en diferentes computadoras
pueden intercambiar información. En los sistemas distribuidos tradicionalmente la
comunicación está basada en el paso de mensaje. Esta técnica aporta sincronización entre
procesos y permite la exclusión mutua, su principal característica es que no requiere memoria
compartida, por lo que resulta ser muy importante en la programación de sistemas
distribuidos, La creación de instancias finales de una arquitectura de software también se
conoce como arquitectura de sistema en la arquitectura donde que se puede conocer
centralizadas tradicionales y por lo cual el servidor implementa la mayoría de los componentes
de software ,mientras que los clientes remotos pueden acceder a ese servidor utilizando
medios de comunicación simple, en algunos sistemas distribuidos, la adaptabilidad se puede
lograrse realizando un sistema monitoreo con su propio comportamiento y tome las medidas
adecuadas cuando sea necesario.
Objetivo
● General
○ a. Consultar e investigar temas relacionados a los sistemas distribuidos,
para de esta manera entender y comprender temas específicos tales como
fundamentos de los sistemas distribuidos, arquitecturas y procesos,
aumentando de esta manera nuestro conocimiento sobre la materia. en
estos tiempos
● Específico
○ 1. Investigar los fundamentos de los sistemas distribuidos para de esta
manera entender los conceptos básicos sobre la materia y mejorar nuestro
conocimiento sobre el tema a tratar.
○ 2 . Determinar los distintos tipos de arquitectura que tienen los sistemas
distribuidos, para así poder entender y comprender el funcionamiento de
cada arquitectura
○ 3. Consultar los procesos de los sistemas distribuidos mediante los cuales
se podrá entender como realizar un sistema.
Introducción
Un sistema distribuido puede definirse como una colección de computadoras conectadas entre
sí, mediante una red, y cada una desempeña uno o varios procesos diferentes. Todas estas
computadoras en su conjunto, se ven como un solo sistema.Todos los días utilizamos Sistemas
Distribuidos, ¿en dónde?, en las aplicaciones móviles que utilizamos para realizar nuestras
actividades diarias, en los cajeros automáticos o en los sistemas financieros. Ejemplos de
productos actuales son Gmail de Google para el correo electrónico y Dropbox para
documentos.Como desarrolladores nos mencionan que la ventaja de utilizar un sistema
distribuido es la posibilidad de resolver problemas demasiado grandes dividiéndolos en
múltiples problemas pequeños, es decir, no es necesario volver a programar procesos que no
se cuenten, si ya se cuenta con otros sistemas que ya lo hacen.
El objetivo de un sistema distribuido es integrar los recursos y servicios conectados por una
red de comunicación. Hoy en día, los clientes, proveedores y compañías se encuentran
generalmente en diferentes localidades alejados los unos de los otros. Debido a que todos estos
utilizan computadoras, las redes de información que los unen y que les permiten interactuar
pueden ofrecer a las empresas mayor competitividad .Los sistemas distribuidos se
implementan en diversas plataformas hardware, desde unas pocas estaciones de trabajo
conectadas por una red de área local, hasta Internet, una colección de redes de área local y de
área extensa interconectados, que enlazan millones de ordenadores.
Marco teórico
Sistemas Distribuidos
Transparencia en la distribución
Es el elemento más importante y más complejo debido a que se necesita ocultar la existencia
de procesos y recursos en equipos físicamente distribuidos.
Existen varias formas de ocultar aspectos en un sistema distribuido.
● Acceso: como el recurso accede a datos.
● Ubicación: localización del recurso.
● Migración: oculta movimiento de recurso a otra ubicación.
● Reubicación: oculta recurso y evita moverlo en pleno uso.
● Replicación: se desconoce la cantidad de copias del recurso.
● Falla: oculta la falla y recuperación del recurso
Nivel de transparencia
Se debe considerar elementos como el rendimiento y la comprensibilidad, para poder diseñar
e implementar un sistema distribuido
Grado de apertura
Es la característica de un sistema que permite añadirle nuevas características y servicios de
forma dinámica; se consigue mediante una buena especificación y la publicación de las
interfaces de los componentes.
La apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que
nuevos servicios de compartición de recursos se pueden añadir sin perjudicar ni duplicar a los
ya existentes.
Escalable
El aumento de demanda de servicios se puede suplir con una aportación de recursos, siempre
y cuando el coste añadir un usuario sea constante.
Su modularidad, permite una gran flexibilidad y posibilita su escalabilidad, definida como la
capacidad del sistema para crecer sin aumentar su complejidad ni disminuir su rendimiento.
Problema escalable
El tamaño al tener múltiples usuarios o recursos requieren soporte se enfrentan en limitación
de servicios o datos
Limitaciones
● Servicios centralizados: un servidor para varios usuarios
● Datos centralizados: un directorio telefónico en línea
● Algoritmos centralizados: ruteo basado en información completa
Técnicas
Existen 3 técnicas para escalar
● Ocultar las latencias de comunicación
○ Se evita la espera de respuestas de peticiones remotas de servicios
(comunicación asincrónica)
● Distribución
○ Tomar un componente, dividirlo y repartirlo a lo largo del sistema
● Replicación
○ Ayuda a balancear la carga entre componentes, para obtener un mejor
rendimiento
Trampas
Se debe tomar en cuenta todos los componentes que se incluirán en la etapa de diseño así
evitamos los siguientes errores:
i. Red confiable, homogénea
ii. Topología identica
iii. Latencia cero
iv. Ancho de banda infinito
Tipos de sistemas distribuidos
Existen algunos tipos de sistemas distribuidos, que se señala a continuación.
Sistemas Distribuidos de cómputo
Se las utiliza para realizar tareas de cómputo de alto rendimiento, se hace una distinción de
dos subgrupos.
● Cómputo en cluster
○ Se da a conocer con la relación de precio-popularidad con estaciones de trabajo
y computadores personales.
○ Económica al construir una supercomputadora con tecnología económica y
computadores homogéneos en una misma red de alta velocidad.
○ Esta programación se usa para la programación en paralelo donde un solo
programa corre paralelamente en múltiples máquinas.
● Cómputo en malla
○ Computadoras heterogéneas, reúne recursos diferentes, permite colaboración
entre personas o instituciones conocido como organización virtual con los
mismos derechos de acceso a los recursos
○ Su software se base en la otorgación de privilegios para los que pertenecen a la
organización virtual, ante ciertos recursos desde diferentes dominios
administrativos
○ Está compuesta por cuatro capas:
Capa de conectividad: proporciona interfaces para recursos locales
ubicados en un sitio específico
Capa de recursos: aparece como responsable del control de acceso, y por
tanto se apoyará en la autenticación realizada como parte de la capa de
conectividad
Capa colectiva: se encarga de manipular el acceso a múltiples recursos y, por
lo general, consta de servicios para descubrir recursos y ubicación de tareas
dentro de múltiples recursos, replicación de datos, y así sucesivamente.
Capa de aplicaciones: consta de aplicaciones que operan dentro de una
organización virtual y hacen uso del ambiente de cómputo en grid
Un sistemas distribuido móvil es parte del entorno, este carece de control administrativo
humano, en un porciento muy elevado ya vienen configurados por sus propietarios con ciertos
requerimientos que cumplir.
1. Incluir cambios contextuales
Un dispositivo debe estar continuamente consciente de que su ambiente puede
cambiar en cualquier momento (como que una red ya no sea disponible para el
dispositivo).
2. Formar composiciones a la medida
hace referencia a que muchos dispositivos de sistemas masivos se utilizaran en
formas muy diferentes por distintos usuarios.
3. Reconocer el intercambio como algo común
Debido a la intermitente y cambiante conectividad de los dispositivos, el
espacio donde reside la información accesible muy probablemente cambiará a
cada momento
Sistemas caseros
Estos sistemas generalmente consisten en una o más computadoras personales, aunque lo más
importante es que integran aparatos electrónicos de consumo típicos como televisores,
equipos de audio y video, dispositivos para juegos electrónicos, teléfonos (inteligentes), PDA,
y otros aparatos personales en un solo sistema. Además, podemos esperar que todo tipo de
dispositivos tales como implementos de cocina, cámaras de vigilancia, relojes, controladores
de alumbrado, etc., estarán conectados a un solo sistema distribuido.
Un desafío importante es que un sistema debe ser completamente auto configurable y auto
administrable. No se puede esperar que los usuarios finales estén dispuestos a, y sean capaces
de, mantener en ejecución un sistema distribuido casero si sus componentes son propensos a
errores.
Otro motivo de tensión es la administración de lo que se conoce como “espacio personal al
reconocer que un sistema casero consta de muchos dispositivos compartidos, así como
personales,y que en un sistema casero los datos también están sujetos a restricciones de
intercambio, se necesita de mucha atención para realizar tales espacios personales.
Redes de monitoreo
En muchos casos, estas redes forman parte de la tecnología que permite el dominio, y vemos
que muchas soluciones para las redes de monitoreo se vuelven aplicaciones masivas. Lo que
hace interesantes a las redes de monitoreo, desde una perspectiva de sistemas distribuidos, es
que en prácticamente todos los casos se utili-zan para procesar información.
Una red de sensores típica está constituida por decenas, centenas o miles de nodos
relativamente pequeños, y cada nodo está equipado con un dispositivo sensor. La mayoría de
las redes de monitoreo utiliza la comunicación inalámbrica, y los nodos generalmente son de
baterías. Sus limitados recursos, sus restringidas capacidades de comunicación, y su consumo
de energía, demandan en la lista de criterios de diseño que la eficiencia sea alta
Arquitectura
La creación de instancias finales de una arquitectura de software también se conoce como
arquitectura de sistema en la arquitectura donde que se puede conocer centralizadas
tradicionales y por lo cual el servidor implementa la mayoría de los componentes de software
,mientras que los clientes remotos pueden acceder a ese servidor utilizando medios de
comunicación simple, en algunos sistemas distribuidos, la adaptabilidad se puede lograrse
realizando un sistema monitoreo con su propio comportamiento y tome las medidas
adecuadas cuando sea necesario.
ESTILOS ARQUITECTÓNICOS
La organización lógica de los sistemas distribuidos en componentes de software, también
conocida como arquitectura de software Un componente es una unidad modular con las
interfaces requeridas bien definidas; dicha unidad es reemplazable dentro de su ambiente
(Bass y cols., 2003).
1. Arquitecturas en capas: el modelo cliente-servidor ha estado sujeto a muchos
debates y controversias.
2. Arquitecturas basadas en objetos: Cada objeto corresponde a lo que hemos
definido como componente, y estos componentes se conectan a través de un
mecanismo de llamadas a procedimientos
3. Arquitecturas centradas en datos:la evolución en los procesos se comunican a
través de un repositorio común (activo o pasivo).
4. Arquitecturas basadas en eventos.los procesos se comunican básicamente a
través de la propagación de eventos, los que opcionalmente transportan datos.
ARQUITECTURAS DE SISTEMAS
los componentes de software, sobre su interacción y ubicación, da pie a una instancia de
arquitectura de software, también conocida como arquitectura de sistema , se analiza cuál es
la organización más centralizadas y descentralizadas, así como diversas formas híbridas.
Arquitecturas centralizadas
la arquitectura centralizada es pensar en términos de clientes que requieren servicios de los
servidores nos ayuda a comprender y manejar la complejidad de los sistemas distribuidos.
Arquitecturas multiniveles
Esta organización más simple es tener sólo dos tipos de máquina:
1. Una máquina cliente
2. Una máquina servidor
Procesos
La comunicación entre procesos es el núcleo de todos los sistemas distribuidos, por tal razón
es importante entender la manera en que los procesos localizados en diferentes computadoras
pueden intercambiar información. En los sistemas distribuidos tradicionalmente la
comunicación está basada en el paso de mensaje. Esta técnica aporta sincronización entre
procesos y permite la exclusión mutua, su principal característica es que no requiere memoria
compartida, por lo que resulta ser muy importante en la programación de sistemas
distribuidos. (Tanenbaum & Van Steen, 2008)
Virtualización
La separación entre tener una sola CPU y ser capaz de pretender que existen más unidades de
procesamiento se puede extender también a otros recursos, ello origina lo que conocemos
como virtualización de recursos. Esta virtualización se ha aplicado durante muchas décadas,
pero ha adquirido un renovado interés conforme los sistemas computacionales (distribuidos)
se han vuelto más populares y complejos, originando una situación en la cual el software de
aplicación por lo general sobrevive a sus sistemas de hardware y software subyacentes. En esta
sección hemos puesto especial atención a lo explicado del rol de la virtualización y cómo la
podemos llevar a cabo. (Tanenbaum & Van Steen, 2008)
Clientes
Servidores
Banco de Preguntas
1.- ¿Cuales son los objetivos de un Sistema distribuido?
1.- Accesibilidad de recursos
2.- Seguridad de datos
3.- Transparencia de distribución
4.- Tolerancia en Cluster
5.- Escabilidad
A. 1, 2, 5
B. 2, 3, 5
C. 1, 3, 5
D. 2, 4, 5
a)1-a, 2-c,3-b
4.- En la arquitectura varios estilos ya están identificados, entonces. ¿Cuales son los más importantes
para sistemas distribuidos escoja la correcta?.
5.-¿Cual es la más manera mas simple fisicamente para distribuir una aplicacion?.
a) Cliente-servidor
b) modelo-vista-controlador
c) cliente-modelo
d) servidor-cliente-controlador
6.- En las arquitecturas…………, los procesos se comunican a través de ……………, los que
ocasionalmente………..; esto se ha asociado a un conocimiento llamado……………...
A. Centradas de datos, repositorio común, transportan datos, sistemas de publicación-
revisión
B. Basadas en eventos, propagación de eventos, transportan datos, sistemas de
publicación-suscripción
C. Basadas en eventos, repositorio de eventos, transportan eventos, sistemas de
publicación-revisión
D. basado en datos, propagación de datos, transportan datos, sistemas de publicación-
suscripción
Conclusiones
● Como pudimos aprender el proceso de los hilos es muy importante ya que al
diseñar una aplicación, estos multihilos nos ayudan a ejecutar más de un proceso
a la vez con lo cual traemos los datos al sistema y estos van cargando en secuencia,
o en paralelo de esta manera podemos visualizar los datos que van llegando al
sistema de no ser asi tendriamos que esperar a que cargue todos los datos para ver
los datos extraídos de diferentes partes.
● La usabilidad en un sistema distribuido es de mucha importancia ya que permite
ingresar nuevos procesos o recursos sin que este pierda efectividad pero debemos
tener en cuenta la modularidad de diseño y así se evitará problemas como, un
servidor para varios usuarios, datos centralizados y algoritmos centralizados, claro
que la transparencia de este sistema ayuda mucho al engaño lógico para el usuario
presentando múltiples recursos en una sola computadora
● la virtualización viene a ser una herramienta poderosa en los sistemas distribuidos
ya que gracias a esto se puede pretender que se tiene varios unidades de
procesamiento en una sola y esto permite abarcar mayor recurso en una sola CPU,
ayudando en distintos procesos.
Bibliografía
➢ Tanenbaum, A. S., & Van Steen, M. (2007). Distributed systems: principles and
paradigms. Prentice-Hall.
➢ Santero, J. C. (01 de enero de 2016). openaccess.uoc.edu. Recuperado el 01 de
noviembre de 2019, de Proceso de Virtualización de un Centro de Datos:
http://openaccess.uoc.edu/webapps/o2/bitstream/10609/45902/6/juan78TFC0216
memoria.pdf
➢ Alberto Lafuente. Introducción a los Sistemas Distribuidos. 13/08/2017, Sitio web:
http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf
➢ LOPEZ FUENTES, F. D. (2015). Sistemas distribuidos. Cuajimalpa: Universidad
Autónoma Metropolitana.
➢ F. d. (2015). Sistemas distribuidos. México: UaM Unidad Cuajimalpa. Recuperado el
01 de noviembre de 2019, de