apache和tomcat到底是神马关系

原创 2012年03月31日 12:53:51

用了这么久的tomcat,其实一直也没搞懂,apache到底是不是就是tomcat。结果,,,不是一个东西。

apache是httpserver。而tomcat仅仅是java servlet容器。

在tomcat集群之前添加一层apache,有以下好处:

1. tomcat不建议用root跑,而linux下面不可以用非root帐号跑80端口 (除了apache外,也可以用iptables)
2. 用mod_jk做软负载均衡
3. tomcat是单一的java servlet container,如果没有apache则不可以运行php, perl等程序
4. 简单的IMAGE/HTML/ARCHIVE文件在tomcat上也是经过java线程处理,比较浪费资源。apache处理静态网页的速度比较好。

5.Socket handling(姑且认为是连接)/系统稳定性。Apache在处理错误链接上优于Tomcat。主要原因是Tomcat所有的连接都交给JVM来处理,而JVM是跨平台的,问题是跨平台的优化是一个严峻的考验。大部分时间java程序都是正常的,但是当情况非常恶劣时,例如:非常频繁的掉线,无效数据包,无效IP的无效请求。Apache比基于JVM的程序要好。


另外,http://bbs.chinaunix.net/thread-653582-1-1.html这里介绍了使用apache做软负载均衡,同时tomcat集群会话保持的。

看看wiki怎么解释jk模块

What is JK (or AJP)?

AJP is a wire protocol. It an optimized version of the HTTP protocol to allow a standalone web server such as Apache to talk to Tomcat. Historically, Apache has been much faster than Tomcat at serving static content. The idea is to let Apache serve the static content when possible, but proxy the request to Tomcat for Tomcat related content.


mod_jk is mature, stable and extremely flexible.. It is under active development by members of the Tomcat community.

由于 tomcat 的 HTTP 处理部分都由 Java 所写(5.5.12 版本以后出现了 native 库,用以提高其 I/O 和 SSL 的性能),在高并发的情况下负载较高。而 apache 对于静态文件的处 理能力比 tomcat 强,所以 tomcat 开发组开发了与 apache 结合使用的 mod_jk 模块。该协议 由 apache 作请求代理,将 HTTP 协议的请求转化为 AJP 协议包,并传给后端的 tomcat。mod_jk 和 apache 现在普遍使用 AJP1.3 协议。它是一个二进制格式的协议,比 字符格式的 HTTP 协议解析速度要快。
除了性能的提升,mod_jk 另外的一个作用可以实现 apache 与 tomcat 一对多的对应, 使后端 tomcat 负载均衡。mod_jk 也提供 apache 与 tomcat 链接情况的监控。
mod_jk 模块的典型工作流程是这样的:一个 HTTP 请求过来,mod_jk 模块根据其 URI 选择合适的 worker 来进行处理。如果是lb_worker(负载均衡的 worker),就再根据各种条件选择后台合适的 ajp_worker(处理 AJP 协议的 worker)。ajp_worker 将 HTTP 协议的包, 组装成 AJP 协议格式的包,然后选取一条空闲的链接,发送给后台的 tomcat 服务器。等到后台将数据发送过来时,接收并解析 AJP 协议,重新组装成 HTTP 协议,然后把结果发送给 客户端。

Apache与Tomcat的关系?

以前自学过java一段时间,后来改行做PHP, 学习Java的时候只知道安装 tomcat 容器运行jsp文件,接触php后使用apache Web服务器,一直没搞清楚,现在详细了解一下两者的关系:...
  • JerryCorbitt
  • JerryCorbitt
  • 2015年04月17日 14:05
  • 1486

tomcat 和 apache跟CGI都有什么关系呢?

tomcat 和 apache跟CGI都有什么关系呢? IIS和古老的PWS都是win下运行的《web服务程序》对吧?这下边跑的是.asp对吧?这些不会跨平台对吧? 《web服务程序》是:apa...
  • linuxheik
  • linuxheik
  • 2016年07月09日 10:36
  • 1146

apache和tomcat的区别

做了一年的JAVA,经常使用 apache的tomcat来发布tomcat服务器端的文件,最近向做个PHP服务器,来发布自己的Blog,才得知还有个apache服务器。看了些资料,才得知他们有以下区别...
  • coomon2000
  • coomon2000
  • 2007年08月28日 10:06
  • 4531

Apache 屏蔽YisouSpider(一搜蜘蛛\神马)的方法

网站的robot已经拒绝了YisouSpider,访问记录还有大量的YisouSpider 访问记录,导致网站反应变慢甚至宕机 方法一:通过Deny from IP 的方法,拒绝指定IP的访问:例如:...
  • wykun0808
  • wykun0808
  • 2016年06月12日 16:11
  • 913

浅谈tomcat之apache-maven

apache-maven简介: Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(POM)概念,Maven利...
  • u010391029
  • u010391029
  • 2015年06月20日 13:04
  • 1050

tomcat 与 nginx,apache是什么关系

Apache,指的应该是Apache软件基金会下的一个项目——Apache HTTP Server Project;Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用...
  • zy_281870667
  • zy_281870667
  • 2016年04月25日 16:18
  • 409

ul 和 li 到底是神马关系

不懂========= ============所以先mark了=========== 接触html和css也有些时日了,但是很多简单的东西就是想不明白,在制作导航的练习中,我们经常这样写...
  • zxleezx
  • zxleezx
  • 2012年03月09日 17:19
  • 693

Apache80指向tomcat8080

httpd-vhosts文件中加入:         ServerName www.xxx.cn         ServerAlias www.xxx.cn xxx.cn         ...
  • ni_10507321
  • ni_10507321
  • 2016年08月05日 13:48
  • 533

Apache、Tomcat、JBoss、WebLogic的区别与关系

Apache全球应用最广泛的http服务器,免费,出自apache基金组织 Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器...
  • feixueqianer
  • feixueqianer
  • 2011年03月22日 18:55
  • 12265

apache 和 jakarta各是什么?tomcat与它两有什么关系?

apache 和 jakarta各是什么?tomcat与它两有什么关系? 網絡上的不同回答: 1: apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。j...
  • ccecwg
  • ccecwg
  • 2014年04月19日 17:43
  • 2130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache和tomcat到底是神马关系
举报原因:
原因补充:

(最多只允许输入30个字)