noviembre 01, 2023

Principios de Diseño de Sistemas Distribuidos

 Los principios de  diseño de Sistemas Distribuidos describe los objetivos que se deben tomar en cuenta cuando se diseña un sistema sistema distribuido. A continuación se describen.

  •  ConcurrenciaTanto los servicios como las aplicaciones proporcionan recursos que los clientes pueden compartir en un sistema distribuido. Por tanto, existe la posibilidad de que varios clientes intenten acceder a un recurso compartido al mismo tiempo. La concurrencia se hace más compleja cuando existen  actividades paralelas que interactúan o comparten los mismos recursos. 
  • Compartir Recursos.  Los recursos, como los  periféricos,  datos en bases de datos,  bibliotecas, así como los datos (variables/archivos),  no pueden replicar por completo en todos los sitios porque no resulta practico ni rentable. Estos recursos se distribuyen normalmente por todo el sistema, para que su acceso no se convierta en un potencial cuello de botella

  • Transparencia.    El objetivo de la  transparencia es hacer que ciertos aspectos de la distribución sean invisibles para el programador de aplicaciones. Por ejemplo, no necesitan preocuparse por la ubicación o los detalles de cómo otros componentes acceden a sus operaciones, o si serán replicados o migrados. Incluso se pueden presentar fallas en la redes y procesos  en forma de excepciones, pero estas deben poder manejarse.  En el cuadro Tipos de transparencias, adaptado de [4],  se detallan los niveles de transparencia que se deben tomar en cuenta acompañado de su descripción.

                                Tipos de Transparencia.

 Conceptos  

Descripción

Acceso

Permitir el acceso con las mismas operaciones   de los recursos locales y remotos. 

Ubicación 

Que los recursos sean alcanzados  sin   conocer su ubicación física o de red. 

Red

Combina ambas transparencias: en el acceso  y en  la ubicación.

Concurrencia

Permite que varios procesos operen  simultáneamente usando recursos compartidos  sin interferencia entre ellos.

Replicación 

Permite que múltiples instancia de recursos  sean usados para aumentar  la confiabilidad  y    rendimiento sin que el usuario  de aplicaciones conozca de ellas.

Fallas

Ocultamiento de fallas, permitiendo que    usuarios y aplicaciones culminen sus tareas   sin percatarse de ellas.

Movilidad

Permite el movimiento de recursos y clientes  dentro del sistema  sin afectar la operación   de usuarios o programas..

Rendimiento

Permite que el sistema sea reconfigurado  para    mejorar el rendimiento cuando su carga varía.

Escalamiento

Permite que el sistema y la aplicación se    incremente sin cambios   en la estructura   del    sistema o en los algoritmos de aplicación.

  •  Sistemas Abiertos.  Los  sistemas abiertos  son aquellos que  puede ampliarse e implementarse de varias formas. La apertura  está determinado principalmente por el grado en que los nuevos servicios de intercambio de recursos puede agregarse y estar disponible para su uso por una variedad de programas de cliente. Se caracterizan por el hecho de que sus interfaces son públicas; en otras palabras, las aplicaciones proveen un mecanismo de comunicación uniforme e interfaces  publicadas para el acceso a recursos compartidos
  • Simplicidad Es importante que un diseño sea lo más simple posible y al mismo tiempo pueda satisfacer las necesidades del servicio ya que los sistemas crecen y se vuelven más complejos con el tiempo. Esto facilita su mantenimiento.
  • Acoplamiento.  El grado de  acoplamiento  entre un conjunto de módulos, ya sea hardware o software, se mide en términos de la interdependencia y vinculación y/o homogeneidad entre los módulos. 
    • Cuando el grado de acoplamiento es alto, se dice que los módulos están acoplados de manera ajustada o fuerte; por el contrario cuando el grado de acoplamiento es bajo, los módulos están acoplados de manera floja o débil.

    • Un sistema  débilmente acoplado  facilita la sustitución o adicción de componentes  mientras  está en funcionamiento. Por el contrario, en  los sistemas   fuertemente acoplado  es necesario que se compartan recursos comunes, como la memoria central, almacenamiento secundario (disco) y entrada/salida a través de un bus común. 

El concepto de acoplamiento fue presentado por Edward Yourdon en  Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design, Yourdon, 1979.

En Geeksforgeeks pueden ampliar las diferencias entre acoplamiento débil y fuerte

  • EscalableUn sistema se describe como escalable  si permanece efectivo cuando hay un aumento significativo en el número de recursos y el número de usuarios. El diseño de sistemas distribuidos escalable presenta los siguientes retos: 
    • Controlar el costo de los recursos físicos.  Es posible ampliar un sistemas, a un costo razonable, a medida que crece la demanda de un recurso. 
    • Controlar la pérdida de rendimiento. La gestión de un conjunto de datos cuyo tamaño debe ser proporcional al número de usuarios o recursos en el sistema, para evitar el congestionamiento en el acceso a los recursos y afectación del rendimiento. 
    • Evitar cuellos de botella.  En general, los algoritmos deben estar descentralizados para evitar cuellos de botella.  
      • Un ejemplo de un problema  con cuello de botella es el  predecesor del sistema de dominio de nombres  DNS , en el que la tabla de nombres se mantenía en un archivo maestro único que se podía descargar a cualquier computador. Esto estuvo bien cuando solo había unos pocos cientos de computadoras en internet. Luego  se eliminó este cuello de botella al dividir la tabla de nombres entre servidores ubicado en Internet y administrado localmente.  
  • HeterogeneidadLos sistemas distribuidos son heterogéneos, ya que se pueden construirse a partir de una variedad de redes, sistemas operativos, hardware informático y lenguajes de programación. Contemplar, por ejemplo, codigo movil o maquina virtual. El middleware se usa para ocultar estar diferencias y permitir la comunicación y administración de datos entre aplicaciones distribuidas. 

Bibliografia:

  1. George Coulouris et al. Distributed Systems: Concepts and Design. 5th. USA: Addison-Wesley Publishing Company, 2011. ISBN: 0132143011
  2. Paulo Veríssimo and Luís Rodrigues. Distributed Systems for System Architects. Advances in Distributed Computing and Middleware Ser. 1. Springer, 2012. ISBN: 9781461356660. 
  3. 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. ISBN: 032194318X 
  4. M van Steen and A.S. Tanenbaum. Distributed Systems. Edited by Pearson Prentice Hall. Third. distributed-systems.net, 2017



No hay comentarios.:

Publicar un comentario