S.E.
S.N.E.S.T
D.G.E.S.T
INSTITUTO TECNOLGICO
Del Istmo
ING. EN SISTEMAS COMPUTACIONALES.
CATEDRATICO:
Ing. Jos Antonio Lpez Posada
MATERIA:
Arquitectura de sistemas distribuidos
TEMA:
FUNDAMENTOS DE ARQUITECTURA DISTRIBUIDA
SUBTEMAS:
1.1. Qu es una Arquitectura Distribuida
1.2. Prerrequisitos de una Arquitectura Distribuida
1.3. Estilos Arquitectnicos
1.4. Arquitecturas en capas
1.5. Arquitecturas Centralizadas
1.6. Implementacin de aplicaciones en capas
1.7. Arquitecturas Descentralizadas
1.8. Arquitecturas Hibridas
1.9. Arquitectura vs Middleware.
EQUIPO:
Antonio Cruz Flor Dennis
12190283
Antonio Lpez Jos Francisco 12190
ndice
Cruz Mendoza Anselmo Enrique 12190
SEMESTRE: 8
GRUPO: o
Introduccin
1.1. Qu es una Arquitectura Distribuida
1.2. Prerrequisitos de una Arquitectura Distribuida
1.3. Estilos Arquitectnicos
1.4. Arquitecturas en capas
1.5. Arquitecturas Centralizadas
1.6. Implementacin de aplicaciones en capas
1.7. Arquitecturas Descentralizadas
1.8. Arquitecturas Hibridas
1.9. Arquitectura vs Middleware
INTRODUCCIN
En la actualidad los grandes sistemas de informacin son sistemas distribuidos, es
aqu donde se procesa informacin sobre varias computadoras. La ingeniera de
sistemas distribuidos tiene mucho en comn con la ingeniera de cualquier otro
software, pero existen cuestiones especficas que deben tenerse en cuenta
cuando se disea este tipo de sistemas. Un sistema distribuido es una coleccin
de ordenadores autnomos, enlazados por una red de ordenadores y soportados
por un software que hace que la coleccin acte como un servicio integrado. Para
ello tambin existen diversos estilos de arquitectura que ms adelante estarn
haciendo presencia en el desarrollo, as como cuales son los prerrequisitos para
llevar a cabo dicha distribucin de informacin.
1.- Fundamentos de Arquitecturas Distribuidas
1.1.-Que es la arquitectura distribuida
Son sistemas multiprocesadores en los que las diferentes funciones del sistema se
encuentran distribuidas en procesadores especializados: de instrucciones, de
clculo, de direcciones, etc. en la que el elemento de control se sita prximo al
elemento a controlar. (Arquitectura distribuida, 2012).
Hay sistemas que son de arquitectura distribuida en cuanto a la capacidad de
proceso, pero no lo son en cuanto a la ubicacin fsica de los diferentes elementos
de control y viceversa. Los sistemas que son de arquitectura distribuida en cuanto
a su capacidad para ubicar elementos de control fsicamente distribuidos no tienen
la capacidad de ubicar los procesos de control, que son ejecutados en uno o
varios procesadores fsicamente centralizados. (Arquitectura distribuida, 2012).
En los sistemas de arquitectura distribuida que utilizan como medio de transmisin
el cable, existe un concepto a tener en cuenta que es la topologa de la red de
comunicaciones. La topologa de la red se define como la distribucin fsica de los
elementos de control respecto al medio de comunicacin (cable). (Arquitectura
distribuida, 2012).
La arquitectura distribuida o informtica en malla es un nuevo modelo para
resolver problemas de computacin masiva utilizando un gran nmero de
ordenadores organizadas en racismos incrustados en una infraestructura de
Telecomunicaciones distribuidas. Cuando hace ms de 10 aos se cre el
concepto de redes de rea local (LAN) Que la mayora de las empresas utilizan
hoy en da, no se contaba con los poderosos equipos de cmputo que existen
actualmente, por esta razn y para no saturar la capacidad de los equipos
servidores, las aplicaciones de bases de datos, no solo las que utilizan archivos
DBF, utilizaban el CPU de los PC Terminales, para procesar la informacin, este
modelo,
llamado arquitectura
distribuida no
ha
cambiado
desde
que
se
implementaron las primeras LANS y se mantiene sin cambios a la fecha, sin
importar situ Red es Novell, NT/2000/2003, o Windows 9x/ME/XP punto a punto.
Sin ms que decir la arquitectura distribuida es un sistema lgico ordenado que se
encarga de conectar varios ordenadores. Es el sistema que conecta servidor -
cliente en tal forma que se pueda distribuir informacin en forma recproca.
(Arquitectura distribuida, 2012).
1.1.1.- Arquitectura distribuida Cliente/Servidor
La arquitectura cliente-servidor es un modelo de aplicacin distribuida en el que
las tareas se reparten entre los proveedores de recursos o servicios, llamados
servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a
otro programa, el servidor, quien le da respuesta. Esta idea tambin se puede
aplicar a programas que se ejecutan sobre una sola computadora, aunque es ms
ventajosa en un sistema operativo multiusuario distribuido a travs de una red de
computadoras. (Arquitectura cliente- servidor, 2011).
Algunos ejemplos de aplicaciones computacionales que usen el modelo clienteservidor son el Correo electrnico, un Servidor de impresin y la World Wide Web.
La tecnologa Cliente/Servidor es el procesamiento cooperativo de la informacin
por medio de un conjunto de procesadores, en el cual mltiples clientes,
distribuidos geogrficamente, solicitan requerimientos a uno o ms servidores
centrales. (Arquitectura cliente- servidor, 2011).
Desde el punto de vista funcional, se puede definir la computacin Cliente/Servidor
como una arquitectura distribuida que permite a los usuarios finales obtener
acceso a la informacin de forma transparente an en entornos multiplataforma.
Se trata pues, de la arquitectura ms extendida en la realizacin de Sistemas
Distribuidos. (Arquitectura cliente- servidor, 2011).
Un sistema Cliente/Servidor es un Sistema de Informacin distribuido basado en
las siguientes caractersticas:
-
Servicio: unidad bsica de diseo. El servidor los proporciona y el cliente
los utiliza.
Recursos compartidos: Muchos clientes utilizan los mismos servidores y, a
travs de ellos, comparten tanto recursos lgicos como fsicos.
Protocolos asimtricos: Los clientes inician conversaciones.
servidores esperan su establecimiento pasivamente.
Los
Transparencia de localizacin fsica de los servidores y clientes: El cliente
no tiene por qu saber dnde se encuentra situado el recurso que desea
utilizar.
Independencia de la plataforma HW y SW que se emplee.
Sistemas dbilmente acoplados. Interaccin basada en envo de mensajes.
Encapsulamiento de servicios. Los detalles de la implementacin de un
servicio son transparentes al cliente.
Escalabilidad horizontal (aadir clientes) y vertical (ampliar potencia de los
servidores).
Integridad: Datos y programas centralizados en servidore s facilitan su
integridad y mantenimiento.
En el modelo usual Cliente/Servidor, un servidor, (daemon en la terminologa
sajona basada en sistemas UNIX/LINUX, traducido como "demonio") se activa y
espera las solicitudes de los clientes. Habitualmente, programas cliente mltiples
comparten los servicios de un programa servidor comn. Tanto los programas
cliente como los servidores son con frecuencia parte de un programa o aplicacin
mayores. (Arquitectura cliente- servidor, 2011).
El Esquema de funcionamiento de un Sistema Cliente/Servidor sera:
-
El cliente solicita una informacin al servidor.
El servidor recibe la peticin del cliente.
El servidor procesa dicha solicitud.
El servidor enva el resultado obtenido al cliente.
El cliente recibe el resultado y lo procesa.
1.2.- Prerrequisitos de una Arquitectura Distribuida
Prerrequisitos de una Arquitectura Distribuida Cliente/Servidor:
Capacidad de ejecutar ms de un programa simultneamente.
-
Un sistema multitarea: Capaz de ejecutar sobre una misma mquina ms
de un programa a la vez.
Un sistema con ms de un ordenador: Donde cliente y servidor se ejecutan
sobre mquinas, y posiblemente sistemas operativos, diferentes.
La plataforma Internet: Donde el servicio se pide a travs de la red y se
suministra desde plataformas desconocidas para el cliente.
Un sistema de comunicacin y de intercambio de mensajes entre
programas: Sobre el que se montar el transportista. Por ejemplo, una
plataforma TCP/IP.
Potencia de proceso en los clientes en las aplicaciones basadas en sistema
operativo. (sistemas distribuidos, 2010).
Una arquitectura basada en SOA tiene que cumplir los siguientes prerrequisitos:
-
Los servicios tienen que ser reutilizables: con esto se ganan costes de
tiempo al no tener que recodificar todo para una actualizacin o correccin
software.
Los servicios deben proporcionar un contrato formal: en todo momento se
deben tener claro el nombre del servicio al que se accede, funciones que
procura y datos de entrada y salida ofrece el servicio.
Los servicios deben de estar dbilmente acoplados. Es de lgica el
proporcionar independencia entre los servicios que se ofrecen.
Los servicios deben de procurar composicin. Esto se obtiene de la
orquestacin y le coreografa.
Los servicios no pueden tener un estado. Un servicio no puede guardar
informacin, dado que si lo hiciera no sera independiente y no se podra
asegurar su reutilizacin.
Los servicios deben ser descubiertos para poder ser utilizados o
consumidos. Para poder conseguir tal fin se usara UDDI (que publica las
interfaces de los servicios en dicho mecanismo). (Desarrollo de
aplicaciones distribuidas, 2014).
Cap.1.2 Figura 1. Estructura general de una arquitectura SOA
1.3 Estilos (modelos) arquitectnicos
Iniciamos nuestra explicacin sobre arquitecturas considerando primero la
organizacin lgica de los sistemas distribuidos en componentes de software,
tambin conocida como arquitectura de software (Bass y cols., 2003). La
investigacin sobre arquitecturas de software ha madurado considerablemente, y
ahora es comn aceptar que el diseo o la adopcin de una arquitectura resultan
crucial para el desarrollo exitoso de sistemas grandes. Para nuestro estudio, la
idea de estilo arquitectnico es importante. Tal estilo se formula en trminos de
componentes, la forma en que los componentes interactan entre s, el
intercambio de datos entre los componentes y, por ltimo, en cmo es que estos
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). Tal como explicaremos ms
adelante, la cuestin importante sobre un componente para sistemas distribuidos
es que pueda ser reemplazado, a condicin de respetar sus interfaces. Un
concepto de cierta manera ms difcil de entender es el de conector, el cual
generalmente se describe como un mecanismo que media la comunicacin,
coordinacin o cooperacin entre componentes (Mehta y cols., 2000; y Shaw y
Clements, 1997). Por ejemplo, un conector puede formarse por los medios
disponibles para hacer llamadas a procedimientos (remotos), paso de mensajes, o
flujo de datos. Por medio de componentes y conectores podemos lograr varias
configuraciones, las cuales se han clasificado en estilos arquitectnicos. Varios
estilos ya estn identificados y los ms importantes para sistemas distribuidos son:
1. Arquitecturas en capas.
2. Arquitecturas basadas en objetos.
3. Arquitecturas centradas en datos.
4. Arquitecturas basadas en eventos.
La idea bsica para el estilo en capas es sencilla: los componentes se estructuran
(organizan) a modo de capas, donde al componente de la capa Li se le permite
llamar a componentes de la capa subyacente Li1, pero no del resto de capas,
como ilustra la figura 2-1(a). Este estilo se ha adopta- do ampliamente en la
comunidad de redes, y lo revisaremos brevemente en el captulo 4. Una
observacin clave es que el control generalmente fluye de capa a capa: las
peticiones se mueven hacia abajo en la jerarqua mientras que los resultados se
mueven hacia arriba. Una organizacin bastante libre es la que siguen las
arquitecturas basadas en objetos, la cual aparece en la figura 2-1(b). En esencia,
cada objeto corresponde a lo que hemos definido como componente, y estos
componentes se conectan a travs de un mecanismo de llamadas a
procedimientos (remotos). Sin ser sorprendente, esta arquitectura de software
coincide con la arquitectura de sistemas cliente-servidor que describimos antes. La
arquitectura basada en capas y la basada en objetos an son los estilos ms
importantes utilizados para implementar grandes sistemas de software (Bass y
cols., 2003).
Cap.1.3. figure 2. estilos arquitectnicos (a) en capas y (b) basado en objetos.
Las arquitecturas centradas en datos evolucionaron alrededor de la idea de que
los procesos se comunican a travs de un repositorio comn (activo o pasivo). Se
puede argumentar que, para sistemas distribuidos, estas arquitecturas son tan
importantes como las basadas en capas y objetos. Por ejemplo, un punto a favor
que han desarrollado las aplicaciones en red es que se basan en un sistema de
archivos distribuidos compartidos donde casi todas las comunicaciones se realizan
a travs de archivos. De manera similar, los sistemas distribuidos basados en la
web, que explicaremos ampliamente en el captulo 12, se centran bastante en
datos: los procesos se comunican a travs de servicios de datos compartidos
basados en la web. (Tanenbaum y Steen, 2008).
En las arquitecturas basadas en eventos, los procesos se comunican bsicamente
a travs de la propagacin de eventos, los que opcionalmente transportan datos,
como ilustra la figura 2-2(a). Para sistemas distribuidos, la propagacin de eventos
se ha asociado con lo que se conoce como sistemas de publicacin-suscripcin
(Eugster y cols., 2003). La idea bsica es que los procesos publican eventos
despus de los cuales el middleware asegura que slo aquellos procesos
suscritos a tales eventos los recibirn. La principal ventaja de los sistemas
basados en eventos es que los procesos estn libremente acoplados. En principio,
no necesitan referirse uno a otro explcitamente. A esto se le conoce tambin
como desacoplado en el espacio, o referencialmente desacoplado. (Tanenbaum y
Steen, 2008).
Cap. 1.3 Figura 3. Estilo arquitectnico (a) basado en eventos, y (b) espacio de datos compartidos
Las arquitecturas basadas en eventos pueden combinarse con arquitecturas
centradas en datos, y arrojan lo que conocemos como espacios de datos
compartidos. La esencia de los espacios de datos compartidos es que los
procesos ahora tambin estn desacoplados en el tiempo: no es necesario que
ambos estn activos cuando la comunicacin se lleva a cabo. Adems, muchos
espacios de datos compartidos utilizan una interfaz similar a la SQL para el
repositorio compartido en el sentido de que es posible acceder a los datos
utilizando una descripcin, en lugar de una referencia explcita, como en el caso
de los archivos. Dedicamos el captulo 13 a este estilo arquitectnico. Lo que hace
importantes a estas arquitecturas de software para los sistemas distribuidos es
que todas intentan lograr (a un nivel razonable) la transparencia de distribucin.
Sin embargo, como hemos explicado, la transparencia de distribucin requiere
negociar entre el rendimiento, la tolerancia a fallas, la facilidad de programacin,
etc. Como no existe una solucin nica que satisfaga todos los requerimientos
para todas las aplicaciones distribuidas, los investigadores han abandonado la
idea de que un solo sistema distribuido pueda utilizarse para cubrir el 90 por ciento
de todos los casos posibles. (Tanenbaum y Steen, 2008).
Cuntos y cules son los estilos?
En un estudio realizado por Mary Shaw y David Garlan (Garlan, et al., 1994),
proponen la siguiente taxonoma, en la que se entremezclan lo que antes se
llamaba arquitecturas con los modelos de diseo:
1.
Tubera-filtros
2.
Organizacin de abstraccin de datos y orientacin a objetos
3.
Invocacin implcita, basada en eventos
4.
Sistemas en capas
5.
Repositorios
6.
Intrpretes orientados por tablas
7.
Procesos distribuidos. Una forma particular de proceso distribuido es, por
ejemplo, la arquitectura cliente-servidor.
8.
Organizaciones programa principal / subrutina.
9.
Arquitecturas de software especficas de dominio
10.
Sistemas de transicin de estado
11.
Sistemas de procesos de control
12.
Estilos heterogneos
En Software Architecture in Practice, un texto fundamental de Bass, Clements y
Kazman (Bass, et al., 1998), se proporciona una sistematizacin de clases de
estilo en cinco grupos:
Flujo de datos (movimiento de datos, sin control del receptor de lo que viene
corriente arriba)
Proceso secuencial por lotes
Red de flujo de datos
Tubera-filtros
Llamado y retorno (estilo dominado por orden de computacin, usualmente
con un solo thread de control)
Programa principal / Subrutinas
Tipos de dato abstracto
Objetos
Cliente-servidor basado en llamadas
Sistemas en capas
Componentes independientes (dominado por patrones de comunicacin
entre procesos independientes, casi siempre concurrentes)
Sistemas orientados por eventos
Procesos de comunicacin
Centrados en datos (dominado por un almacenamiento central complejo,
manipulado por computaciones independientes)
-
Repositorio
Pizarra
Mquina virtual (caracterizado por la traduccin de una instruccin en
alguna otra)
-
Intrprete
Los estilos a diferencia de patrones son unos pocos, y se agrupan en clases de
estilos, siendo la clasificacin ms actual, concisa y que se asume durante la
investigacin la siguiente (Reynoso, 2005):
Estilos de Flujo de Datos
-
Estilos de Llamada y Retorno
-
Arquitectura de Mquinas Virtuales
Estilos heterogneos
-
Model-View-Controller (MVC)
Arquitecturas en Capas
Arquitecturas Orientadas a Objetos
Arquitecturas Basadas en Componentes
Estilos de Cdigo Mvil
-
Tubera y filtros
Estilos Centrados en Datos
Arquitecturas de Pizarra o Repositorio
Sistemas de control de procesos
Arquitecturas Basadas en Atributos
Estilos Peer-to-Peer
-
Arquitecturas Basadas en Eventos
Arquitecturas Orientadas a Servicios (SOA)
Arquitecturas Basadas en Recursos
FUENTES CONSULTADAS
Bibliografa
Andrew S. Tanenbaum y Maarten Van Steen, (2008). Sistemas distribuidos
principios y paradigma. (2 edicin). 53519, Naucalpan de Jurez, Estado de
Mxico. PEARSON EDUCACIN.
Internet
Arquitectura distribuida. (s.f.).Recuperado el 29 de enero de 2016, de
http://www.buenastareas.com/ensayos/ArquitecturaDistribuida/3663000.html