Activar por lotes en una sola instancia de servidor

votos
0

Tengo un equilibrador de carga nginx en frente de dos instancias Tomcat cada uno contiene una aplicación de arranque del resorte. Cada aplicación de inicio de la primavera ejecuta un lote que escribe datos en una base de datos. El lote se ejecuta todos los días a la 1am. El problema es que ambas instancias ejecutar el lote simultaneamente, que no quiero.

¿Hay una manera de mantener los batchs desplegados en dos casos y contar Tomcat o nginx para iniciar el proceso por lotes en el servidor maestro (y el servidor esclavo no se ejecuta el lote).

Si uno de los servidores se detiene, el segundo servidor podría iniciar el lote en su nombre.

¿Existe una herramienta en nginx o Tomcat (o alguna otra tecnología) para hacer eso?

gracias de antemano.

Publicado el 13/02/2020 a las 22:02
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Spring Batch utiliza una base de datos para sus puestos de trabajo (JobsRepository). Por defecto una fuente de datos en la memoria se utiliza para realizar un seguimiento de los trabajos en ejecución y su estado. En su configuración, los 2 casos son (muy probablemente) utilizando su propia base de datos en memoria. Varias instancias de Spring Batch pueden coordinarse entre sí como un grupo y se puede ejecutar trabajos, mientras que la otra copia de seguridad ACTÚA, si la base de datos jobsRepository es compartida. Para ello, tiene que configurar los 2 casos utilizar una fuente de datos común.

Aquí están algunos documentos: https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#jobrepository

https://docs.spring.io/spring-batch/docs/current/reference/html/job.html#configuringJobRepository

Respondida el 14/02/2020 a las 01:00
fuente por usuario

votos
0

Si el diseño de dos instancias del servidor de aplicaciones para ejecutar el mismo trabajo, al mismo tiempo, a continuación, por diseño, uno tendrá éxito al crear una instancia de trabajo y la otra se producirá un error (y este fracaso puede ser ignorada). Ver Javadoc de JobRepository . Esta es una de las funciones del depósito de trabajos: actuar como salvaguardia contra las ejecuciones de trabajo duplicados en un entorno agrupado.

Si uno de los servidores se detiene, el segundo servidor podría iniciar el lote en su nombre. ¿Existe una herramienta en nginx o Tomcat (o alguna otra tecnología) para hacer eso?

Creo que no hay necesidad de dicha herramienta o tecnología. Si uno de los servidores se ha reducido en el momento de la programación, el otro será capaz de tomar las cosas y tener éxito en el lanzamiento del trabajo.

Respondida el 24/02/2020 a las 13:40
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more