Moja aplikacja mocno opiera się na usługach AWS i szukam optymalnego rozwiązania opartego na nich. Aplikacja sieciowa uruchamia zaplanowane zadanie (zakładamy, że jest ono powtarzane w nieskończoność), co wymaga wykonania określonej ilości zasobów. Pojedynczy przebieg zadania zwykle zajmuje maksymalnie 1 minutę.Planowanie długotrwałych zadań za pomocą usług AWS
Obecnym pomysłem jest przekazywanie zadań za pośrednictwem SQS i odradzanie pracowników w instancjach EC2 w zależności od rozmiaru kolejki. (ta część jest mniej lub bardziej oczywista) Ale mam problem ze znalezieniem odpowiedniego rozwiązania dla faktycznego uruchamiania zadań w określonych odstępach czasu. Załóżmy, że mamy do czynienia z 10000 miejscami pracy. Tak więc, aby program uruchamiający 10k cronjobs (samo zadanie jest dość proste, tylko przekazywanie opisu zadań za pośrednictwem SQS) jednocześnie wydaje się szalonym pomysłem. Prawdziwe pytanie brzmi: jak przeprowadzić autoskalowanie samego programu planującego (biorąc pod uwagę scenariusze przy ponownym uruchomieniu programu planującego, tworzeniu nowej instancji itp.)? Czy program planujący jest nadmiarowy jako aplikacja i rozsądniej jest polegać na funkcjach AWS Lambda (lub innych usługach zapewniających planowanie)? Problem z używaniem funkcji Lambda jest pewnym ograniczeniem, a pamięć dostarczona 128mb dostarczona przez pojedynczą funkcję jest w rzeczywistości za duża (20mb wydaje się więcej niż wystarczająca).
Alternatywnie, sam pracownik może czekać przez pewien czas i powiadomić harmonogram, który powinien uruchomić zadanie jeszcze raz. Powiedzmy, jeśli częstotliwość jest 1 godzina:
1. Scheduler sends job to worker 1
2. Worker 1 performs the job and after one hour sends it back to Scheduler
3. Scheduler sends the job again
Chodzi tu jednak jest możliwość tego pracownika będzie się skalować w
Bottom Line próbuję osiągnąć lekką planującego co. nie wymagają autoskalowania i służą jako koncentrator wyłącznie do przesyłania opisów zadań. I na pewno nie powinno być dławione po ponownym uruchomieniu usługi.
„long-uruchamianie zadań” .. „zajmie maksymalnie 1 min”:/ –