Apache Tomcat Lab Flashcards
Spiega i principi di scale up e scale out, le sue applicazioni e trade off
Lo scale up consiste nel migliorare le risorse hardware disponibili. Può essere su vari livelli:
- OS: riduzione di operazione di memory copy, usare SRTF come algo di scheduling invece che del round robin, data transfer da filesystem a network direttamente
- Web server sw optimization: uso di multi threading o event driven
- Kernel: Riduzione dei context switch, uso di di web server in-kernel
Lo scale out, invece consiste nel usare replicare il numero di server che lavorano in parallelo, in locale o anche geograficamente, applicando anche sistemi di caching.
Cos’è Apache? Com’è strutturato?
Apache è un web server
Ha una struttura directory del tipo:
- bin (file eseguibili)
- conf (file di config)
Contiene httpd.conf che è quello principali, extras per direttive aggiuntive e magic la lista di signatures
Nel file principale abbiamo le config globali (possiamo definire il timeout per una connession eper evitare DDos, keepalive per le connessioni persistenti) e quelle default server - htdocs (root per web docs)
- cgi bin (scripts cgi)
- logs
Com’è strutturato un ciclo di richieste Apache?
In cosa consiste il multi process model (MPM)?
Il ciclo di vita di una richiesta ha diversi passi:
1) Uri based initialization
2) Uri Translation
3) File based initialization
4) Access Control
5) Authorization
6) MIME setting
7) Fix ups
8) Content (response)
9) Logging
10) Cleanup
11) Idle
Usiamo dei processi child creati dal dispatcher, ognuno gestisce una richiesta(Prefork). Nell’approccio Worker MPM abbiamo tanti processi e threads, ogni child processa una richiesta per thread. Possiamo settare il numero di processi, clients e richieste per child massimo, in questo modo possiamo adattarci al carico, allocando quando serve e deallocando quando no.
Quali sono gli approcci di Clustering?
Possiamo usare:
- Proxy (session support, lb.., caching…): implementa un gateay dal server ai workers supporta AJP, HTTP… possiamo fare ProxyPass per url e il worker, oppure un proxypass match come regular expression
- Rewrite rules: Manipoliamo la richiesta come anche l’url per fare forwarding, in apache usiamo mod_rewrite, attraverso delle regular expressions (reg ex) oppure attraverso delle conditional rewrite facendo riferimento anche a variabili d’ambiente.
- specific connectors: per protocolli AJP e altro, supp da tomcat
Che cos’è Apache Tomcat?
Che architettura ha?
Come vengono gestite le richieste?
Un web server che permette la l’esecuzione di applicazioni web sviluppato in Java.
Ha un’architettura a Matrioska:
Server(istanza tomcat), Service(componente che lega connector all’engine), Engine(container Java che gestisce il life cycle della richiesta), Host, Context(container della web application, contiene le data structure che servono), Web application(contiene servelet, risorse statiche).
Context è un path comune delle servlet, a cui possiamo agganciare config, sessioni, policy etc…
Inoltre abbiamo…
Le richieste arrivano ai connector, che gestiscono richieste per un specifico protocollo.
Una valve intercetta richieste in un layer e registrano dei logs.
Quando si riceve una richiesta, si fa il parsing creando il java request object e si risponde con il response java object.
Com’è il layout di Tomcat directory?
bin file eseguibili di tomcat
lib classi base
conf
webapps una dir per ogni context
logs