Reto 1. ¡Conoce el procedimiento de un sistema!
distribuido!
Nombre completo: Venus Atenea Pérez Solís
Fecha de elaboración: 05/10/2020
Nombre del asesor: Gabriel Alejandro Granados
Instrucciones:
Elabora un análisis crítico en el cual abordes los procedimientos de un sistema
distribuido. Dicho análisis deberás presentarlo en un documento en Word con los
siguientes elementos:
A. Introducción: elabora una introducción en la cual abordes los
siguientes puntos: ¿qué es un sistema distribuido? y ¿cuáles son sus
objetivos, características y cuántos tipos existen?
B. Desarrollo: en el desarrollo deberás abordar los estilos de arquitectura
distribuidos, además de incluir la respuesta a las siguientes
interrogantes:
¿Cuál es la arquitectura de un sistema distribuido?
¿Qué es el middleware y sus aplicaciones?
C. Conclusión: elabora una conclusión sobre la importancia del uso de
sistemas distribuidos y sus aplicaciones, así como acerca de la
diferencia entre proceso y un hilo.
Importante
Extensión mínima de cinco cuartillas.
Tip
Con el fin de sustentar la información, es
importante revisar fuentes confiables, citarlas en el
desarrollo del documento y referenciarlas al final.
“Un sistema distribuido es una colección de computadoras
independientes que dan al usuario la impresión de construir un único sistema
coherente”[CITATION Tan08 \p 2 \l 2058 ] . El sistema distribuido consta de
computadoras autónomas y usuarios quienes realmente creen que interactúan con
un sistema único, como en el caso de los sistemas cliente-servidor.
Una característica importante del sistema distribuido es que las
diferencias de las computadoras y la manera en que se comunican entre sí queda
oculto para el usuario, de la misma manera que la organización misma que el
sistema. Otra característica fundamental es que los usuarios que interactúan con
el sistema lo hacen de manera uniforme sin importas desde dónde lo hagan o
cuando lo hagan, ya que el sistema siempre se presentará ante el usuario de la
misma manera.
Esta característica del sistema que mantiene oculto cómo se ejecuta y
cuántas computadoras están operando el sistema permite la escalabilidad, de
forma que cuando una parte de las computadoras (o del sistema en sí) no
funciona, otras pueden remplazarlo; y también el sistema puede ser agrandado
para incluir en él más máquinas que lo hagan más eficaz y efectivo, sin que el
usuario se de cuenta del hecho y sólo lo reconozca en como opera. Un ejemplo
sería la reducción de los segundos que tarda un buscador en lograr un resultado.
Dicho esto, las características principales de un sistema distribuido son
la Transparencia o como lo menciona Francisco Daniel Muños la Ocultación que
es: “la imagen de un sistema único y coherente, se ocultan las diferencias
existentes entre todos los ordenadores que componen el sistema. Además,
tampoco resultará perceptible la complejidad de los mecanismos de
comunicación…”[ CITATION Fra13 \l 2058 ]; acceso homogéneo u homogeneidad de
imagen, que es que independientemente del lugar desde que se acceso todos los
usuarios recibirán la misma imagen. Escalabilidad, lo cual resulta fácil, ya que en
un sistema constituido por computadores independientes agregar más a la
ecuación no hará diferencia; y disponibilidad, ya que los servicios de un sistema
distribuido deberían estar siempre disponibles, de ahí la importancia de repetirlo
en varios módulos.
Los objetivos de un sistema distribuido según Tanenbaum son cuatro:
1. Facilitar el acceso a recursos remotos. Esto es gracias a que el sistema
distribuido está compuesto por un gran número de módulos independientes
a los que el usuario tendrá acceso; dicho esto “cada ordenador dispondrá
de cierta cantidad de memoria, dispositivos de almacenamiento, otros
dispositivos E/S (impresoras, escáneres,…), al menos un procesador, etc.
Aparte, también facilitará una segunda colección de recursos lógicos:
ficheros, herramientas de sincronización, herramientas de
comunicación…”[CITATION Fra13 \p 166 \l 2058 ]; la ventaja es que con
ello se pueden reducir los costo de tener un solo dispositivo que pudiera ser
demasiado costoso a disposición de varios usuarios, el inconveniente de
ello, sin embargo, será la gestión de la seguridad al acezar a los distintos
recursos.
2. Transparencia de distribución: este objetivo hace referencia a la
característica de homogeneidad, ya que el sistema debe parecer una
imagen única y coherente; o sea que es capaz de ocultar que físicamente
está compuesto por múltiples módulos independientes.
3. Sistemas abiertos: se denominan así todo aquellos que se ajustan a
estándares que especifican las propiedades y operaciones que constituyen
al sistema permitiendo la interoperabilidad y la portabilidad.
Interoperabilidad; dos sistemas o componentes presentan esta
característica cuando son capases de intercambiar información y pueden
usar posteriormente la información que han llegado a intercambiar.
Portabilidad; las aplicaciones que se hayan desarrollado sobre un sistema
distribuido abierto serán fácilmente portables a otros sistemas distribuidos
abierto.[ CITATION Fra13 \l 2058 ]
4. Sistemas escalables: los sistemas pueden ser escalables de dos formas en
tamaño (eso quiere decir que puede crecer en número de recursos),
escalable en distancia, lo cual quiere decir que un sistema distribuido puede
estar físicamente en distintas partes del mundo; y administrativa; cuando el
sistema se encuentra conformado por múltiples organizaciones y cada una
tiene sus propios recursos (subsistemas) que componen el sistema.
Así pues, existen tres tipos de sistemas distribuidos:
Sistemas distribuidos de cómputo: se utiliza para realizar tareas de cómputo
de alto rendimiento. Hay dos subgrupos en esto: el cómputo cluster,
donde el hardware subyacente consta de una colección de estaciones de
trabajo similares, o computadoras personales conectadas cercanamente
por medio de una LAN de alta velocidad, además cada nodo ejecuta el
mismo sistema operativo. Y el cómputo en malla (grid); este subgrupo
consta de sistemas distribuidos construidos generalmente como un
conjunto de sistemas cómputo, donde cada sistema podría caer dentro de
un dominio administrativo diferente, y podría ser muy diferente cuando nos
referimos al hardware, software y la tecnología de red instalada.
Sistemas distribuidos de información: son los sistemas de organizaciones y
corporaciones. Existe una gran industria que se concentra en la Integración
de Aplicaciones Empresariales:
o Sistemas de procesamiento de transacciones: se usa en
aplicaciones de base de datos, lo más común es en sistemas
contables y bancarios.
o Integración de Aplicaciones Empresariales: los componentes de las
aplicaciones deberían ser capaces de comunicarse entre sí de
manera directa, no sólo mediante un comportamiento petición
respuesta soportado por un sistema de procesamiento de
transacciones.
Sistemas distribuidos masivos: los sistemas distribuidos anteriores tenían
estabilidad, ya que sus nodos estaban fijos y tenían una conexión más o
menos permanente hacia una red. Sin embargo, en los dispositivos
embebidos, “no enfrentamos con sistemas distribuidos en los cuales la
inestabilidad es el comportamiento predeterminado”[CITATION Tan08 \p 25
\l 2058 ]. Estos sistemas masivos son pequeños, de baterías, portátiles y
tienen sólo una conexión inalámbrica: smartphones, cámaras de vigilancia,
dispositivos personales, entre otros muchos.
Los sistemas distribuidos son complejas piezas de software cuyos
componentes se encuentra dispersos en diversas computadoras, para que no se
vuelva confuso, es importante que estos sistemas estén organizados
adecuadamente. La organización de los sistemas distribuidos se basa en los
componentes de software que constituye dicho sistema: arquitectura de software;
que no dice cómo se organizarían los componentes y cómo deberían interactuar.
La instancia final de la arquitectura de software también se conoce como
arquitectura de sistemas.
La idea de estilo arquitectónico es importan, tal estilo se forma en
términos de componentes, la forma en que los componentes interactúan entre sí,
el intercambio de datos entre los componentes y cómo es que los elementos se
configuran juntos en un sistema. “Un componente es una unidad modular con las
interfaces requeridas bien definidas; dicha unidad es reemplazable dentro de su
ambiente (OMG,2004b)” [ CITATION Tan08 \l 2058 ]. Por medio de componentes y
conectores se pueden lograr varias configuraciones:
Arquitectura de capas: donde el componente de la capa Li, se le permite
llamar a componentes de la subyacente Li-1, pero no del resto de las
capas. Este estilo es ampliamente usado en la comunidad de redes.
Arquitectura basada en objetos: en ella cada objeto corresponde a lo que
hemos definido como un componente, y estos componentes se conectan a
través de un mecanismo de llamadas a procedimientos. Esta arquitectura
coincide con la arquitectura cliente-servidor.
Arquitectura centrada en datos: evolucionan alrededor de la idea de que los
procesos se comunican a través de un repositorio común (activo o pasivo).
Se basan en un sistema de archivos distribuidos compartidos desde casi
todas las comunicaciones que se realizan a través de archivos.
Arquitectura basada en eventos: los procesos se comunican básicamente a
través de la programación de eventos, los cuales pueden transportar datos.
Para sistemas distribuidos la propagación de eventos se ha asociado con lo
que se conoce como sistemas de publicación-suscripción (Eugster y cols.,
2003) [ CITATION Tan08 \l 2058 ]. Las arquitecturas basadas en eventos
pueden combinarse con arquitecturas centradas en datos y nace lo que
conocemos como espacios de daros compartidos.
Entre las arquitecturas de sistemas que existes, se dividen en
centralizadas, descentralizadas e hibridas. Las arquitecturas centralizadas se
basan en el modelo cliente-servidor, también conocida como comportamiento
solicitud-respuesta. En este modelo existen dos componentes el cliente quien
hace la solicitud y el servidor, quien envía la respuesta.
1. Aplicación de capas: establece una diferencia clara entre el cliente y el
servidor donde el nivel de interfaz de usuario es la parte más cercana para
interactuar con el usuario y el nivel de datos es donde se procesa la
información.
2. Arquitectura multiniveles: sugiere cierta cantidad de posibilidades para
distribuir físicamente una aplicación cliente servidor, a través de varias
máquinas.
Las arquitecturas descentralizadas tienen una característica clásica que es la
distribución vertical, lo cual se logra colocando lógicamente los diferentes
componentes en diferentes máquinas, también se le llama fragmentación vertical
según es utilizado en bases de datos relacionales distribuidas.
Otra arquitectura es la arquitectura estructurada de punto a punto; en esta
arquitectura la red sobrepuesta se construye mediante un procedimiento
determinista. Por mucho, el procedimiento más utilizado es el de organizar los
procesos a través de una tabla de hash distribuida (DHT); en los sistemas
basados en DHT los elementos de datos se les asigna una llave aleatoria a partir
de un identificador grande: 128 o 160 bit. Por otro lado, está la arquitectura punto
a punto no estructurada, la cual está basada en algoritmos para construir redes
sobrepuestas, la idea principal es que cada nodo mantenga una lista de vecinos,
pero que esta lista se construya de manera más o menos aleatoria. Se supone
que los datos están colocados al azar en los nodos.
Por último, se encuentran las arquitecturas híbridas. La primera es sistema de
servidores al borde; estos sistemas se utilizan en internet donde los datos de los
servidores se colocan “al borde” de la red. Este borde está formado por el límite
que hay entre las redes empresariales y la internet real, como lo proporciona un
proveedor de servicios de internet. Otros son los sistemas distribuidos en
colaboración que son estructuras hibridas que se utilizan en sistemas distribuidos
en colaboración, la cuestión principal de estos sistemas es que inicien por primera
vez por lo cual con frecuencia son desplegados en el esquema tradicional cliente-
servidor.
El middleware es una capa de software que funciona como capa de traducción
oculta para permitir la comunicación, intercambio de recursos y la administración
de datos en aplicaciones distribuidas; en el middleware los servicios del sistema
operativo y protocolos de comunicación se independizan, asimismo permite la
interacción de distintos servicios de un sistema. “El middleware se forma entre la
capa de las aplicaciones y las plataformas distribuidas y su objetivo es
proporcionar algún grado de transparencia de distribución u ocultar hasta cierto
puto la distribución de datos, el procesamiento y el control de
aplicaciones”[ CITATION Tan08 \l 2058 ]. En la práctica este sistema sigue un sistema
arquitectónico especifico, como COBRA, que sigue un sistema arquitectónico
basado en objetos.
Existen dos tipos de middleware. El middleware general, que son aquellos que
requieren todos los clientes y servidores como en el caso de un software de
comunicación que usa TPC/IP. Y el middleware de servicios que es todo aquel
software que se asocia únicamente a un solo servicio, como en el caso de uno que
se utiliza en una conexión BD a una red cliente-servidor (ODBC) o la tecnología
COBRA, que permiten que los objetos distribuidos en distintos lenguajes puedan
interactuar en una misma red para el intercambio de mensajes u otro software que
se emplea para tener conexiones seguras.
Los sistemas de computo distribuido son extensamente usados sobre todo en la
forma de buscadores como Google, Bing y Yahoo, por nombrar los más populares
y cada cual tiene un proceso diferente de operar, sin embargo, todos concuerdan
en que son nodos distribuidos que al final tienen una vista unificada y proporcionar
al usuario la impresión de ser un solo servidor el que está operando. Dependiendo
de cómo se usan estos sistemas pueden necesitar más o menos seguridad, como
en el caso de Google, que además de buscador ofrece el servicio de nube, que
también guarda los datos en distintas locaciones (servidores o máquinas) en las
que se encuentra el sistema.
Ahora bien, un hilo es parte de un programa en ejecución, pero antes de saber
qué son los hilos debemos saber qué son los programas. Los programas, mientras
se ejecutan, no pueden afectar a otros programas a menos de que haya una
interacción entre ellos, necesitan hacer uso del sistema operativo: Un ejemplo, si
Word quiere abrir un enlace en Chrome tiene que pedir permiso a Windows para
ejecutar el link, Windows confirmará con el usuario si desea que el link sea abierto
en ese explorador y le dará la opción de abrirlo en otro y posteriormente lo abrirla;
lo cual es un largo proceso. Los programas se conforman de hilos y cada uno
tiene un hilo principal. Los hilos son capaces de leer, escribir y modificar los datos
del programa al que pertenecen; un ejemplo de ello sería Word, cuando estamos
en Word tenemos el hilo principal que sería el editor/procesador de texto, la página
en blanco donde se escribe y se procesa el texto, pero simultáneamente tiene un
hilo secundario que se conecta a internet y puede revisar la ortografía y buscar
palabras y significados haciendo cambios en las palabras escritas en la página en
blanco.