Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Sistema distribuido con balanceador de carga ayudaa

Estas en el tema de Sistema distribuido con balanceador de carga ayudaa en el foro de Java en Foros del Web. Disculpen la molestia, me podrían ayudar con lo siguiente: Implementar en Java, utilizando Sockets, un sistema cliente servidor, con un balanceador de carga que distribuya ...
  #1 (permalink)  
Antiguo 10/05/2015, 23:57
 
Fecha de Ingreso: mayo-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Exclamación Sistema distribuido con balanceador de carga ayudaa

Disculpen la molestia, me podrían ayudar con lo siguiente:

Implementar en Java, utilizando Sockets, un sistema cliente servidor, con un balanceador de carga que distribuya a los clientes equitativamente ente los servidores que se estén ejecutando.

Servidor:

- Al iniciar debe registrarse con el balanceador de carga para que le envíe clientes. Al terminar debe avisar al balanceador de carga para que deje de enviarle clientes

- Debe ser capaz de aceptar y trabajar con varios clientes a la vez concurrentemente

- Recibe un entero de cada cliente, que representa un número de segundos. Durante ese tiempo incrementará un contador: (while(…) {contador++;}) y al finalizar el tiempo devolverá el valor de dicho contador, finalizando la conexión con dicho cliente.

Cliente:

- Es capaz de conectarse al mismo tiempo con varios servidores concurrentemente.

- Al iniciar deberá recibir una lista de números: {2, 4, 5, …, 9}. Cada número en la lista
representa una conexión con un servidor.

- Para cada conexión se conecta con el balanceador de carga, quien le indicará la dirección (y puerto) del servidor que le va a ofrecer el servicio.

- Se conecta con dicho servidor y le envía el número que corresponde de la lista, que
representa una cantidad en segundos.

- Espera por la respuesta.

- la imprime en pantalla indicando: dirservidor:puerto: valorrecibido

- Guarda el valor de respuesta en una lista

- Termina la conexión con dicho servidor

- Al recibir todas las respuestas esperadas (una por conexión) presenta la sumatoria de
todas las cantidades guardadas en la lista

Balanceador de carga:

- Al iniciar recibe conexiones tanto de servidores como de clientes.

- Los servidores podrán conectarse para registrarse o des-registrarse.

- Al recibir un petición registro de servidor deberá guardar su dirección y puerto en una
lista y finalizar dicha conexión

- Al recibir una petición de quitar registro de servidor deberá eliminar la dirección y
puerto de dicho servidor de la lista

- Al recibir una conexión de un cliente deberá enviarle como respuesta la dirección y
puerto del servidor al cual deberá pedirle el servicio, y finaliza la conexión con dicho
cliente.

- El balanceador de carga deberá intentar que todos los servidores tengan una carga de
trabajo similar



Me lo mandaron como examen en la universidad y no tengo idea de como hacerlo solicito ayuda urgente por favor

uso IDE netbeans 8.0.1 con jdk 7

Última edición por dpaulv17; 11/05/2015 a las 00:05
  #2 (permalink)  
Antiguo 11/05/2015, 21:42
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
Respuesta: Sistema distribuido con balanceador de carga ayudaa

Es un sistema en 3 capas. El verdadero "servidor" es el balanceador de carga. Es un programa servidor de servidores. Almacena una lista de servidores, en la cual registra o desregistra según estén encendidos o apagados esos servidores.

Yo lo que haría es, al margen de que un servidor esté disponible o no, contabilizar el número de conexiones que tiene cada servidor. Y dependiendo de eso le dará a cada cliente una lista u otra.

Ejemplo:

Servidor 1 -- 3 conexiones
Servidor 2 -- 2 conexiones
Servidor 3 -- 2 conexiones
Servidor 4 -- 0 conexiónes (Un servidor que acaba de ponerse online)

Lista a distribuir:
Servidor 2, Servidor 3, Servidor 4. El cliente conecta a todos ellos, y por lo tanto, estos servidores informarán al balanceador de carga del número de conexiones:

Nuevo estado de conexiones:
Servidor 1 -- 3 conexiones
Servidor 2 -- 3 conexiones
Servidor 3 -- 3 conexiones
Servidor 4 -- 1 conexiones

Lista a distribuir:
Servidor 4.

Qué significa esto en programación?
El cliente solo recibe los servidores que menos conexiones tienen. Si todos tienen el mismo número, recibe una lista de todos. Si alguno tiene un número mayor que los demás, los demás son incluidos en una lista de servidores a distribuir, y el del máximo no. Cuando varios empatan con ese máximo son excluidos de la lista a distribuir.

Cada vez que un servidor informa al balanceador de carga, y la lista que almacena dicho balanceador de carga cambia... este hace una comparación entre todos sus servidores y configura la nueva lista de servidores a distribuir.

En este momento un cliente desconecta de Servidor 1. Servidor 1 informa al balanceador de carga y entonces:

Nuevo estado de conexiones:
Servidor 1 -- 2 conexiones
Servidor 2 -- 3 conexiones
Servidor 3 -- 3 conexiones
Servidor 4 -- 1 conexiones

Lista a distribuir:
Servidor 1, Servidor 4.

Ahora da la casualidad de que todos llegan a tener las mismas conexiones:

Servidor 1 -- 3 conexiones
Servidor 2 -- 3 conexiones
Servidor 3 -- 3 conexiones
Servidor 4 -- 3 conexiones

Lista a distribuir:
Servidor 1, Servidor 2, Servidor 3, Servidor 4.

Es simplemente una lista y una comparación. Se distribuyen siempre los servidores que no llegan al que tenga el mayor número de conexiones, pero en el caso de empatar todos... se distribuyen todos.

Este es un ejercicio complejo, pero a la vez muy interesante. A mí particularmente me parece un reto muy interesante. Creo que me has dado una muy buena idea para el proyecto que deberé presentar al final del curso que estoy haciendo. Ahora solo me falta pensar en qué tipo de necesidad necesitaría algo así. El "para qué podría servir una aplicación así". Además de que me será obligatorio que sea un SIE.

Última edición por Kritik; 11/05/2015 a las 22:13
  #3 (permalink)  
Antiguo 12/05/2015, 00:42
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Sistema distribuido con balanceador de carga ayudaa

Cita:
Iniciado por dpaulv17 Ver Mensaje
Me lo mandaron como examen en la universidad y no tengo idea de como hacerlo solicito ayuda urgente por favor
Si te lo mandaron a ti como examen y no estás cualificado como para poder hacerlo, quizás significa que mejor que repitas la asignatura, no?

O pretendías que aquí te hicieran el examen por ti? Porque en clase te tienen que haber dado teoría suficiente para saber como afrontar el problema.
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 12/05/2015, 07:01
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Sistema distribuido con balanceador de carga ayudaa

Hola Kritik,
me ha gustado tu forma de plantearlo ;)
  #5 (permalink)  
Antiguo 14/05/2015, 03:04
 
Fecha de Ingreso: mayo-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Respuesta: Sistema distribuido con balanceador de carga ayudaa

Cita:
Iniciado por Malenko Ver Mensaje
Si te lo mandaron a ti como examen y no estás cualificado como para poder hacerlo, quizás significa que mejor que repitas la asignatura, no?

O pretendías que aquí te hicieran el examen por ti? Porque en clase te tienen que haber dado teoría suficiente para saber como afrontar el problema.
No esperaba que me lo dieran haciendo, esperaba que alguien me de una guía de como debía hacerlo tal cual lo hizo la persona que respondió primero... Ya que el examen consistía en averiguar de que trata el "Balanceador" e implementarlo a eso me refería con que "no tengo idea de como hacerlo"

Etiquetas: sistema, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.