Sistemas Distribuidos (Ensayo)

Sistemas Distribuidos

Islas O. Obed

Introducción

En los últimos años, la tecnología informática ha ido evolucionando gradualmente desde las aplicaciones cliente/servidor de los noventa hasta las soluciones informáticas de tipo WAN heterogéneo del siglo actual. Por ello los conceptos que se manejan como integración, nombramiento, middleware, son importantes en los programas que se desarrollan en estos días y deben tomarse en cuenta los conceptos de comunicaciones para comprender la forma como se implementa una aplicación informática de tipo distribuida, también conocida como procesamiento cooperativo.

Desarrollo

Los sistemas distribuidos se pueden definir de varias maneras, una de; ellas es la siguiente: "Sistemas cuyos componentes hardware y software, que están en computadoras conectadas en red, se comunican y coordinan sus acciones mediante el paso de  mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo preestablecido".
También se puede decir que un sistema distribuido es aquel en el cual varios procesadores autónomos y repositorios de datos que soportan procesos y/o bases de datos, interactúan con el fin de cooperar para lograr un objetivo global. Los procesos coordinan sus actividades e intercambian información por medio de la transferencia de información a través de una red de comunicación
Los sistemas Distribuidos presentan las siguientes características:
  1. Concurrencia: permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red. La gran ventaja que ofrecen es que se pueden paralelizar trabajos entre los distintos elementos, aunque en los casos en los que tienen que acceder a un recurso compartido, ej. la escritura en un mismo fichero físico, y para evitar bloqueos y estados incongruentes del sistema se tienen que utilizar algoritmos de ‘exclusión mutua’ para evitar que no accedan en el mismo momento.
  2. Carencia de reloj global: Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, está más bien distribuida en los componentes. En los sistemas centralizados existen un reloj común que sirve para sincronizar y coordinar cualquier proceso o comunicación de mensajes. En los sistemas distribuidos, al ser la suma de varios sistemas totalmente independientes, cada uno con sus relojes de sincronización independientes, a la hora de la coordinación y paso de mensajes no existe un reloj común, con lo que se tienen que buscar formas alternativas de sincronización. 
  3. Fallos independientes de los componentes: Cada componente del sistema pudiera fallar de manera independientemente, y los demás continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando. Eso sí, cuándo se produce un fallo en uno de los nodos del sistema, el fallo se tiene que ‘gestionar’ de forma adecuada, ya que aunque el resto del sistema continúe funcionando, el nodo ‘problemático’ puede dar lugar a resultados erróneos. Así que cuándo se produce un fallo en un nodo, generalmente se tiene que aislar del resto sistema mientras se recupera del mismo.
Otra característica bastante importante en los sistemas distribuidos es la heterogeneidad, ya que tanto las arquitecturas, tanto los Sistemas Operativos no tienen por qué ser iguales. Esta flexibilidad es importante a la hora de ahorrar en costes, ya que aunque se tenga un nodo de un determinado fabricante, éste no tiene por qué determinar la arquitectura del resto del sistema.

Modelos de Sistemas Distribuidos
Procesamiento central (Host): Refiere a uno de los primeros modelos de computadoras interconectadas, llamados centralizados, donde todo el procesamiento de la organización se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillas computadoras personales. Pero este modelo presenta algunos problemas. Cuando la carga de procesamiento aumentaba se tenía que cambiar el hardware del Mainframe, lo cual es más costoso que añadir más computadores personales clientes o servidores que aumenten las capacidades.
El otro problema que surgió son las modernas interfases gráficas de usuario, las cuales podían conllevar a un gran aumento de tráfico en los medios de comunicación y por consiguiente podían colapsar a los sistemas.
Grupo de Servidores: Son un grupo de computadoras actuando como servidores, normalmente de archivos o de impresión, poco inteligentes para un número de minicomputadores que hacen el procesamiento conectados a una red de área local. 
Modelo cliente Servidor: Este modelo, que predomina en la actualidad, permite descentralizar el procesamiento y recursos, sobre todo, de cada uno de los servicios y de la visualización de la Interfaz Gráfica de Usuario. Esto hace que ciertos servidores estén dedicados sólo a una aplicación determinada y por lo tanto ejecutarla en forma eficiente. El IBM define este modelo como la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores.
Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
  • Cuando se requiera poco procesamiento de datos en la organización.
  • Cuando se tiene una base de datos centralizada en un solo servidor.
  • Cuando la base de datos es relativamente estática.
  • Cuando se requiere un mantenimiento mínimo.
Arquitectura Cliente-Servidor de Tres Capas.- El servidor divide el servicio en 3 o más capas. Generalmente una capa de presentación, otra de lógica de negocio, y la tercera y última de acceso a datos. La mayoría de las aplicaciones Web actuales se desarrollan en base a esta arquitectura.
Middleware Es un término que abarca a todo el software necesario para el soporte de interacciones entre Clientes y Servidores principalmente en aplicaciones distribuidas. Se puede considerar como el enlace que permite que un cliente obtenga un servicio de un servidor. Normalmente se define como una capa de software cuyo propósito es ocultar la heterogeneidad y proveer de un modelo de programación conveniente para los desarrolladores de aplicaciones. Se encuentra representado por procesos u objetos que actúan en un conjunto de computadoras y que se comunican con el fin de proporcionar soporte para compartición de recursos en un sistema distribuido.
Existe dos tipos de middleware:
-Software intermedio general. Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el TCP/IP, software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de autenticación, el software intermedio de mensajes de clientes a servidores y viceversa.
-Software intermedio de servicios. Software asociado a un servicio en particular, por ejemplo: software que permite a dos BD conectarse a una red cliente/servidor (ODBC: Conectividad abierta de BD), software de objetos distribu
idos, por ejemplo la tecnología CORBA permite que objetos distribuidos creados en distintos lenguajes coexistan en una misma red (intercambien mensajes), software intermedio para software de grupo, software intermedio asociado a productos de seguridad específicas (Conexiones Seguras: Sockets), etc.

Conclusión

El uso de los sistemas distribuidos es esencial en la actualidad, y una herramienta muy útil. Gracias a ellos hemos podido satisfacer cientos de necesidades en las que se necesita la conexión remota desde distintos lugares a cierta información común sin la necesidad de hacer procedimientos tardados.
La mayor prueba de esto es simplemente Internet, que es el mayor sistema distribuido que se ha desarrollado y que además se ha convertido parte de nuestras vidas.
Los sistemas distribuidos los utilizamos en nuestro día a día, no solamente dentro de la informática podemos observar la existencia de los Sistemas Distribuidos, pues las 3 características principales de estos las podemos encontrar en diversos sistemas, un ejemplo sería un torneo de fútbol en un deportivo, pues cuenta con una concurrencia, ya que se pueden jugar dos partidos al mismo tiempo; no cuenta con un reloj global; Por ultimo, puede tolerar errores, ya que si un equipo abandona el torneo, este no se suspende.
He llegado a la conclusión de que un sistema distribuido es aquel, que consta de varios clientes (computadoras), los cuales están interconectados entre sí, pueden acceder a cierta información en común pero sin presentar una sincronización y sin importar que existan fallas locales en algún cliente el sistema podrá seguir funcionando.
También pienso que el modelo actual (Arquitectura Cliente-Servidor de Tres Capas) es la mejor opción para ser desarrollado, y aunque es un tanto más difícil de desarrollar, tiene mejores resultados y menos fallas que sus predecesores.
Este modelo ha tenido detrás de sí una gran evolución, gracias a muchas personas se ha podido llegar a lo que es hoy, el cual está siendo usado por cientos de miles de personas alrededor del mundo, es indispensable para todo aquel que estudia algún área de la informática y las tecnologías de la comunicación o áreas relacionadas a estas.

Fuentes

  • Coulouris George (2008). Sistemas Distribuidos. Madrid, España: Pearson.
  • Ing. TURPO A. Einar (s.f)
    http://www.unap.edu.pe/cidiomas/licing/pdf/sd.pdf
  • Sistemas distribuidos, Panorama (s.f.)
    http://www.tamps.cinvestav.mx/~vjsosa/clases/sd/sistemas_distribuidos_panorama.pdf
  • Sistemas distribuidos (2011)
    https://oposicionestic.blogspot.mx/2011/06/sistemas-distribuidos.html

Comentarios

Entradas más populares de este blog

Mapa conceptual "Métricas de calidad"

Cifrado Hash