Sistemas distribuidos
Introducción
Hoy en día los seres humanos dependemos de Sistemas distribuidos, debido a que lo utilizamos en nuestra vida cotidiana, ya sea haciendo una transacción en el banco, enviando correos electrónicos, reservar un vuelo, etc. Sin embargo, para entender cómo funciona y cuál es el motivo de que un sistema distribuido exista, debemos de repasar conceptos y principios fundamentales sobre éste, ya que los sistemas distribuidos son de gran complejidad y abarcan una gran cantidad de problemas de distintos tipos.
Desarrollo
¿Qué es un sistema distribuido?
Se le dice sistema distribuido a aquel en el que los componentes localizados en computadoras, las cuales están conectadas en una red, comunican y coordinan sus acciones mediante el paso de mensajes. Los sistemas distribuidos se caracterizan por:
-Inexistencia de reloj global:
Es cuando los programas que necesiten cooperar coordinan sus acciones gracias al intercambio de mensajes. Sin embargo resulta que hay límites de precisión con las que las computadoras conectadas en una red puedan sincronizar sus relojes, en donde no hay una noción global del tiempo. Debido a esto, la única forma de comunicación se realiza enviando mensajes a través de una red.
-Concurrencia:
La ejecución de programas concurrentes es habitual en los sistemas distribuidos. Es decir, se pueden compartir distintos recursos, sin importar que trabajo se esté ejecutando en cada computadora.
-Fallos Independientes:
Los sistemas distribuidos son vulnerables a fallar. Los fallos en la red causan aislamiento de las computadoras que están conectadas a él, sin embargo, no significa que detengan su ejecución. Cada componente que pertenece a el sistema distribuido puede fallar independientemente, con la ventaja de que no puede dañar a otros componentes del sistema, por lo que los demás pueden continuar ejecutandose normalmente.
Por lo tanto, un sistema distribuido:
1. Está compuesto por diversos recursos informáticos que pueden asignarse de forma dinámica a tareas en especifico.
2. Los recursos son distribuidos físicamente y funcionan armónicamente con una red de comunicaciones.
3. Existe un sistema operativo de alto nivel, el cual unifica y se encarga de llevar el control de los componentes.
4. La funcionalidad de los recursos físicos y lógicos están ligados por una autonomía coordinada.
¿Para qué sirven los sistemas distribuidos?
Una de las principales razones para utilizar sistemas distribuidos es con el objetivo de compartir recursos, es decir, compartir un rango de cosas de forma útil en un sistema de computadoras, las cuales están conectadas a una red. Las impresoras, los archivos, páginas web, bases de datos, entre otras, se administran mediante servidores apropiados, de tal forma que los clientes pueden acceder fácilmente. Por ejemplo, los clientes de servidores web utilizan navegadores web para poder acceder a ellos.
Requisitos indispensables de sistemas distribuidos.
La construcción de sistemas distribuidos representa distintos desafíos, los cuales son:.
-Heterogeneidad:
Debe de estar construida desde una variedad de distintos sistemas operativos, lenguajes de programación, redes y el hardware de la computadora.
-Escalabilidad:
Un sistema distribuido es escalable si el coste de añadir un usuario es constante. Los algoritmos que se emplean deben de evitar cuellos de botella y los datos deberán de estar acomodados jerárquicamente para que el sistema sea lo más eficiente posible.
-Seguridad
Debido a los ataques de denegación de servicio,
es importante que un sistema distribuido cuente con encriptación para ofrecer una protección adecuada a los recursos que se están compartiendo y mantener secreta información sensible al momento de transmitir un mensaje por medio de la red.
-Extensibilidad:
Los sistemas distribuidos deben de ser extendibles, es decir, integrar componentes escritos por diferentes programadores.
-Transparencia:
Uno de los objetivos es que ciertos aspectos de distribución sean invisibles al programador de aplicaciones, de tal forma que solo se encargue del diseño de su aplicación en particular.
Ejemplos de sistemas distribuidos
-Una fiesta:
En una fiesta están los invitados, en donde el organizador establece una hora en específico para que comience el evento, sin embargo, los invitados pueden llegar más temprano o más tarde (Inexistencia de reloj global) también puede suceder que algunos invitados no puedan llegar ya sea por el tráfico, accidentes, problema de fuerzas mayores, etc. (Fallos independientes). Para verificar que eres un invitado, existe un guardaespaldas, el cual, se encarga de no dejar pasar a un intruso y para que el sitio este seguro (Seguridad) En la fiesta hay distintos tipos de actividades en donde todos pueden convivir armónicamente (Concurrencia).-Tirar basura de casa:
Cuando el camión de la basura está cerca suena una campana para avisar a la comunidad de que está cerca el camión que recoge la basura (Inexistencia de reloj global). Cada habitante tiene la responsabilidad de tirar su basura o no, lo cual no entorpece al sistema de basura (fallos independientes). Pueden haber más de un camión en distintos sitios y en la misma hora ofreciendo el servicio (Concurrencia) lo cual hace que se agilice el trabajo (Extensibilidad).-Kermés:
En un kermés hay un director el cual está a cargo de organizar el convivio. Establece una fecha para que se lleve a cabo el evento y se comunica con los participantes para decir que le toca hacer a cada quien (Inexistencia de reloj global). Cualquier participante puede llegar temprano o tarde o se puede ausentar (Tratamiento de fallos y fallos independientes). Se le pedirá una identificación a los participantes para que puedan entrar en intercambiarán su dinero por vales para que puedan comprar cualquier producto del kermés (Seguridad).
Conclusión
En conclusión, un sistema distribuido es aquel que se encarga de organizar y coordinar acciones que debe de seguir un conjunto de computadoras o componentes mediante el uso de mensajes, utilizando una red. Gracias a esto los sistemas distribuidos pueden funcionar sin la necesidad de que estén en un cuarto específico o localmente, debido a que se comunican a través de mensajes en la red. Este tipo de sistema es muy flexible, ya que, como trabajan de forma independiente, si una computadora o componente llega a sufrir un daño o se cae, el sistema sigue funcionando normalmente, sin afectar su rendimiento. Esto se debe a que, aunque los componentes o computadoras que componen el sistema sean independientes, trabajan de manera conjunta. Los sistemas distribuidos han llegado a ser muy eficientes y una prueba de ello son los servicios que ofrece Google, ya que estos funcionan con diversas computadoras que están alrededor del mundo, y si unas de estas caen, no se ven afectados los servicios que esta empresa ofrece. Gracias a los sistemas automatizados podemos gozar de diversos servicios y comunicarnos de una forma rápida y eficiente, sin embargo, esto no quiere decir que sea perfecto. Los sistemas distribuidos deben de mejorar en diversos aspectos para que funcionen de una manera óptima. En este caso, debe de ser heterogénea, es decir, debe de estar constituida en una gran variedad de redes, hardware, sistemas operativos y trabajar en una amplia gama de lenguajes de programación. Los sistemas distribuidos deben de mostrar extensibilidad, dicho de otra manera, es la integración de componentes inscritos por diferentes programadores y también hacer una publicación de las interfaces de sus componentes. También un sistema distribuido debe de ser concurrente porque la presencia de muchos usuarios significa una fuente de peticiones concurrentes a sus recursos. Cada recurso debe de estar listo y diseñado para ser seguro en un entorno concurrente. Un sistema distribuido debe de ofrecer seguridad, los mensajes que se envían deben de ser encriptados, y la información sensible debe mantenerse secreta. Además, este tipo de sistema debe de caracterizarse por la escalabilidad, en otras palabras, los algoritmos que se emplean para obtener datos de los usuarios no deben de generar “cuellos de botella” y la información deberá ser organizada jerárquicamente, esto es con el objetivo de mejorar los tiempos de carga. Y, por último, se requiere de tratar los fallos que existen en el sistema, es decir, se debe de estar al tanto de cualquier proceso, computadora o red que llegara a fallar, para que se pueda diseñar una solución y así tratar apropiadamente los fallos que se llegasen a presentar.
Referencias bibliográficas:
1. Coulouris, G., Dollimore, J. & Kindberg T. (2001). SISTEMAS DISTRIBUIDOS Conceptos y diseño. Madrid: PEARSON EDUCACIÓN.
2. Ramírez P. (Marzo 3, 2017). Desarrollo de Sistemas Distribuidos. Agosto 13, 2017, de SG Buzz Sitio web: https://sg.com.mx/revista/48/desarrollo-sistemas-distribuidos#.WZECRncjHSB
2. Ramírez P. (Marzo 3, 2017). Desarrollo de Sistemas Distribuidos. Agosto 13, 2017, de SG Buzz Sitio web: https://sg.com.mx/revista/48/desarrollo-sistemas-distribuidos#.WZECRncjHSB
Comentarios
Publicar un comentario