V spletnih aplikacijah, ki temeljijo na Spring Boot, paket spring-boot vključuje vgrajen spletni strežnik, vključno s tomcat, jetty, undertowom in nettyjem.
Uvod v pogoste spletne kontejnerje
Tomcat
Tomcat je trenutno vključen v projekt Apache, uradna povezava pa jePrijava do hiperpovezave je vidna. Tomcat je glavni Java spletni strežnik, zato je zelo stabilen in zrel, skupnost pa je aktivna in bogata z dokumentacijo in viri. Tomcat podpira protokole Http, Http/2, AJP, WebSocket in podpira Servlet 6.0
Pomol
Jetty je strežnik, ki ga zagotavlja Eclipse, uradna povezava jePrijava do hiperpovezave je vidna. Je lažji od Tomcata in ima lastno asinhrono podporo. Jetty podpira protokole Http, Http/2, Http/3, AJP, WebSocket in podpira Servlet 6.0
Netty
Netty je časovno vodeno asinhrono omrežno ogrodje, ki se široko uporablja v visokozmogljivih spletnih aplikacijah, zlasti v strežniških aplikacijah, ki obvladujejo veliko število sočasnih povezav; uradna povezava jePrijava do hiperpovezave je vidna. Netty podpira skoraj vse protokole, vključno z SSL/TLS, HTTP, HTTP/2, HTTP/3, WebSockets, DNS, SPDY, SMTP itd
Podvodni tok
Undertow je strežnik, ki ga zagotavlja JBoos, uradni naslov jePrijava do hiperpovezave je vidna. Undertow je značilen po svoji lahkosti, visoki zmogljivosti in lokalni porabi virov, hkrati pa podpira vgrajene aplikacije in mikroservise. Undertow podpira protokole Http, Http/2, WebSocket in podpira Servlet 4.0
Apache Tomcat
Apache Tomcat je široko uporabljen spletni strežnik in servlet kontejner. Je privzeta izbira za tradicionalne Spring Boot aplikacije zaradi svoje robustnosti, enostavnosti uporabe in združljivosti s Servlet API-jem.
Ključne značilnosti:
Temelji na Servletih: Tomcat je zgrajen okoli Servlet API-ja, kar ga naredi idealnega za tradicionalne Spring MVC aplikacije. Blokiranje vhodno/izhodnih podatkov: Tomcat deluje po modelu ene niti na zahtevo, kar pomeni, da vsako dohodno zahtevo obravnava ločena nit. Enostavna konfiguracija: Tomcat je mogoče enostavno nastaviti in konfigurirati s Spring Bootom, kar ga naredi idealnega za širok nabor spletnih aplikacij.
Notranja arhitektura
Povezovalci: Upravljanje omrežnih povezav, sprejemanje in obdelava HTTP zahtevkov. Kontejner: Odgovoren za upravljanje življenjskega cikla servletov, vključno z nalaganjem, inicializacijo in klicem. Model niti: Tomcat uporablja niti bazene, kjer vsako zahtevo obravnava ločena nit v bazenu. Ta model je preprost, vendar lahko povzroči težave s skalabilnostjo pri visoki obremenitvi zaradi sporov med nitmi in presežka pomnilnika.
Primer scenarija: Obravnava vzporednih zahtevkov
Oglejmo si scenarij, kjer na strežnik Tomcat prispe pet vzporednih zahtev:
Ena nit na zahtevo: Tomcat dodeli ločeno nit vsaki od petih zahtev iz svojega nabora niti. Blokiranje vhodno-izhodnih operacij: Vsaka nit obdeluje svoje zahteve sinhrono in blokira, če so potrebne kakšne vhodno-izhodne operacije, kot so klici baze podatkov.
Upravljanje virov: Če ima bazen niti dovolj prostih niti, se vseh pet zahtevkov obdela hkrati. Če ne, bodo druge zahteve čakale v vrsti, dokler nit ni na voljo.
Zasluga:
Preprosta in enostavna za razumevanje. Idealno za tradicionalne spletne aplikacije. Zrel, stabilen in z obsežno podporo skupnosti.
Pomanjkljivost:
Omejena skalabilnost pri visoki obremenitvi zaradi režijskih stroškov niti. Večja poraba pomnilnika na zahtevo.
Netty
Netty je visokozmogljiv, asinhron, na dogodkih vodeni spletni aplikacijski okvir. To je privzeto ogrodje za Spring WebFlux, ki je zasnovano za odzivno programiranje.
Ključne značilnosti:
Dogodkovno vodeno: Netty uporablja arhitekturo, ki temelji na dogodkih, kar ga naredi primernega za učinkovito obvladovanje velikega števila sočasnih povezav. Neblokirajoči vhodno/izhodni sistem: Netty uporablja neblokirajoče vhodno/izhodne sisteme, kar mu omogoča obdelavo številnih povezav z manj nitmi. Razširljivost: Zasnovano za aplikacije z visoko konkurenčnostjo, nizko zakasnitvijo in visoko prepustnostjo.
Notranja arhitektura
Event Loop: Osrednja komponenta Nettyja je event loop, ki asinhrono upravlja vhodno/izhodne operacije. Skupina dogodkovnih zank vsebuje eno ali več dogodkovnih zank. Kanal: Predstavlja povezavo, kot je dohodni HTTP zahtevek, in je povezan z zanko dogodkov. Model niti: Netty uporablja majhno število niti za obdelavo velikega števila povezav. Vsaka zanka dogodkov teče v eni niti in obravnava več kanalov, kar jo naredi zelo razširljivo.
Primer scenarija: Obravnava vzporednih zahtevkov
Predstavljajte si scenarij, kjer na Netty strežnik prispe pet vzporednih zahtev:
Model, ki temelji na dogodkih: Netty v svoji zanki dogodkov razporedi pet zahtev. Neblokirajoči I/O: Operacija ne blokira niti zanke dogodkov. Namesto tega se vhodno/izhodne operacije izvajajo asinhrono, kar omogoča isti niti učinkovito upravljanje več povezav.
Razširljivost: Zaradi svoje neblokirajoče narave lahko Netty obvladuje veliko število povezav z razmeroma majhnim številom niti.
Zasluga:
Zelo učinkovito za naloge, ki zahtevajo intenzivne I/O. Boljša razširljivost in zmogljivost pri visoki sočasnosti. Idealno za reaktivno programiranje in sodobne spletne aplikacije.
Pomanjkljivost:
Razumevanje in konfiguracija je bolj zapletena. V primerjavi s tradicionalnimi aplikacijami, ki temeljijo na servletih, je potreben drugačen programski model (reaktivni).
Sklep
Netty in Tomcat pokrivata različna področja strežniških ogrodij. Netty je zelo prilagodljiv temeljni okvir, zasnovan za prilagojene omrežne protokole in visokozmogljive scenarije; Tomcat je preverjena izbira za Java spletne aplikacije, ki so skladne s standardi Java EE in Jakarta EE. Izbira med obema je odvisna od specifičnih potreb projekta, ne glede na to, ali gre za gradnjo spletnega strežnika s prilagojenimi protokoli ali tradicionalne spletne aplikacije.
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna. |