2012-02-06 25 views
5

Potrzebuję skonfigurować środowisko hostingu dla około 100 klientów na jeden serwer GlassFish (v 3.1). Każdy klient potrzebuje niestandardowej skonfigurowanej aplikacji, która może działać niezależnie. (JDBC, JMS, możliwość restartowania pojedynczej aplikacji) Preferowana jest działająca pojedyncza maszyna wirtualna, ponieważ uruchomienie 100 maszyn JVM przy użyciu 750 MB pamięci RAM nie brzmi jak dobry pomysł.Multiinstance Architektura aplikacji i wdrażanie w serwerze aplikacji GlassFish

tej pory testowaliśmy następujące rozwiązania, ale niestety żaden z nich nie spełnił moje wymagania:

  1. Wdrażanie aplikacji na oddzielnych domen. To rozwiązanie było niewystarczające z powodu użycia JVM RAM i złożoności uruchamiania wielu konsol zarządzania na wielu portach (nie potrzebujemy tak dużo separacji).

  2. Wdrażanie aplikacji w wielu instancjach (nazwane obiekty docelowe w Glassfish) w tej samej domenie. To rozwiązanie było niewystarczające, ponieważ tworzy oddzielny proces JVM dla każdej instancji i zużywa zbyt dużo pamięci RAM (kilkaset MB dla każdego wystąpienia). Poza tym był najbliższy temu, czego potrzebujemy.

  3. Wdrażanie aplikacji na wielu wirtualnych hostach w tej samej instancji. To rozwiązanie było nie do przyjęcia, ponieważ w Glassfish każdy serwer wirtualny nie ma osobnej konfiguracji.

Czy ktoś może zasugerować, jaka jest najlepsza praktyka/zalecenie używania GlassFish do obsługi wielu wystąpień aplikacji? Czy jesteśmy "skazani" na rezerwowanie 1 GB pamięci RAM na klienta? Wychodząc ze środowiska IIS, mieliśmy oddzielne pule aplikacji, z których każda korzystała z 3-5 MB pamięci RAM podczas uruchamiania.


UPDATE

O moim uzależnieniem i udostępniania w mojej aplikacji: w idei chcę zrealizować na serwerze Glassfisf każda aplikacja wymaga oddzielnych zasobów (JMS i JDBC). Nie stanowi to problemu, mogę dostosować go do każdej aplikacji, nawet na hosty wirtualne włączone w jednej instancji (mogę rozpoznać serwer wirtualny, pobierając nazwę serwera z żądania HTTP i przygotować oddzielne zasoby i pliki konfiguracyjne w katalogu instancji, aby zastosować konfigurację do tego konkretnego wirtualny serwer).

Moi „requrements niezależność” są:

  1. po prostu trzeba być w stanie wdrożyć wielu aplikacji na jednej GlassFish przykład i być w stanie uruchomić je w oddzielnych procesach Java, ale w tej samej maszynie wirtualnej Javy.
  2. Muszę mieć możliwość uruchamiania/zatrzymywania każdej aplikacji niezależnie od siebie.
  3. Potrzebuję mieć możliwość ponownego załadowania jednej aplikacji i drugiej, podczas gdy inne aplikacje powinny pozostać aktywne (w IIS ta opcja jest nazywana "pulą aplikacji do recyklingu").
  4. W przypadku błędu w jednej aplikacji nie powinno to mieć wpływu na inne aplikacje klienckie na tym samym serwerze/instancji. Inne aplikacje będą działać nadal (oczywiście, gdy ten błąd nie zepsuje całego java vm).

Czy możliwe jest zrealizowanie tego pomysłu na jednej instancji Glassfish z wdrożonymi setkami aplikacji (włączone na instancjach/hostach wirtualnych)? Być może wdrażanie aplikacji pod różnymi nazwami (jak opisano tutaj: home.java.net/node/676678) może być dobrym rozwiązaniem w moim przypadku?Czy ktokolwiek ma doświadczenie w rozmieszczaniu stukrotnie tej samej aplikacji o różnych konfiguracjach w ten sposób?

Dzięki,

Olgierd

+0

jeśli ktoś jest zainteresowany dyskusją na temat tego pytania , został opublikowany bardziej pomyślnie tutaj: http://www.java.net/forum/topic/glassfish/glassfish/multiinstance-appliciation-architecture-and-deployment-glassfish-app-server?force=691 – rsc

Odpowiedz

1

jeśli używasz stosu GF 3 można zauważyć, że produkt ten został refactored wziąć korzyści z architektury OSGi .. więc teraz można wdrożyć wiązek lub nawet WAB plików (zestawy aplikacji internetowych) w GF3.This architekturze pozwoli ci:

  • zarządzać wersjami różnych modułów
  • do stop/restart aplikacji w sposób niezależny
  • zapewnić wspólne pakiety dla aplikacji Unikanie odpadów Perm gen przestrzeni ...

Ale w swoim pytaniu nie mogę zrozumieć, jak modelować różne procesy z pojedynczym Java Virtual Machine .... One Maszyna wirtualna 1 oznacza proces (na poziomie OS) i nie można nic przeciwko temu zrobić ..

Platforma OSGi przynosi wiele korzyści w zakresie wymagań SLA dla aplikacji i oprogramowania dla modułowości ... HTH Jerome

+0

Pytanie było czy możliwe jest osiągnięcie architektury wielowarstwowej w GF. AFAIK OSGi też z tym nie pomaga. Wygląda na to, że architektura wielowarstwowa jest tu bardziej naturalna (http://en.wikipedia.org/wiki/Multitenancy). – rsc