Podczas opracowywania naszych produktów stanęliśmy przed problemem dużego zużycia pamięci przy użyciu domyślnej architektury Vaadin.
Architektura Vaadin opiera się na komponentach sterowanych przez zdarzenia. Korzystanie z komponentów jest dość proste, aby stworzyć ściśle powiązaną aplikację. Powodem jest to, że komponenty są podzielone na hierarchię. To jest jak piramida. Większa aplikacja jest zbudowana; większa piramida jest przechowywana w sesji dla każdego użytkownika.
W celu znacznego zmniejszenia alokacji pamięci stworzyliśmy podejście oparte na stronie dla aplikacji z kompleksowym modelem zdarzeń w tle, korzystając z zarządzania stanem starej szkoły. Opiera się na zapisie Statechart w formacie XML.
W rezultacie sesja przechowuje tylko odwiedzane strony podczas przepływu pracy użytkownika, opisane przez konfigurację Statechart. Gdy użytkownik zakończy przepływ pracy, wszystkie strony zostaną zwolnione do zbierania przez garbage collector.
Aby zobaczyć różnicę, zrobiliśmy kilka testów, aby porównać pamięć przydzieloną dla użytkownika pracującego z aplikacją.
Aplikacje opracowane:
- z mocno sprzężona podejścia spożywać od 5 do 15MB sterty na użytkownika
- z luźno sprzężona podejścia - do 2 MB
Jesteśmy bardzo zadowoleni z wynikami, ponieważ pozwolił nam skalować duży system przy użyciu 4 GB pamięci RAM do 1000-1500 jednoczesnych użytkowników na serwer.
Prawie zapomniałem. Użyliśmy biblioteki Lexaden Web Flow. Jest z licencją Apache.
Ilu użytkowników zamierza korzystać z aplikacji? –
Ponad 20 000 jednoczesnych użytkowników –