A Spring Boot-alapú webalkalmazásokban a spring-boot csomag beépített webszervert tartalmaz, beleértve a tomcatet, jettyt, undertow és nettyt.
Bevezetés a gyakori webkonténerek világába
Kandúr
A Tomcat jelenleg az Apache projektben van, és a hivatalos link:A hiperlink bejelentkezés látható. A Tomcat egy mainstream Java webszerver, így nagyon stabil és érett, a közösség pedig aktív és gazdag dokumentációban és forrásokban. A Tomcat támogatja a Http, Http/2, AJP, WebSocket protokollokat, és támogatja a Servlet 6.0-t
Móló
A Jetty egy szerver, amelyet az Eclipse biztosít, a hivatalos link a következőA hiperlink bejelentkezés látható. Könnyebb, mint a Tomcat, és saját aszinkron támogatással rendelkezik. A Jetty támogatja a Http, Http/2, Http/3, AJP, WebSocket protokollokat, és támogatja a Servlet 6.0-t
Netty
A Netty egy idővezérelt aszinkron hálózati keretrendszer, amelyet széles körben használnak nagy teljesítményű webalkalmazásokban, különösen szerveroldali alkalmazásokban, amelyek sok egyidejű kapcsolatot kezelnek, hivatalos kapcsolat aA hiperlink bejelentkezés látható. A Netty szinte minden protokollt támogat, beleértve az SSL/TLS-t, HTTP, HTTP/2, HTTP/3, WebSockets, DNS, SPDY, SMTP stb.
Hullámtörés
Az Undertow egy szerver, amelyet a JBoos biztosít, hivatalos címe:A hiperlink bejelentkezés látható. Az Undertow könnyű, nagy teljesítményű és helyi erőforrás-fogyasztása jellemzi, miközben támogatja a beágyazott alkalmazásokat és mikroszolgáltatásokat. Az Undertow támogatja a Http, Http/2, WebSocket protokollokat, és támogatja a Servlet 4.0-t
Apache Tomcat
Az Apache Tomcat egy széles körben használt webszerver és szervlet konténer. Ez a hagyományos Spring Boot alkalmazások alapértelmezett választása a robusztussága, könnyű használata és a Servlet API-val való kompatibilitása miatt.
Főbb jellemzők:
Servleteken alapul: Tomcat a Servlet API köré épül, ami ideálissá teszi hagyományos Spring MVC alkalmazásokhoz. I/O blokkolása: Tomcat egy szál modellén működik, ami azt jelenti, hogy minden bejövő kérést külön szál kezel. Egyszerű beállítás: A Tomcat könnyen beállítható és konfigurálható a Spring Boot-tal, így ideális széles körű webalkalmazásokhoz.
Belső architektúra
Csatlakozók: Hálózati kapcsolatok kezelése, HTTP kérések elfogadása és feldolgozása. Container: Felelős a szervlet életciklusának kezeléséért, beleértve a betöltést, inicializálást és meghívást. Szálmodell: A Tomcat szálpoolokat használ, ahol minden kérést külön szál kezel a poolban. Ez a modell egyszerű, de nagy terhelés alatt skálázhatósági problémákat okozhat a szálak-vita és memóriaterhelés miatt.
Példá: Párhuzamos kérések kezelése
Vegyünk egy olyan helyzetet, amikor öt párhuzamos kérés érkezik a Tomcat szerverre:
Egy szál kérésenként: a Tomcat külön szálat rendel az öt kéréshez a szálkészletéből. I/O blokkolása: Minden szál szinkronban dolgozza fel kéréseit, blokkolva, ha bármilyen I/O műveletre van szükség, például adatbázis-hívásokat.
Erőforrás-kezelés: Ha a szálpoolban elegendő szabad szál van, mind az öt kérést egyszerre dolgozzák fel. Ha nem, akkor más kérések a sorban várnak, amíg egy szál elérhetővé válik.
Érdem:
Egyszerű és könnyen érthető. Ideális hagyományos webalkalmazásokhoz. Érett, stabil és kiterjedt közösségi támogatással.
Hiány:
Korlátozott skálázhatóság nagy terhelés alatt a szál túlterhelése miatt. Nagyobb memóriafogyasztás kérésenként.
Netty
A Netty egy nagy teljesítményű, aszinkron, eseményvezérelt webalkalmazás-keretrendszer. Ez a Spring WebFlux alapértelmezett keretrendszere, amely reszponzor programozásra készült.
Főbb jellemzők:
Eseményvezérelt: A Netty eseményvezérelt architektúrát használ, így alkalmas nagy mennyiségű egyszerre történő kapcsolat hatékony kezelésére. Nem blokkoló I/O: A Netty nem blokkoló I/O-t használ, így kevesebb szálmal képes sok kapcsolatot kezelni. Skálázhatóság: Nagy egyidejű megoldásra, alacsony késleltetésre és nagy áteresztőképességű alkalmazásokra tervezték.
Belső architektúra
Eseményhurok: A Netty alapvető komponense az eseményhurok, amely aszinkron módon kezeli az I/O műveleteket. Egy eseményhurok csoport egy vagy több eseményhurkot tartalmaz. Csatorna: Egy kapcsolatot, például egy bejövő HTTP kérést képvisel, és egy eseményciklushoz van társítva. Szálmodell: A Netty kis számú szálat használ a sok kapcsolat kezelésére. Minden eseményciklus egyetlen szálban fut, és több csatornát kezel, így nagyon skálázható.
Példá: Párhuzamos kérések kezelése
Vegyünk egy olyan helyzetet, amikor öt párhuzamos kérés érkezik a Netty szerverre:
Eseményvezérelt modell: A Netty öt kérést oszt el az eseményciklusában. Nem blokkoló I/O: A művelet nem blokkolja az eseményhurok szálát. Ehelyett az I/O műveleteket aszinkron módon kezelik, így ugyanaz a szál hatékonyan kezeli több kapcsolatot.
Skálázhatóság: Nem blokkoló jellege miatt a Netty viszonylag kevés szállal képes sok kapcsolatot kezelni.
Érdem:
Rendkívül hatékony az I/O-intenzív feladatokhoz. Kiváló skálázhatóság és teljesítmény magas egyidejű szinten. Ideális reaktív programozáshoz és modern webalkalmazásokhoz.
Hiány:
Bonyolultabb megérteni és konfigurálni. A hagyományos szervlet-alapú alkalmazásokhoz képest más (reaktív) programozási modell szükséges.
következtetés
A Netty és a Tomcat különböző területeket szolgálnak a szerverkeretrendszerek területén. A Netty egy rendkívül rugalmas alapkeret, amelyet egyedi hálózati protokollokhoz és nagy teljesítményű helyzetekhez terveztek; A Tomcat bevált választás olyan Java webalkalmazásokhoz, amelyek megfelelnek a Java EE és a Jakarta EE szabványoknak. A kettő közötti választás a projekt konkrét igényeitől függ, akár egy webszerver építéséről egyedi protokollokkal, akár hagyományos webalkalmazásról.
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható. |