Le caratteristiche dei contenitori serverlet contro la scalabilità e la tolleranza di errore di un'applicazione Web?

2

Molto probabilmente distribuiamo un'applicazione Web basata su JVM (ad es., Scala) su un contenitore (ad es. TOMCAT, Jetty, ecc.). I seguenti punti relativi a un contenitore del serverlet vanno contro di noi per creare un'applicazione Web scalabile e con tolleranza d'errore?

Punto singolo di errore : se il contenitore fallisce, l'applicazione fallisce. Inoltre, non possiamo aggiornare l'applicazione mentre si trova sul contenitore.

Numero elevato di connessioni simultanee : in base alla mia comprensione, non possiamo utilizzare un contenitore per fornire l'applicazione Web a decine di migliaia di utenti al secondo.

    
posta Seyed 03.02.2015 - 12:49
fonte

1 risposta

2

Non dovresti usare un contenitore, ma usa invece un framework senza contenitore come Play . Per quanto riguarda i tuoi punti:

Punto singolo di errore: questo è indipendente dalla distribuzione in a    contenitore o no. Dispongo solo un'istanza della tua app e questa    si blocca, è giù. Per la disponibilità elevata utilizzeresti più corse    istanze e bilanciamento del carico tra di loro, con contenitore o senza.

Numero elevato di connessioni simultanee: l'API servlet si basa su a    modello thread-per-request, ad esempio ogni richiesta occuperà un intero    filo. Questo può essere uno appena generato, o più probabilmente uno preso    da un pool di thread. Quindi il numero massimo di richieste simultanee è    determinato dalla dimensione del pool di thread del contenitore o dal numero di thread JVM    il tuo hardware può gestire bene. Quel numero probabilmente non è alto come    ti piacerebbe, dato che ogni thread del contenitore servlet occupa molto    memoria e il passaggio da un thread all'altro è relativamente costoso    operazione. Farai un uso migliore del tuo hardware con un asincrono    approccio, in cui ogni thread gestisce più richieste contemporaneamente, vale a dire    con un framework che non si basa sull'API Java Servlet EE.

Per ulteriori dettagli sull'approccio asincrono di Play ti consiglio: link

Forse prova l'app " Reactive Scales " per ottenere un'indicazione quante richieste / secondi gestisci su la tua macchina.

Un'elaborata vista del motivo per cui "Java Application Servers Are Dead" è fornita nel link

    
risposta data 04.04.2015 - 14:39
fonte

Leggi altre domande sui tag