Bienvenidos al nuestro Blog de la materia :D

Equipo 6

• Jonathan Daniel Contreras Vargas ----> Matricula: 1443137

• Juan Martin Rios Gonzalez ----> Matricula: 1491904

• Angelica Zuleima Ramirez ----> Rivera Matricula: 1493139

• Alejandro Flores Vazquez ----> Matricula: 1446219

domingo, 26 de mayo de 2013

Proyecto Final


Proyecto Final


Introducción:

En la actualidad la rapidez forma parte de un factor muy importante, ya que en muchas ocasiones al momento de escoger un servicio o producto nos enfocamos en gran medida a la rapidez de este, así como cuando buscamos una respuesta, lo queremos rápido y confiable. Ahora al imaginar la gran cantidad de datos con las que tienen que trabajar diariamente las empresas internacionales, ahora con saber que el jefe quisiera saber cuantos de sus productos se están vendiendo en este mismo momento y de manera actualizada, solo con pensar en las miles de sucursales que tienen en todo el mundo. Que dolor de cabeza imaginar el contador de la matriz recibiendo datos de todo el mundo y contándolos uno por uno. Pues esto cambia totalmente con los sistemas distribuidos ya que funciona como una gran malla donde donde todas las computadoras trabajan al mismo tiempo para dar el resultado deseado, ya no tiene que sumar todo una sola ni de dato por dato, si no que todas las computadoras de las sucursales y de la matriz trabajan juntas para dar el resultado final de manera rapida


Planeación de la implementación:

Ya hablando de matrices y sucursales comerciales, nos vino la idea de que ademas de manejar datos de muchas sucursales seria una buena aplicación que estos datos recibidos sean de gran cantidad, de aquí nuestra idea de realizar "inventarios" de sucursales. El servidor sera instalado en la computadora que simula ser la matriz, y los demás clientes serán instalados en las sucursales. Los clientes(sucursales) realizaran su inventario simultáneamente y sera recidivo por el servidor(matriz) que este solo se encargara de sumar el total de cada cliente.


Proceso

El servidor les pedirá realizar inventarios simultáneamente a cada cliente, las cantidades con las que trabajaran estarán situadas en un txt, el cliente tiene la responsabilidad de tomar, leer e interpretar los archivos para saber la ganancia neta un año de tal sucursal, después de saber la ganancia, esta sera enviada al servidor, el cual estará a tentó de recibir todas y cada unas de las ganancias de todos sus clientes, estos al final serán sumados y mostrados para conocer la ganancia global



Aplicación

Como se vino contando anteriormente, este sistema distribuido sera aplicado en simulación de una empereza internacional, con sucursales alrededor de todo el mundo, que desean saber las ganancias globales, así que cada sucursal realizara sus operaciones correspondientes simultáneamente cuando la matriz lo desee, y serán enviadas a esta, para que después de realizar las sumas de casa sucursal tener al fin el resultado global.


Evidencia del programa:


1. El proyecto se ve de la siguiente manera, ya que es una aplicación de consola, aquí se observa la consola en los entornos de desarrollo Netbeans y Eclipse.

Figura 1.



2. El proyecto se ve de la siguiente manera, ya que es una aplicación de consola, aquí se observa la consola en los entornos de desarrollo Netbeans y Eclipse.

Figura 1.1



3. Ahora se inicia el servidor (Entorno Eclipse), para esperar a los clientes que quieran conectarse, después de esto se pide el IP correspondiente. El número de clientes puede llegar a ser de “N” cantidad.


Figura 1.2



4. Una vez que llega el cliente, el servidor le envía el archivo que solicitó el cual se va leyendo de número por número desde el archivo .txt, y tales cifras aparecen en la consola.

Figura 1.3



5. Posteriormente, se obtiene la suma total del archivo, Después, si llega otro cliente, se hace la misma operación, y como se observa en la figura 1.4 el servidor recibe la suma total del cliente.

Figura 1.4

Conclucion

Como hemos visto desde la introducción con el ejemplo del contador de la matriz de la empresa contando los datos uno por uno hasta el sistema distribuido donde pone a cada computadora de las sucursales a realizar las operaciones correspondientes para obtener las ganancias y ventas totales de su sucursal de manera simultanea, para que después solo la computadora de la matriz tenga que sumar las cantidades finales, de un ejemplo a otro tiene en comun el resultado, pero una gran diferencia en el tiempo de realización, donde en una se podrían tardar grandes jornadas de trabajo, hasta otra donde se obtienen los resultados de manera instantánea. Con este trabajo obtuvimos granes conocimientos sobre un sistema distribuido, y de la mejor manera que con un ejemplo práctico y llevando en práctica la realización de este, notamos la potencia y la rapidez casi instantánea de sistema distribuido y los grandes beneficios que otorga.

Actividad 10. Final

Resultado Final, Evidencia y Conclusión.


Resultado final

Se obtuvo lo que se esperaba del proyecto, ya que funcionó correctamente, leyendo los archivos y haciendo de forma correcta el inventario, los datos del servidor eran solicitados y enviados al cliente el cual por medio de un proceso los sumaba para conocer el inventario. El archivo, en formato txt, estaba compuesto por cientos de números, lo cual hacia la operación un poco más larga que cualquier otra, pero al final lo lograba.


Evidencia:

 Aquí se muestra un screenshot de cuando e conecta el cliente con el servidor. Posteriormente recibe datos y los envía, y muestra la suma tanto al cliente como al servidor, además de permitir conexiones múltiples:




Conclusión:

El resultado al que se quería llegar, se logró. Todo el equipo, coincidimos en que es un proyecto que nos dejó conocimiento muy útil para posibles trabajos futuros, no solo académicamente hablando sino también al momento de estar trabajando en una empresa, ya que lo sistemas distribuidos forman, hoy en día un papel muy importante en la sociedad y son de gran ayuda en la tecnologías de información de empresas, o lugares donde se manejan un alto número de datos, en las que un sistema paralelo, o un sistema secuencial, no pueden lograr.

Aviso







La entrada correspondiente a esta actividad es la misma que corresponde a la #9, haga clic en este ENLACE para ir a la entrada

Actividad 8. Fases, Planeación e Implementación

Fases, Planeación e implementación:


Las fases de nuestro proyecto fueron:

·         Elección del lenguaje de programación. El lenguaje forma parte importante del desarrollo del problema ya que debe soportar lo que queríamos hacer.
·         Elección de la funcionalidad. Se tenía en mente el trabajo a realizar, sin embargo, no había un
acuerdo en que e realizaría con los archivos.
·         Investigación para complementar con los conocimientos que tenemos. Previamente habíamos visto algo a cerca de los sockets cada quien por su propia cuenta, sin embargo nos fue necesario saber un poco más de lo que ya conocíamos.
·         Codificar. Se realizó la implementación del código en el lenguaje JAVA, por medio de Eclipse y NetBeans.
·         Realizar pruebas. Para revisar que todo estuviese en orden, y presupuestó que funcionara a la perfección


La planeación:

-          La primera planificación que hicimos fue la de estudiar, repasa cada quien a cerca de sockets y buscar una alternativa correcta para implementarlos orientado a nuestro proyecto.
-          Posteriormente, empezamos a revisar lo que sería necesario.
-          Después de saber que teníamos que haces el trabajo se dividió entre los miembros del equipo.
-          Después cada quien realizó la parte del proyecto que se le había asignado, para después de unos días revisarla en equipo, y revisar que todo estuviese en orden.
-          Ahora, el programa fue probado, y sometido a varias pruebas.
-          Después de revisar el programa, nos dimos cuenta que después de un tiempo no había errores así que funcionaba a perfección.


Implementación:

Al terminar todos estos pasos, se tuvo un programa que era capaz de realizar e inventario de una empresa sin necesidad de papeleo, ya que automáticamente tomaba el archivo y  lo procesaba, lo recibía del servidor y una vez que el cliente terminaba, lo enviaba a la respuesta.

sábado, 25 de mayo de 2013

Actividad 7: Presentación del caso de aplicación y detalles.


Presentación del caso, aplicación y detalles


Objetivo del proyecto:

Implementar un programa que sea capaz de realizar inventarios por medio de un sistema distribuido.


Descripción:
Se realizará un programa que sea capaz de realizar un inventario paa N cantidad de clientes con N cantidad de archivos; tales archivos tendrán una extensión .txt. Cada cliente llamará al servidor para realizar la petición del archivo, éste será mandado, y posteriormente recibido con la suma de la sub-empresa en un lapso determinado de tiempo.


Herramientas a utilizar:

·         Entorno de desarrollo para Java (Eclipse o Netbeans).
·         Tres o más computadoras conectadas en red, y una más que será el servidor.


Métodos a utilizar:

Para realizar la conexión entre cliente – servidor se utilizarán sockets, teniendo en cuenta que:




“Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red. Un socket se define como el punto final en una conexión. Los sockets se crean y se utilizan con un sistema de peticiones o de llamadas de función a veces llamados interfaz de programación de aplicación de sockets (API, application programming interface).
Un socket es también una dirección de Internet, combinando una dirección IP (la dirección numérica única de cuatro partes que identifica a un ordenador particular en Internet) y un número de puerto (el número que identifica una aplicación de Internet particular, como FTP, Gopher, o WWW)”

La conexión se utilizará por medio de la IP, con computadoras conectadas en una misma red de usuarios, para de esta manera hacer más fácil el envío y recepción de los archivos.


 Conclusión:

Es un proyecto muy completo, ya que además de hacer la conexión debida del cliente con el servidor se abren y hacen inventarios de archivos txt, y nos ayuda a aprender un poco más a cerca del comportamiento de los sockets.



sábado, 20 de abril de 2013

Practica #6 - Implementacion del algoritmo distribuido

Practica #6.

Codificación del algoritmo distribuido, el cual consta de cliente-servidor programado en el lenguaje C#. Donde el servidor actúa como receptor de datos, de cada cliente, los cuales hacen una lectura de un archivo .txt con mas de 3000 precios de un almacén  los cuales son sumados y a su vez enviados al servidor en forma de bytes para que este haga una recopilación de los precios que tiene cada cliente, sumando cada una de las cantidades recibidas dependiendo cuantas conexiones existan. Al termino de cada suma de los archivos recibidos el servidor escribe en otro .txt el valor total obtenido y a la espera de alguna nueva conexión.


Pantalla del Servidor.



Pantallas de los clientes conectados.



El archivo de texto generado por el servidor:

Link de los ejecutables y archivos de texto.
Nota: colocar los archivos de texto en la raíz del disco local.

lunes, 8 de abril de 2013

Actividad 5. Algoritmo distribuido

Algoritmo de un sistema distribuido:


El algoritmo es de una aplicación, que envía mensajes del cliente al servidor por medio de una conexión que se hace por el IP, este sistema interactuará con más de una computadora, una de ellas será el servidor, quien recibirá el mensaje, y las demás el cliente quienes envían el mensaje.

Aplicación: Este algoritmo se puede utilizar por ejemplo, en una empresa donde se requiera enviar un mensaje sin necesidad de usar correo electrónico y por seguridad, se requiere del IP para poder contactar al servidor.

A continuación se presenta el algoritmo del programa:

1.     Inicio
2.     Para el servidor, se declaran las librerías
3.     Se crea un socket
4.     Se crea un método para recibir el host
5.     Se almacena el numero
6.     Se crea un método para recibir el puerto
7.     Se almacena el número de puerto
8.     Se declara cuantas conexiones debe escuchar
9.     Se realiza un ciclo while true
10.Se establece el tamaño del mensaje
11.Para el cliente, se declaran librerías
12.Se crea el socket
13.Se recibe el host
14.Se almacena el numero
15.Se recibe el puerto
16.Se almacena el número del puerto
17.Se conecta al servidor
18.Se manda un mensaje que se conectó al host del servidor
19.Se crea un while true
20.Se condiciona, si el host no recibe señal del puerto al que se quiere conectar
21.Si es así, se manda un mensaje “No se puede conectar”
22.De lo contrario, se pide el mensaje a enviar
23.Se envía el mensaje
24.El servidor recibe el mensaje
25.Se cierra el socket del cliente
26.Se cierra el socket del servidor
27.Se imprime que se ha cerrado la conexión
28.Fin