Spring Boot -pohjaisissa web-sovelluksissa spring-boot-paketti sisältää sisäänrakennetun web-palvelimen, johon kuuluvat tomcat, jetty, undertow ja netty.
Johdanto yleisiin web-kontteihin
Kollikissa
Tomcat on tällä hetkellä mukana Apache-projektissa, ja virallinen linkki onHyperlinkin kirjautuminen on näkyvissä. Tomcat on valtavirran Java-verkkopalvelin, joten se on hyvin vakaa ja kypsä, ja yhteisö on aktiivinen ja rikas dokumentaatiosta ja resursseista. Tomcat tukee Http-, Http/2-, AJP- ja WebSocket-protokollia sekä Servlet 6.0:aa
Aallonmurtaja
Jetty on Eclipsen tarjoama palvelin, virallinen linkki onHyperlinkin kirjautuminen on näkyvissä. Se on kevyempi kuin Tomcat ja sillä on oma asynkroninen tuki. Jetty tukee Http-, Http/2-, Http/3-, AJP- ja WebSocket-protokollia sekä Servlet 6.0:aa
Netty
Netty on aikaohjattu asynkroninen verkkokehys, jota käytetään laajasti suorituskykyisissä verkkosovelluksissa, erityisesti palvelinpuolen sovelluksissa, jotka käsittelevät suurta määrää samanaikaisia yhteyksiä, virallinen linkki onHyperlinkin kirjautuminen on näkyvissä. Netty tukee lähes kaikkia protokollia, mukaan lukien SSL/TLS, HTTP, HTTP/2, HTTP/3, WebSockets, DNS, SPDY, SMTP jne
Alakynnessä
Undertow on JBoosin tarjoama palvelin, virallinen osoite onHyperlinkin kirjautuminen on näkyvissä. Undertow'lle on ominaista keveys, korkea suorituskyky ja paikalliset resurssien kulutukset, samalla kun se tukee sulautettuja sovelluksia ja mikropalveluita. Undertow tukee Http-, Http/2- ja WebSocket-protokollia sekä Servlet 4.0:aa
Apache Tomcat
Apache Tomcat on laajasti käytetty verkkopalvelin ja servlet-kontti. Se on oletusvalinta perinteisissä Spring Boot -sovelluksissa sen kestävyyden, helppokäyttöisyyden ja yhteensopivuuden vuoksi Servlet-rajapinnan kanssa.
Keskeiset ominaisuudet:
Perustuu Servleteihin: Tomcat perustuu Servlet-API:han, mikä tekee siitä ihanteellisen perinteisiin Spring MVC -sovelluksiin. I/O:n estäminen: Tomcat toimii mallilla, jossa yksi säie per pyyntö on yhdessä, mikä tarkoittaa, että jokainen saapuva pyyntö käsitellään erillisellä säieellä. Helppo konfigurointi: Tomcat voidaan helposti asentaa ja konfiguroida Spring Bootilla, mikä tekee siitä ihanteellisen monenlaisiin verkkosovelluksiin.
Sisäinen arkkitehtuuri
Liittimet: Hallinnoi verkkoyhteyksiä, hyväksy ja käsittele HTTP-pyyntöjä. Konttiin: Vastaa servletin elinkaaren hallinnasta, mukaan lukien lataus, alustus ja kutsu. Säiemalli: Tomcat käyttää säiepoolia, joissa jokainen pyyntö käsitellään erillisen säieen kautta poolissa. Tämä malli on yksinkertainen, mutta voi aiheuttaa skaalautuvuusongelmia suuren kuormituksen alla säikeiden kiistan ja muistin kuormituksen vuoksi.
Esimerkkiskenaario: Rinnakkaisten pyyntöjen käsittely
Tarkastellaan tilannetta, jossa viisi rinnakkaista pyyntöä saapuu Tomcat-palvelimelle:
Yksi säie per pyyntö: Tomcat määrittää erillisen säikeen jokaiselle viidelle pyynnölle säiepoolistaan. I/O:n estäminen: Jokainen säie käsittelee pyyntönsä synkronisesti, estäen tarvittaessa I/O-toimintoja, kuten tietokantakutsuja.
Resurssien hallinta: Jos säikepoolissa on tarpeeksi vapaita säikeitä, kaikki viisi pyyntöä käsitellään samanaikaisesti. Jos ei, muut pyynnöt odottavat jonossa, kunnes säie on saatavilla.
Ansio:
Yksinkertaista ja helposti ymmärrettävää. Ihanteellinen perinteisiin verkkosovelluksiin. Kypsä, vakaa ja laajalla yhteisön tuella.
Puute:
Rajoitettu skaalautuvuus korkealla kuormituksella säikeiden ylikuormituksen vuoksi. Suurempi muistinkulutus per pyyntö.
Netty
Netty on suorituskykyinen, asynkroninen tapahtumapohjainen verkkosovelluskehys. Se on Spring WebFluxin oletuskehys, joka on suunniteltu responsiiviseen ohjelmointiin.
Keskeiset ominaisuudet:
Tapahtumalähtöinen: Netty käyttää tapahtumapohjaista arkkitehtuuria, mikä tekee siitä sopivan tehokkaaseen samanaikaisten yhteyksien käsittelyyn. Ei-blokkaava I/O: Netty käyttää ei-blokkaavaa I/O:ta, mikä mahdollistaa monien yhteyksien käsittelyn vähemmillä säikeillä. Skaalautuvuus: Suunniteltu korkeaan samanaikaisuuteen, matalan viiveen ja korkean läpimenon sovelluksiin.
Sisäinen arkkitehtuuri
Tapahtumasilmukka: Nettyn ydinkomponentti on tapahtumasilmukka, joka hallitsee I/O-toimintoja asynkronisesti. Tapahtumasilmukkaryhmä sisältää yhden tai useamman tapahtumasilmukan. Kanava: Edustaa yhteyttä, kuten saapuvaa HTTP-pyyntöä, ja liittyy tapahtumasilmukkaan. Säiemalli: Netty käyttää pientä määrää säikeitä hallitakseen suuren määrän yhteyksiä. Jokainen tapahtumasilmukka toimii yhdessä säikeessä ja käsittelee useita kanavia, mikä tekee siitä erittäin skaalautuvan.
Esimerkkiskenaario: Rinnakkaisten pyyntöjen käsittely
Kuvitellaan tilanne, jossa viisi rinnakkaista pyyntöä saapuu Netty-palvelimelle:
Tapahtumalähtöinen malli: Netty jakaa viisi pyyntöä tapahtumasilmukassaan. Ei-blokkaava I/O: Operaatio ei estä tapahtumasilmukan säiettä. Sen sijaan I/O-toiminnot hoidetaan asynkronisesti, jolloin sama säike voi hallita useita yhteyksiä tehokkaasti.
Skaalautuvuus: Ei-estävän luonteensa vuoksi Netty pystyy käsittelemään suuren määrän yhteyksiä suhteellisen pienellä säikemäärällä.
Ansio:
Erittäin tehokas I/O-intensiivisiin tehtäviin. Ylivoimainen skaalautuvuus ja suorituskyky korkealla rinnakkaiskaudella. Ihanteellinen reaktiiviseen ohjelmointiin ja nykyaikaisiin verkkosovelluksiin.
Puute:
Sen ymmärtäminen ja konfigurointi on monimutkaisempaa. Perinteisiin servlet-pohjaisiin sovelluksiin verrattuna tarvitaan erilainen ohjelmointimalli (reaktiivinen).
johtopäätös
Netty ja Tomcat palvelevat eri osa-alueita palvelinkehysten alalla. Netty on erittäin joustava taustakehys, joka on suunniteltu räätälöityihin verkkoprotokolliin ja suorituskykyisiin tilanteisiin; Tomcat on todistettu valinta Java-verkkosovelluksiin, jotka täyttävät Java EE- ja Jakarta EE -standardit. Valinta näiden kahden välillä riippuu projektin erityistarpeista, olipa kyse sitten web-palvelimen rakentamisesta mukautetuilla protokollilla vai perinteisestä web-sovelluksesta.
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä. |