Colección de citas famosas - Colección de firmas - Cómo elegir Tomcat y Jetty

Cómo elegir Tomcat y Jetty

Resume la mayor diferencia entre Tomcat y Jetty. En términos generales, la competitividad central de Tomcat es "madura y estable" porque ha pasado muchos años de pruebas de mercado y es ampliamente utilizado y admite aplicaciones de nivel empresarial más completas. Debido a esto, Tomcat es más complejo que Jetty en términos de estructura general y puede no ser tan conveniente como Jetty en términos de expansión de funciones.

Jetty es más joven, más conciso y compacto en diseño, relativamente simple en configuración y sus funciones se pueden expandir y personalizar fácilmente. Por ejemplo, podemos eliminar SessionHandler de Jetty para ahorrar recursos de memoria, por lo que Jetty aún puede. ser utilizado Se ejecuta en pequeños dispositivos integrados, como teléfonos móviles y decodificadores. Por supuesto, también podemos desarrollar un Handler nosotros mismos y agregarlo a la cadena Handler para ampliar las funciones de Jetty. Vale la pena mencionar que tanto Hadoop como Solr integran Jetty como servidor web.

Desde una perspectiva de diseño, la arquitectura de Tomcat se basa en un modelo de contenedor de varios niveles. Estos componentes del contenedor tienen una relación padre-hijo. Todos los componentes están adjuntos a este esqueleto, y este esqueleto no cambia. La expansión de las funciones de Tomcat también debe basarse en este esqueleto, por lo que Tomcat tiene un diseño relativamente complejo. Por supuesto, Tomcat también proporciona un mejor mecanismo de expansión. Por ejemplo, podemos personalizar una válvula, pero el costo de aprendizaje es relativamente alto. Jetty utiliza el modelo de cadena de responsabilidad Handler. Dado que la relación entre Handlers es relativamente flexible, Jetty proporciona HandlerCollection para ayudar a los desarrolladores a construir fácilmente una cadena de Handler, y también proporciona ScopeHandler para ayudar a los desarrolladores a controlar la secuencia de acceso de la cadena de Handler.

Después de hablar de muchas teorías, puede pensar que todavía es un poco abstracto. A continuación, usaremos un ejemplo para realizar pruebas de estrés a Tomcat y Jetty para ver cómo se desempeñan Tomcat y Jetty bajo la misma presión de tráfico. . Cabe señalar que normalmente comparamos resultados desde tres aspectos: rendimiento, latencia y tasa de error.

Primero, use el Tomcat predeterminado de Spring Boot como contenedor web integrado. Después de una ronda de pruebas de estrés, reemplace el contenedor web integrado con Jetty, realice otra ronda de pruebas y luego compare los resultados. Para facilitar la observación de varios indicadores, este experimento se realizó en la máquina de desarrollo local.

Dormimos durante 1 segundo durante el procesamiento de cada solicitud para simular adecuadamente el tiempo de espera de E/S de una aplicación web. El número de subprocesos del cliente JMeter es 100 y la prueba de estrés dura 10 minutos. Cree un informe resumido en JMeter. En esta página, puede ver varios indicadores estadísticos.

El primer paso es realizar una prueba de estrés a Tomcat.

Inicie el programa Spring Boot y JMeter durante 10 minutos. Los siguientes son los resultados de la prueba, que se dividen en dos partes:

En el segundo paso, reemplazamos el contenedor web Spring Boot con Jetty. están en pom. La dependencia spring-boot-starter-web en el archivo xml se modifica de la siguiente manera:

Compile y empaquete, inicie Spring Boot y luego inicie la prueba de esfuerzo de JMeter. resultados:

A continuación comparamos Tomcat y Jetty a través de una tabla:

De los datos de la tabla, podemos ver:

Por supuesto, debido a la Limitaciones del escenario de prueba, los datos anteriores no reflejan completamente el rendimiento de Tomcat y Jetty Real. Pero puede proporcionar alguna referencia cuando hacemos la selección: si el objetivo del sistema es consumir la menor cantidad de recursos posible y los requisitos de estabilidad no son tan altos, puede elegir el Jetty liviano si su sistema es una empresa más crítica para alto nivel; aplicaciones de nivel, se recomienda elegir Tomcat como una opción más segura.

Finalmente, resumamos la diferencia entre Tomcat y Jetty en una frase: Tomcat es como un ingeniero maduro que ha trabajado durante muchos años. No cometerá errores fácilmente ni perderá la cadena, pero tiene los suyos. Posee ideas y no comete errores fácilmente. Jetty es más bien una joven estrella en ascenso. Tiene una mente rápida y es muy maleable, pero a veces comete un pequeño error.