Batch Ativar em apenas uma instância de servidor

votos
0

Eu tenho um balanceador de carga nginx na frente de duas instâncias tomcat cada um contém um aplicativo de inicialização primavera. Cada aplicativo de inicialização primavera executa um lote que grava os dados em um banco de dados. O lote executa todos os dias às 01:00. O problema é que ambos os casos, executar o lote simultaniously que eu não quero.

Existe uma maneira de manter as batchs implantados em duas instâncias e dizer tomcat ou nginx para iniciar o lote no servidor mestre (eo servidor escravo não executar o lote).

Se um dos servidores pára, o segundo servidor pode iniciar o lote em seu nome.

Existe uma ferramenta no nginx ou tomcat (ou alguma outra tecnologia) para fazer isso?

Agradeço antecipadamente.

Publicado 13/02/2020 em 22:02
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Spring Batch usa um banco de dados para os seus empregos (JobsRepository). Por padrão um na fonte de dados de memória é usado para manter o controle de trabalhos em execução e seu status. Em sua configuração, os 2 casos são (mais provável), utilizando sua própria base de dados de memória. Várias instâncias de Primavera Batch pode coordenar um com o outro como um cluster e pode-se executar trabalhos, enquanto o outro de backup actasa, se o banco de dados jobsRepository é compartilhado. Para isso, você precisa configurar os 2 casos de usar uma fonte de dados comum.

Aqui estão alguns docs: 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

Respondeu 14/02/2020 em 01:00
fonte usuário

votos
0

Se você projetar duas instâncias de servidor de aplicativo para executar o mesmo trabalho, ao mesmo tempo, em seguida, por design, um vai ter sucesso para criar uma instância de trabalho eo outro irá falhar (e esta falha pode ser ignorado). Veja Javadoc de JobRepository . Este é um dos papéis do repositório trabalho: atuar como uma salvaguarda contra as execuções de trabalho duplicados em um ambiente em cluster.

Se um dos servidores pára, o segundo servidor pode iniciar o lote em seu nome. Existe uma ferramenta no nginx ou tomcat (ou alguma outra tecnologia) para fazer isso?

Eu acredito que não há necessidade de tal ferramenta ou tecnologia. Se um dos servidores é baixo no momento da programação, o outro será capaz de levar as coisas mais e ter sucesso no lançamento do trabalho.

Respondeu 24/02/2020 em 13:40
fonte usuário

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