La diferencia entre Tomcat y Jetty
La diferencia entre Jetty y Tomcat
Como no he estudiado Tomcat, es difícil decir la diferencia. Aquí hay un resumen de algunos comentarios en Internet y lo que he aprendido. (extraído de Xu Lingbo).
La arquitectura de Jetty se puede ver en el análisis anterior. Todos sus componentes están implementados en base a Handler. Por supuesto, también es compatible con JMX. Pero las principales extensiones funcionales se pueden implementar usando Handler. Se puede decir que Jetty es una arquitectura orientada a Handler, al igual que Spring es una arquitectura orientada a Bean, iBATIS está orientada a declaraciones y Tomcat está construido con contenedores de varios niveles. Sus diseños arquitectónicos deben tener un "espíritu" y. todo basado en Los otros componentes de este "Yuan Shen" son todos cuerpos físicos.
Desde la perspectiva de la plantilla de diseño, el diseño de Handler es en realidad un modelo de cadena de responsabilidad. La clase de interfaz HandlerCollection puede ayudar a los desarrolladores a construir una cadena, y la otra clase de interfaz ScopeHandler puede ayudarlo a controlar la secuencia de acceso. de esta cadena. Otra plantilla de diseño utilizada es el patrón de observador. Este patrón de diseño controla todo el ciclo de vida de Jetty. Siempre que herede la interfaz LifeCycle, sus objetos se pueden entregar a Jetty para una administración unificada. Por lo tanto, ampliar Jetty es muy simple y fácil de entender. La simplicidad de la arquitectura general también brinda beneficios incomparables y se puede ampliar y personalizar fácilmente.
En comparación, Tomcat está muy inflado y el diseño general de Tomcat es muy complicado. Como se mencionó anteriormente, el núcleo de Tomcat es el diseño de sus contenedores, desde el servidor hasta el servicio, el motor y otros contenedores. . Como servidor de aplicaciones, no hay nada de malo en el diseño. El diseño en capas del contenedor también es para una mejor expansión. Este método de expansión expone la estructura interna del servidor de aplicaciones a usuarios externos, de modo que si desea expandir Tomcat, desarrolle. El personal primero debe comprender la estructura de diseño general de Tomcat antes de saber cómo ampliarlo de acuerdo con sus especificaciones. Esto aumenta de manera invisible el costo de aprendizaje de Tomcat. No solo contenedores, de hecho, Tomcat también tiene un método de diseño basado en la cadena de responsabilidad. El diseño de Vavle de la tubería en serie es similar al Handler de Jetty. Implementar un Vavle usted mismo es tan difícil como escribir un Handler. En la superficie, Tomcat es más poderoso que Jetty, porque Tomcat ya ha hecho mucho trabajo por usted, mientras que Jetty solo le dice qué puede hacer y cómo hacerlo, y depende de usted implementarlo.
Simplemente comparar el rendimiento de Tomcat y Jetty no tiene mucho sentido. Solo se puede decir que en ciertos escenarios de uso, su rendimiento es diferente. Porque se dirigen a diferentes escenarios de uso. Desde un punto de vista arquitectónico, Tomcat tiene la ventaja de manejar una pequeña cantidad de conexiones muy ocupadas, es decir, si el ciclo de vida de la conexión es corto, el rendimiento general de Tomcat será mayor.
Por el contrario, Jetty puede manejar una gran cantidad de conexiones al mismo tiempo y mantener estas conexiones durante mucho tiempo. Por ejemplo, algunas aplicaciones de chat web son muy adecuadas para utilizar Jetty como servidor. La web Wangwang de Taobao utiliza Jetty como motor Servlet.
Además, debido a que la arquitectura de Jetty es muy simple, como servidor puede cargar componentes bajo demanda, de modo que se pueden eliminar componentes innecesarios, lo que puede reducir de manera invisible la sobrecarga de memoria del propio servidor y el procesamiento de un La solicitud también puede reducir la sobrecarga de memoria de los objetos temporales y también mejorará el rendimiento.
Además, Jetty usa la tecnología NIO de forma predeterminada, que es más ventajosa al procesar solicitudes de E/S. Tomcat usa BIO de forma predeterminada. Al procesar recursos estáticos, el rendimiento de Tomcat no es tan bueno como el de Jetty.
Espero que te ayude