您的位置:首页 > 运维架构 > Tomcat

使用APR连接器 -整合Tomcat与Apache

2011-02-12 09:55 405 查看

使用APR连接器 -整合Tomcat与Apache

文章编辑: 国粹小生
文章发表于: 2010-10-26 16:09
查看上一篇 查看下一篇

从Tomcat 5.5开始,Tomcat包含叫做APR连接器的另一个Web服务器实现方法。它是在Java和C编程语言中实现的。

APR连接器的主要目标是提供高性能、高稳定性及易于与其他C/C++源码整合,同时仍然提供至少与Tomcat的JIO连接器同样多的功能(通过实现象开源C代码一样的底层网络编码,与JVM的嵌入式网络编码相反)。

APR是ApachePortable Runtime的简称,下文称APR(Apache便携式运行时),这是一个独立的开源项目,其目标被陈述为“提供软件开发者可以编码的API,无论在哪个平台上编译这些软件,如果没有同等的行为,并一定要可预测。”

简而言之,APR是一个本地库文件,实现了如Apache httpd或Tomcat的网络服务器可利用的许多底层功能。

事实上,Apache httpd在APR-httpd的底层网络编码的顶端编译的是APR。要了解APR工程的更多信息,请参阅APR在http://apr.apache.org上的主页。

使用APR连接器,而不使用JIO或NIO的连接器,原因有以下几点:

1、HTTPS使用APR连接器可能会更快,因为APR连接器是叫做OpenSSL库文件的本地代码。而JIO和NIO连接器是纯粹的Java代码,并使用了纯粹的Java TLS/SSL编码,大家都知道,比OpenSSL要慢一些。但是,如果没有使用HTTPS,则不用关心这一点。

2、对于某些代理场合(主要是AJP),APR可能会更高效。对这种配置,具有最大吞吐量是比较重要的。

3、由于使用的sendfile(2)系统呼叫,所以APR被设计为处理大型静态文本文件(如提供媒体文件)时更高效。

4、任何连接器实现的所有底层网络编码都是固有的(native) (如JVM是在C/C++中编写的),因此,无论您是否更喜欢APR,取决于您是喜欢来自ASF还是JVM提供商提供的本地网络编码(native network code)。

5、APR一个被广泛接受的用于Web服务器的I/O实现,用C编程语言编写(供Apache httpd使用),而且工作正常。

6、在MS-Windows上,NIO连接器并没有真正起作用,因为NIO似乎在Windows上无法正常发挥作用,至少在使用Sun的Java VM时是这样。在其他操作系统上,这不成为问题。

7、APR使用了便携的、安全随机数产生器,从而Tomcat会话ID在Windows上默认是安全的。

8、APR还有一些其他功能是非常有用的,而核心Java平台并没有提供这些功能。关键是APR是不同于Java的实现,而且包含一组不同的功能。这些新功能可能会放在任何新版的APR中,而且可以修改APR连接器以充分利用这些功能。

Remy Maucherat(APR连接器的作者及坚定支持者之一)在这里提供了一点启示,发送邮件给Tomcat开发者,列出为什么它认为APR连接器很重要。除了明显令人感兴趣的功能(epoll/sendfile/openss1)之外,如笔者早期提到的那样,APR具有很多其他用途。

根据核心能力,把它放在Tomcat中,使其成为httpd的一个Java版本,而且将以非常简单的方式打开所有功能及可能。

假设某人做了衡量纯Java用户的工作,那么最好拥有,但这只是整体的一部分(而且需要APR)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: