Spring Boot balstītās tīmekļa lietojumprogrammās atsperes sāknēšanas pakotnē ir iebūvēts tīmekļa serveris, ieskaitot tomcat, molu, pakaļdzīšanos un tīklu.
Iepazīšanās ar izplatītākajiem tīmekļa konteineriem
Tomcat
Tomcat šobrīd ir iekļauts Apache projektā, un oficiālā saite irHipersaites pieteikšanās ir redzama. Tomcat ir galvenais Java tīmekļa serveris, tāpēc tas ir ļoti stabils un nobriedis, un kopiena ir aktīva un bagāta ar dokumentāciju un resursiem. Tomcat atbalsta Http, Http/2, AJP, WebSocket protokolus un atbalsta Servlet 6.0
Mola
Jetty ir serveris, ko nodrošina Eclipse, oficiālā saite irHipersaites pieteikšanās ir redzama. Tas ir vieglāks nekā Tomcat, un tam ir savs asinhronais atbalsts. Jetty atbalsta Http, Http/2, Http/3, AJP, WebSocket protokolus un atbalsta Servlet 6.0
Netijs
Netty ir laika vadīta asinhrona tīkla sistēma, kas tiek plaši izmantota augstas veiktspējas tīmekļa lietojumprogrammās, īpaši servera puses lietojumprogrammās, kas apstrādā lielu skaitu vienlaicīgu savienojumu, oficiālā saite irHipersaites pieteikšanās ir redzama. Netty atbalsta gandrīz visus protokolus, ieskaitot SSL / TLS, HTTP, HTTP / 2, HTTP / 3, WebSockets, DNS, SPDY, SMTP utt
Zem vilkšanas
Undertow ir serveris, ko nodrošina JBoos, oficiālā adrese irHipersaites pieteikšanās ir redzama. Undertow raksturo vieglums, augsta veiktspēja un vietējais resursu patēriņš, vienlaikus atbalstot iegultās lietojumprogrammas un mikropakalpojumus. Undertow atbalsta Http, Http/2, WebSocket protokolus un atbalsta Servlet 4.0
Apache Tomcat
Apache Tomcat ir plaši izmantots tīmekļa serveris un servlet konteiners. Tā ir noklusējuma izvēle tradicionālajām Spring Boot lietojumprogrammām, pateicoties tās izturībai, ērtai lietošanai un saderībai ar Servlet API.
Galvenās iezīmes:
Pamatojoties uz Servlets: Tomcat ir veidots ap Servlet API, kas padara to ideāli piemērotu tradicionālajām Spring MVC lietojumprogrammām. Bloķēšana I/O: Tomcat darbojas pēc viena pavediena modeļa katram pieprasījumam, kas nozīmē, ka katru ienākošo pieprasījumu apstrādā atsevišķs pavediens. Vienkārša konfigurācija: Tomcat var viegli iestatīt un konfigurēt ar Spring Boot, padarot to ideāli piemērotu plašam tīmekļa lietojumprogrammu klāstam.
Iekšējā arhitektūra
Savienotāji: pārvaldiet tīkla savienojumus, pieņemiet un apstrādājiet HTTP pieprasījumus. Konteiners: atbildīgs par servlet dzīves cikla pārvaldību, ieskaitot ielādi, inicializāciju un izsaukšanu. Vītņu modelis: Tomcat izmanto pavedienu baseinus, kur katru pieprasījumu apstrādā atsevišķs pavediens baseinā. Šis modelis ir vienkāršs, bet var izraisīt mērogojamības problēmas ar lielu slodzi pavedienu sadursmes un atmiņas pieskaitāmo izdevumu dēļ.
Scenārija piemērs: paralēlo pieprasījumu apstrāde
Aplūkosim scenāriju, kad Tomcat serverī nonāk pieci paralēli pieprasījumi:
Viens pavediens katram pieprasījumam: Tomcat piešķir atsevišķu pavedienu katram no pieciem pieprasījumiem no sava pavedienu kopuma. I/O bloķēšana: katrs pavediens sinhroni apstrādā savus pieprasījumus, bloķējot, ja ir nepieciešamas kādas I/O operācijas, piemēram, datu bāzes izsaukumi.
Resursu pārvaldība: ja pavedienu pūlam ir pietiekami daudz brīvu pavedienu, visi pieci pieprasījumi tiek apstrādāti vienlaicīgi. Ja nē, citi pieprasījumi gaidīs rindā, līdz būs pieejams pavediens.
Nopelniem:
Vienkārši un viegli saprotami. Ideāli piemērots tradicionālajām tīmekļa lietojumprogrammām. Nobriedusi, stabila un ar plašu kopienas atbalstu.
Trūkums:
Ierobežota mērogojamība pie lielas slodzes pavediena pieskaitāmo izmaksu dēļ. Lielāks atmiņas patēriņš vienā pieprasījumā.
Netijs
Netty ir augstas veiktspējas, asinhrona notikumu vadīta tīmekļa lietojumprogrammu sistēma. Tas ir Spring WebFlux noklusējuma ietvars, kas paredzēts responsīvai programmēšanai.
Galvenās iezīmes:
Notikumu vadīts: Netty izmanto notikumu vadītu arhitektūru, padarot to piemērotu liela apjoma vienlaicīgu savienojumu efektīvai apstrādei. Nebloķējošs I/O: Netty izmanto nebloķējošu I/O, ļaujot apstrādāt daudzus savienojumus ar mazāku pavedienu. Mērogojamība: Paredzēts augstas vienlaicīgības, zema latentuma un augstas caurlaidspējas lietojumprogrammām.
Iekšējā arhitektūra
Notikumu cilpa: Netty galvenā sastāvdaļa ir notikumu cilpa, kas asinhroni pārvalda I/O operācijas. Notikumu cilpas grupā ir viena vai vairākas notikumu cilpas. Kanāls: apzīmē savienojumu, piemēram, ienākošo HTTP pieprasījumu, un ir saistīts ar notikumu cilpu. Vītnes modelis: Netty izmanto nelielu skaitu pavedienu, lai apstrādātu lielu skaitu savienojumu. Katra notikumu cilpa darbojas vienā pavedienā un apstrādā vairākus kanālus, padarot to ļoti mērogojamu.
Scenārija piemērs: paralēlo pieprasījumu apstrāde
Apsveriet scenāriju, kad Netty serverī nonāk pieci paralēli pieprasījumi:
Notikumu vadīts modelis: Netty izplata piecus pieprasījumus savā notikumu cilpā. Nebloķējoša I/O: darbība nebloķē notikumu cilpas pavedienu. Tā vietā I/O operācijas tiek apstrādātas asinhroni, ļaujot vienam un tam pašam pavedienam efektīvi pārvaldīt vairākus savienojumus.
Mērogojamība: Tā kā Netty nav bloķējošs, tas var apstrādāt lielu skaitu savienojumu ar salīdzinoši nelielu pavedienu skaitu.
Nopelniem:
Ļoti efektīvs I/O intensīviem uzdevumiem. Izcila mērogojamība un veiktspēja augstā vienlaicīgumā. Ideāli piemērots reaktīvai programmēšanai un mūsdienīgām tīmekļa lietojumprogrammām.
Trūkums:
To ir sarežģītāk saprast un konfigurēt. Salīdzinot ar tradicionālajām servlet lietojumprogrammām, ir nepieciešams cits programmēšanas modelis (reaktīvs).
Secinājums
Netty un Tomcat apkalpo dažādas jomas serveru sistēmu jomā. Netty ir ļoti elastīga pamatsistēma, kas paredzēta pielāgotiem tīkla protokoliem un augstas veiktspējas scenārijiem; Tomcat ir pārbaudīta izvēle Java tīmekļa lietojumprogrammām, kas atbilst Java EE un Jakarta EE standartiem. Izvēle starp abiem ir atkarīga no projekta īpašajām vajadzībām, neatkarīgi no tā, vai tā ir tīmekļa servera izveide ar pielāgotiem protokoliem vai tradicionāla tīmekļa lietojumprogramma.
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama. |