Podejrzewam, że masz na myśli tworzenie klastrów aplikacji.
AFAIK, JVM, które pojawiły się z naprawdę dużymi rozmiarami sterty, mają problemy z odśmiecaniem, choć jestem pewny, że dzięki playing around with the GC algorithm and parameters można zmniejszyć obrażenia do minimum. Ponadto aplikacje klastrowe nie mają pojedynczego punktu awarii. Jeśli jeden węzeł ulegnie awarii, pozostałe węzły mogą nadal obsługiwać klientów. Jest to jeden z powodów, dla których "architektura oparta na komunikatach" jest odpowiednia do skalowalności. Każde żądanie jest mapowane na komunikat, który może następnie zostać odebrany przez dowolny węzeł w klastrze.
Inną kwestią jest obsługa wielu żądań jednocześnie w przypadku, gdy aplikacja niestety używa zsynchronizowanego słowa kluczowego rozważnie. Obecnie mamy starszą aplikację, która ma dużo wspólnego stanu (niestety), a zatem obsługa jednoczesnych żądań odbywa się poprzez odradzanie około 20 procesów JVM z centralną jednostką dyspozytorską, która wykonuje wszystkie prace dyspozytorskie. ;-)
Kim jest to "my"? Nigdy wcześniej tego nie robiłem, to nie ma sensu. – skaffman
Słynna witryna e-commerce z 10 milionami unikalnych odwiedzających miesięcznie i 99.89% dostępności, a niektóre inne widziałem –
Więc mówisz, że istnieje 5 wystąpień dokładnie tej samej aplikacji internetowej uruchomionej na oddzielnych serwerach aplikacji (a zatem JVM)? Czy wszystkie działają na maszynach wirtualnych? –