Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/05/2015, 21:42
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 10 meses
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