Mostrando entradas con la etiqueta sistema distribuido. Mostrar todas las entradas
Mostrando entradas con la etiqueta sistema distribuido. Mostrar todas las entradas

4 may 2011

Implementación de sistemas distribuidos

Taller de Programación Orientada a Objetos 
Semana 12 

Implementación de por lo menos un prototipo pequeño para lograr la operación distribuida por lo menos parcial del sistema bajo desarrollo.

Para esta semana donde tratamos sistemas distribuidos decidí hacer un programa que aplicará a mi proyecto tal y como lo mencione en la entrada anterior. Este trata de el envío de un archivo desde el servidor hasta el cliente cuando este hace solicitud de el.

En mi programa solo tengo tres clases, que son las siguientes:

Servidor: El servidor se encarga de abrir el socket necesario para la comunicación con el cliente, que en este caso se espera a que solicite un archivo que se encuentra almacenado. Para este ejemplo coloque el nombre de un archivo que yo cree con el nombre de Enviado.txt.

Cliente: Este entra en comunicación con el servidor mediante el socket abierto y la dirección IP del servidor, para este ejemplo deje que solo funcionara en localhost, ya que solo lo probé desde un terminal a otro de una misma computadora.

TomaArchivo: Este archivo tiene en un string la ruta del archivo que se enviará, y otras variables necesarias para el envío de los datos en paquetes separados. Aquí es donde se implementa la serialización.

Para lograr la funcionalidad trabaje con el código visto en el taller y junto con la explicación que encontré en el siguiente blog.

Les muestro la parte del código que corresponde a la parte del socket y lo necesario para la transferencia de datos.



En seguida esta una captura de los archivos antes de ser compilados y ejecutados.


El archivo Enviado.txt contiene lo siguiente.


Una vez compilados los archivos, así se ve la ejecución simultanea del cliente y el servidor.




Ya por último la muestra de como quedaron los archivos, y ver como los datos recibidos desde el servidor se guardan en un archivo creado con el nombre de Recibido.txt.


Aunque podría ser muy útil, hasta el momento no lo pienso integrar realmente a mi proyecto, ya que me falta entrarle más con el aspecto de la toma de datos y la forma de graficar.

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