Modelos Arquitectónicos.
Correspondencia con la infraestructura física distribuida II
En esta publicación se continua la descripción de los patrones de arquitectura. Se exploran otros patrones de arquitectura propuesto por Limoncelli [4].
2. Patrones de Arquitectura
Los patrones arquitectónicos [3] dan una descripción de los elementos y el tipo de relación que tienen junto con un conjunto de restricciones. Un patrón arquitectónico expresa un esquema de organización estructural esencial para un sistema de software, que consta de subsistemas, sus responsabilidades e interrelaciones. No son necesariamente soluciones completas en sí mismas, sino que ofrecen conocimientos parciales que, cuando se combinan con otros patrones, llevan al diseñador a una solución para un dominio de problema dado.
Otros Patrones. Balanceador de carga con réplicas (backend)
En [4], el autor presenta una clasificación de las arquitecturas de los sistemas distribuidos basada en patrones. Estos patrones forman parte de la estructura de los sistemas distribuidos, considere que los mismos están compuesto por múltiples componentes que aportan la funcionalidad que presentan los sistemas distribuidos, como la disponibilidad y escalamiento de servicios. Se detallan tres patrones en particular:
- Balanceador de carga con múltiples réplicas
Los patrones que se muestran a partir de este, son parte de la estructura de los sistemas distribuidos presentados en [4]. En el patrón de composición del balanceador de carga con múltiples réplicas , ver la Figura 1, las solicitudes se envían al servidor del equilibrador de carga. Para cada solicitud, selecciona una replica (backend) y se reenvía la solicitud allí. La respuesta vuelve al servidor del equilibrador de carga, que a su vez la transmite al solicitante original. Una solicitud enviada a cualquier réplica debería producir la misma respuesta.
 |
| Figura 1. Balanceador de Cargas con replicas. Tomado de [4] |
- Servidor con varios réplicas
El siguiente patrón de composición es un servidor con múltiples réplicas o backends. El servidor recibe una solicitud, envía consultas a muchos servidores réplicas y redacta la respuesta final combinando esas respuestas. Este enfoque se utiliza normalmente cuando la consulta original se puede descomponer en una serie de consultas independientes que se pueden combinar para formar la respuesta final.
 |
| Figura 2. Balanceador de Cargas. Tomado de [4] |
La Figura 2 de la izquierda ilustra cómo un motor de búsqueda simple procesa una consulta con la ayuda de múltiples respaldos. La interfaz recibe la solicitud. Transmite la consulta a varios servidores respaldos.
Si la búsqueda es textual, el corrector ortográfico responde con información para que el motor de búsqueda sugiera ortografías alternativas. Los backends de búsqueda de imágenes y web responden con una lista de sitios web e imágenes relacionadas con la consulta. Una vez que se reciben las respuestas, la interfaz utiliza esta información para construir el HTML que forma la página de resultados de búsqueda para el usuario, que se envía como respuesta.
La Figura [2],esquina derecha, ilustra la misma arquitectura con backends replicados y con equilibrio de carga. Se aplica el mismo principio, pero el sistema puede escalar y sobrevivir mejor a las fallas.
El otro patrón de composición fundamental es el árbol de servidores. Como ilustra la Figura 3, en este esquema varios servidores trabajan en cooperación con uno como la raíz del árbol, los servidores padres debajo de él y los servidores hoja en la parte inferior del árbol.
Este patrón se utiliza para acceder a un gran conjunto de datos o corpus. Cada hoja almacena una fracción de los datos. La raíz recibe la consulta original y la reenvía a los padres, quienes la reenvían a los servidores hoja. Cada hoja envía sus hallazgos a los padres, que clasifican y filtran los resultados antes de enviarlos a la raíz. La raíz toma las respuestas, combina los resultados y responde.
 |
| Figura 3. Servidores Replicados. Tomado de [4] |
3.Soluciones basadas en middleware.
La tarea del middleware es proporcionar un nivel superior abstracción de programación para el desarrollo de sistemas distribuidos y, con las capas, abstraer la heterogeneidad en la infraestructura subyacente para promover interoperabilidad y portabilidad. Ademas de la soluciones de middleware presentados , también hay arquitecturas más complejas como las siguientes:
- Objetos Distribuidos: Corba, Java RMI;
- Componentes distribuidos: Fractal;
- Servidores de aplicaciones: Sun EJB, JBoss
- Servicios Web: Apache Axis
- Publicación-suscripción: Event Service, JMS
- Colas de mensajes: Websphere MQ
- Peer-to-peer: PASTRY, Tapestry, OceanStore, Gnutella
Bibliografía
[1]George Coulouris et al. Distributed Systems: Concepts and Design. 5th. USA: Addison-Wesley Publishing Company, 2011
[2]Christina J. Hogan Thomas A. Limoncelli Strata R. Chalup. The Practice ofCloud System Administration: Designing and Operating Large Distributed Systems. Volume 2. Addison Wesley, 2014.
[3]Roger S. Pressman and Bruce R. Maxim. Software Engineering: A Practitioner’s Approach. 9th edition. McGraw-Hill Education, 2019.
[4] Christina J. Hogan Thomas A. Limoncelli Strata R. Chalup. The Practice of Cloud System Administration: Designing and Operating Large Distributed Systems. Volume 2. Addison Wesley, 2014.
No hay comentarios.:
Publicar un comentario