2012-05-29 7 views
9

Estoy buscando una biblioteca de código abierto que permita el equilibrio de la carga programática en un conjunto de llamadas a nodos de forma arbitraria, por lo que no hay suposiciones sobre HTTP o cualquier otra cosa, solo un método de invocación de un objeto. Lo ideal sería proporcionar la siguiente funcionalidad:¿Existe una buena biblioteca de equilibrio de carga abstracta de código abierto para Java?

  • equilibra la carga por igual
  • reintento en un nodo distinto si una llamada a un nodo emite una excepción
  • Mover un nodo a un estado "roto" si una llamada falla y no lo llama más
  • Tiene un mecanismo para hacer ping de fondo a todos los nodos (rotos y activos) que restaurará los que están rotos al estado activo cuando regresen y moverá los activos activos a estado interrumpido si fallar

Siento que esto debería existir, pero aún no lo he encontrado.

+0

Esto se hace generalmente en el hardware utilizando F5 o As. – duffymo

+0

No creo que sea práctico en este caso: estamos utilizando una API existente que hace una conexión directa de socket TCP/IP a un nodo remoto y no hay F5 o ace. Hay varios nodos, y necesitamos gestionar la conmutación por error, etc. Parecía que la solución más simple sería un equilibrador de carga de software. –

Respuesta

4

Considere el uso de la biblioteca Apache Camel. Hay un load balancer flexible y la biblioteca tiene una gran variedad de componentes, por lo que no se apega a la implementación de un protocolo o servicio particular. Con el componente Camel Bean puede equilibrar la carga incluso llamadas al método POJO.

+0

Fantástico, gracias, justo lo que estaba buscando. –

1

También puede consultar JavaSpaces. El paradigma es una cola simple. El procesador menos activo es el que tiene mayor probabilidad de tomar el siguiente elemento en la cola.

Cuestiones relacionadas