Pregunta

Estoy creando una aplicación cliente-servidor y estoy considerando agregar una conmutación por error al cliente para que cuando un servidor esté inactivo intente conectarse a otro servidor disponible. ¿Existen normas o especificaciones que cubran la conmutación por error del servidor? Prefiero adoptar un estándar existente a implementar mi propio mecanismo.

¿Fue útil?

Solución

No hay, o necesita serlo. Es bastante sencillo y todo depende de cómo puede conectarse a su servidor, pero básicamente necesita seguir enviando pings / keepalives / heartbeats a lo que quiera llamar, y cuando se produce un error (o n falla en una fila, si quiere) cambiar un interruptor en su config.

Normalmente, lo anterior se ejecutaría como un servicio separado en la máquina cliente. Además, puede crear un controlador de ejecución de método que maneje la ejecución de todas las llamadas de servidor que realice, y en caso de fallo de comunicación, en su bloque de "captura", active su interruptor en la configuración

Otros consejos

Tu pregunta es muy general. Aquí hay algunas respuestas generales: Google para computación tolerante a fallas

Google para soluciones de alta disponibilidad

Esto generalmente se maneja en el equilibrador de carga o en el nivel del servidor. Esto no es algo que normalmente hace en código en el cliente.

Por lo general, los servidores multihome tienen cada uno su propio IP + uno que se comparte entre todos ellos. Además, se comunican entre sí a través de tcp para que el latido del corazón sepa cuál es el nodo activo en un clúster activo / pasivo.

No puedo decir qué tipo de servidores tiene, pero la mayoría de los servidores de Windows pueden hacerlo de forma nativa.

Puede considerar hacer la pregunta en serverfault para ver cómo configurar correctamente sus servidores para que admitan esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top