4 may. 2011

Sistemas distribuidos

Programación Orientada a Objetos 
Semana 12 

Texto con diagramas que explica la operación del software de manera distribuida.

¿Qué es un sistema distribuido?

Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema. El usuario accede a los recursos remotos de la misma manera en que accede a recursos locales, o un grupo de computadores que usan un software para conseguir un objetivo en común.


Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone otro componente debe de ser capaz de reemplazarlo, esto se denomina tolerancia a fallos.

El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts en una red de área local o millones de hosts como en Internet.

Características

Concurrencia: Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios o agentes que interactúan en la red.

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, esta más bien distribuida a los componentes.

Fallos independientes de los componentes: Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.

¿Cómo debe estar creado?

  • Para cada uno de los usuarios debe de ser similar al trabajo en el sistema centralizado.
    Seguridad interna en el sistema distribuido.
  • Se ejecuta en múltiples computadoras.
  • Entorno de trabajo cómodo.
  • Dependiente de redes (LAN/WAN).
  • Compatibilidad entre los dispositivos conectados.
  • Transparencia, el uso de múltiples procesadores y el acceso remoto debe de ser invisible.
  • Interacción entre los equipos.
  • Diseño de software compatible con varios usuarios y sistemas operativos.

Herramientas para crear un sistema distribuido

RMI (Remote Method Invocation) es parte de la librería de clases de Java que permite la creación de sistemas distribuidos en Java.

RMI fue el primer framework para crear sistemas distribuidos que apareció para Java. Además, viene integrado en cualquier máquina virtual Java posterior a la 1.0 y está pensado para hacer fácil la creación de sistemas distribuidos a partir de una aplicación cuyas clases ya estén implementadas.

Características particulares de RMI.
Al contrario que otras tecnologías de sistemas distribuidos, RMI no busca la colaboración de objetos de distintas plataformas, programados en diferentes lenguajes, Java se encarga de solucionar los problemas de heterogeneidad. Así, su API es más sencillo y natural al no contemplar que tipos de datos existan o no en los lenguajes en los que se implementan cliente y servidor.

¿Cómo podría aplicarlo a mi proyecto?

Retomando que mi proyecto es de un programa que cree gráficas a partir de archivos de datos, que en primera idea solo tenia pensado en que los archivos fueran locales en la computadora, con un sistema distribuido podría aprovechar el uso de cliente-servidor.

En esto el cliente que es el usuario del programa solicite un cierto archivo de datos concentrado en un servidor, y que este pueda ser recibido desde ese servidor, para ser guardado en la computadora del usuario.


El ideal es que si el usuario modifica algo en la tabla de datos, este archivo sea regresado modificado al servidor, para que cuando otro usuario necesite el mismo archivo para crear cierta gráfica, este tenga la versión mas reciente.

Sistemas distribuidos también podría aplicar creando en el servidor las clases para la creación de la gráfica y que el cliente solo haga solicitud de ella y por medio de RMI se haga la transferencia del objeto.

Enlaces:
Definición de sistema distribuido
Desarrollo de sistemas distribuidos
Más de sistemas distribuidos

1 comentario: