Tomcat简介
Tomcat是⼀款我们平时开发过程中最常⽤到的Servlet容器。本系列博客会记录Tomcat(以Tomcat 7为列)的整体架构、核⼼组件、IO线程模型、请求在Tomcat 内部的流转过程以及⼀些Tomcat调优的相关知识点。⼒求能达到以下⼏个⽬的:
更加熟悉Tomcat的⼯作机制,⼯作中遇到Tomcat相关问题能够快速定位,从源头来解决;
对于⼀些⾼并发场景能够对Tomcat进⾏调优;
通过对Tomcat源码的分析,吸收⼀些Tomcat的设计的理念,应⽤到⾃⼰的软件开发过程中。
1. 什么是Tomcat
是⼀款Apache下⾯的开源的Servlet容器,实现了对Servlet和JSP规范的⽀持。另外 Tomcat 本⾝内含了⼀个 HTTP 服务器,所以也可以被当作⼀个 Web 服务器来使⽤。但是Tomcat作为⼀个Web服务器,它对静态资源的处理能⼒要⽐Apache或者Nginx这类的Web服务器差很多,所以我们经常将Apache和
Tomcat(或者是Nginx和Tomcat)组合使⽤,Apache来充当Web服务器处理静态资源的请求,Tomcat充当Servlet容器来处理动态请求。
Web服务器和应⽤服务器
Web服务器,是指⼀台在互联⽹上具有独⽴IP地址的⾼性能计算机,可以向互联⽹上的⽤户提供“WWW(万维⽹)、Email(电⼦邮件)和FTP(⽂件传输)”等各种互联⽹服务。根据Web服务器提供的服务类型的不同,Web服务器⼜可以分为Http服务器,Email服务器和FTP服务器等。
⼀般的Web服务器只提供页⾯浏览,⽂件下载和邮件等服务。如果要产⽣⼀些动态的响应,Web服务器⼀般不会⾃⼰处理,⽽是会委托给⼀些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets和ASP(Active Server Pages)等脚本。这些能处理动态响应的服务器就称为应⽤服务器。
2. 技术对⽐
作为⼀名Java开发⼈员,你也⼀定听说过或者使⽤过⼀些其他的服务器中间件软件,⽐如JBOSS、Weblogic、Websphere、Apache、Nginx、Jetty和Undertow。那么这些软件和tomcat有什么区别?各⾃的适⽤场景⼜是什么?下⾯来做下简单的介绍。
1. Weblogic和Websphere
这边可以将Weblogic和Websphere归为⼀类,他们都是收费软件,⽽且价格不菲。但是收费肯定有收费的原因,WebLogic 与 WebSphere 对业内多种标准有全⾯⽀持,包括 EJB、 JSB、 JMS、 JDBC、XML 和 WML,使 Web 应⽤系统的实施更为简单,并且保护了投资,同时也使基于标准的解决⽅案的开发更加简便。另外他们的安全性也⾮常⾼。WebLogic 和 WebSphere 的技术⽂档和相关服务也很到位,如果你的服务器哪⼀天出问题了,只要你能出的起钱,他们的技术⼯程师⽴刻就能出现在你⾯前。
2. JBOSS
JBoss 是⼀个管理 EJB 的容器和服务器,⽀持 EJB 1.1、EJB 2.0 和 EJB3.0 的规范。但 JBoss 核⼼服务不包括⽀持 servlet/JSP 的 WEB 容器,⼀般与Tomcat 或 Jetty 绑定使⽤。JBOSS也是免费的。
为什么Weblogic、Websphere和JBOSS等服务器在我们平时开发中很少被⽤到?
经过上⾯的介绍我们发现Weblogic和Websphere有很多优点:对业界标准全⽅位的⽀持、安全性⾼、对并发的⽀持量⼤以及到位的技术⽀持。但是为什么我们在开发过程中很少使⽤呢?最重要的原因还是因为这些软件价格昂贵。现在开发过程中我们对EJB这种规范使⽤越来越少,⽽且软件开发⼈员的⽔平逐渐提升,硬件价格下降。我们发现Weblogic和Websphere给我们带来的优势我们完全可以通过其他途径获得,为什么还要花⼤价钱呢?另外⾮开源的资料也较少,这些原因加在⼀起导致Weblogic和Websphere在我们平时开发中⼏乎不会使⽤。当然如果你们公司是⼀个不缺钱的公司的话,完全可以使⽤。
⾄于JBoss我们发现它是通过集成Tomcat来获得Servlet容器功能的,⽽它本⾝的EJB功能也越来越式微,JBoss的使⽤量⾃然上不去。因为现在都只需要Servlet 容器功能,为什么不直接使⽤Tomcat呢?
3. Jetty
Jetty也是⼀个Servlet引擎,和Tomcat相⽐,Jetty的架构设计更加简单。在性能上两者有各⾃的使⽤场景。从架构上来看 Tomcat 在处理少数⾮常繁忙的连接上更有优势,也就是说连接的⽣命周期如果短的话,Tomcat 的总体性能更⾼。⽽ Jetty 刚好相反,Jetty 可以同时处理⼤量连接⽽且可以长时间保持这些连接。例如像⼀些 web 聊天应⽤⾮常适合⽤ Jetty 做服务器,像淘宝的 web 旺旺就是⽤ Jetty 作为 Servlet 引擎。
4. Undertow
和Jetty类似,Undertow也是⼀个Servlet容器。
5. Apache
Apache是⼀款⾼性能的Web服务器,和Tomcat相⽐,Apache更加专注于提供⾼性能的Web服务,⽽Tomcat是最主要的还是被当做Servlet容器来使⽤的,虽然它也有Web服务的功能,但这不是Tomcat的主要功能也不是它擅长的功能。所以Apache和Tomcat能搭配成⼀个好的组合:Apache提供Web服务,处理静态资源,Tomcat作为Servlet容器处理动态请求。
6. Nginx
Nginx和Tomcat的关系和Apche和Tomcat的关系差不多。Nginx也是⼀个⾼性能的Web服务器,同时我们还经常拿Nginx当做反向代理服务器和负载均衡服务器。
3. Tomcat的优缺点
servlet和tomcat的关系Tomcat开源,免费,经过长时间的发展(先发优势),它已经⼴泛的被市场接受和认可,相对 Jetty 和 Undertow来说 Tomcat 还是更加稳定和成熟的,尤其在企业级应⽤⽅⾯,Tomcat 仍然是第⼀选择。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。