Aktywuj Batch tylko na jednej instancji serwera

głosy
0

Mam loadbalancer Nginx przed dwóch przypadkach tomcat każdy zawiera aplikację startową wiosna. Każda aplikacja bagażnika sprężyna wykonuje partię, która zapisuje dane w bazie danych. Wsad wykonywany codziennie o 1 w nocy. Problemem jest to, że oba przypadki wykonać partię simultaniously którego nie chcę.

Czy istnieje sposób, aby zachować batchs rozmieszczonych w dwóch przypadkach i powiedzieć tomcat lub nginx, aby rozpocząć partię na serwerze głównym (i serwera podrzędnego nie uruchomić partii).

Jeśli jeden z serwerów przestanie, drugi serwer może rozpocząć partię w jego imieniu.

Czy istnieje narzędzie w nginx lub Tomcat (lub jakaś inna technologia) to zrobić?

z góry dziękuję.

Utwórz 13/02/2020 o 22:02
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

Wiosna Batch wykorzystuje bazę danych na jego pracy (JobsRepository). Domyślnie in źródłem danych pamięci służy do śledzenia zadań bieżących i ich status. W konfiguracji, 2 przypadki są (najprawdopodobniej) z wykorzystaniem własnej bazy danych w pamięci. Wiele wystąpień Wiosny Batch może koordynować ze sobą jako zespół i można uruchomić miejsc pracy, podczas gdy druga zapasowa actasa, jeśli jobsRepository baza danych jest wspólna. Do tego trzeba by skonfigurować 2 instancje używać wspólnego źródła danych.

Oto kilka 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

Odpowiedział 14/02/2020 o 01:00
źródło użytkownik

głosy
0

Jeśli projekt dwóch instancji serwera aplikacji, aby wykonać tę samą pracę w tym samym czasie, a następnie przez projekt, jeden uda się utworzyć instancję pracy i inne zawiedzie (i to niepowodzenie może być ignorowane). Zobacz Javadoc z JobRepository . Jest to jedna z ról repozytorium pracy: działać jako zabezpieczenie przed duplikatów egzekucji pracy w środowisku klastrowym.

Jeśli jeden z serwerów przestanie, drugi serwer może rozpocząć partię w jego imieniu. Czy istnieje narzędzie w nginx lub Tomcat (lub jakaś inna technologia) to zrobić?

Wierzę, że nie ma potrzeby takiego narzędzia lub technologii. Jeśli jeden z serwerów jest w dół w czasie harmonogramu, drugi będzie mógł wziąć rzeczy nad i odnieść sukces w rozpoczęciu pracy.

Odpowiedział 24/02/2020 o 13:40
źródło użytkownik

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