2017-04-07 38 views
5

Próbuję wdrożyć aplikację Spring Boot na Amazon Lambda. Zauważyłem, że jeśli funkcja obsługi jest wywoływana w krótkich odstępach czasu - wiosna próbuje przeładować się, ponowne ustawienie na datsources, przeładować fasola itpUruchamianie wiosny rozruchu na Amazon Lambda

Czy mimo to powiedzieć wiosna Boot nie zainicjuje się jeśli główny metoda została już nazywa?

Dzięki Damien

Odpowiedz

3

O ile mi wiadomo, Amazon Lambda jest bezpaństwowcem funkcja, która jest tworzony dla każdego żądania.

Jeśli wywołasz Lambdę wiele razy, to jest całkiem normalne, że widzisz inicjalizację Spring Boot dla każdego żądania.

Jeśli żądania przychodzą powoli, możliwe jest, że AWS ponownie używa tej samej Lambdy, więc zostanie wykonana tylko jedna inicjalizacja wiosny.

Jeśli żądanie przyjdzie szybko lub równolegle, AWS uruchomi więcej instancji Lambdas, aby dynamicznie skalować. To wyjaśnia, przed czym stoisz.

Myślę, że korzystanie z całej aplikacji Spring jako AWS Lambda nie jest właściwym podejściem. Lambda powinna być funkcją bezpaństwową, którą można szybko utworzyć.

Możesz starać się, aby aplikacja wiosna była jak najmniejsza, aby zmniejszyć czas ładowania i oszczędzać zasoby, jak wyjaśniono w this tutorial.

+0

Witam @Stefan. Zgadzam się na wszystkie te punkty. Myślałem o tym, że nie używam spingu i nie patrzę na rzeczy takie jak iskra, ale myślałem, że może wprowadzić złe praktyki kodowania. Dla kodu, który piszę - wszystko opiera się na kolejce. Czas jest ważny i jest czymś, czym będę świadomy –

+0

Uważam, że jest to zadanie dla programistów Spring Boot, aby zmniejszyć czas potrzebny do wykorzystania w AWS Lambda, w szczególności w połączeniu z bramką API, aby służyć Spring MVC/aplikacjom sieciowym. Zostało to zrobione w świecie Python/Django: http://www.zappa.io –

+0

Jeśli chcesz to zobaczyć, zagłosuj na https://github.com/spring-projects/spring-boot/issues/10136 –