Aktivieren Batch nur auf einer Server-Instanz

stimmen
0

Ich habe einen nginx Loadbalancer vor zwei Kater Instanzen jeweils eine Feder Boot-Anwendung enthält. Jede Feder Boot-Anwendung führt eine Charge, die Daten in einer Datenbank schreibt. Der Ansatz führt bei 01.00 jeden Tag. Das Problem ist, dass beide Instanzen die Batch ausführen simultaniously, die ich nicht will.

Gibt es eine Möglichkeit, das batchs in zwei Fällen eingesetzt zu halten und sagt Kater oder nginx die Charge in Master-Server zu starten (und der Slave-Server nicht die Batch-Lauf).

Wenn einer der Server stoppt, könnte der zweite Server die Partie, in seinem Namen starten.

Gibt es ein Werkzeug in nginx oder Kater (oder eine andere Technologie), das zu tun?

danke im Voraus.

Veröffentlicht am 13/02/2020 um 22:02
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Spring Batch verwendet eine Datenbank für ihre Arbeitsplätze (JobsRepository). Standardmäßig wird ein im Speicher-Datenquelle, um zu verfolgen laufenden Aufträge und deren Status verwendet. In Ihrem Setup sind die zwei Instanzen (am wahrscheinlichsten) ihre eigenen In-Memory-Datenbank verwenden. Mehrere Instanzen von Spring Batch können miteinander als Cluster koordinieren und man kann Aufträge ausführen, während die andere actasa Sicherung, wenn die jobsRepository Datenbank gemeinsam genutzt wird. Dazu müssen Sie die zwei Instanzen konfigurieren, dass eine gemeinsame Datenquelle zu verwenden.

Hier sind einige Dokumente: 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

Beantwortet am 14/02/2020 um 01:00
quelle vom benutzer

stimmen
0

Wenn Sie zwei Instanzen App Server entwerfen die gleiche Arbeit in der gleichen Zeit, dann durch Design laufen, wird man Erfolg haben, einen Job - Instanz zu erstellen und die andere wird scheitern (und dieser Fehler kann ignoriert werden). Siehe Javadoc von JobRepository . Dies ist eine der Aufgaben der Job - Repository: als Schutz gegen doppelte Auftragsausführungen in einer Cluster - Umgebung zu handeln.

Wenn einer der Server stoppt, könnte der zweite Server die Partie, in seinem Namen starten. Gibt es ein Werkzeug in nginx oder Kater (oder eine andere Technologie), das zu tun?

Ich glaube, es gibt keine Notwendigkeit für ein solches Werkzeug oder Technik. Wenn einer des Servers zum Zeitpunkt des Zeitplan ist unten, die andere in der Lage sein, die Dinge zu übernehmen und erfolgreich um den Job in dem Markt.

Beantwortet am 24/02/2020 um 13:40
quelle vom benutzer

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