ajp,apr,nio,http

本文探讨了Tomcat中AJP、APR及NIO的相关配置及其原理,介绍了AJP作为一种高效的数据传输协议如何工作,APR如何提高Tomcat性能,并讨论了NIO在解决速度差异上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在tomcat6的server.xml里边可以看到ajp和apr,nio相关配置信息。话说ajp1.3(Apache JServ Protocol)是定向包协议,跟http1.1那样是一种协议来的,使用二进制格式来传输可读性文本。如果WEB服务器通过TCP连接和 servlet容器连接。为了减少进程生成 socket的花费,WEB服务器和servlet容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请 求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
  而APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心。包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理 (共享内存,NT管道和UNIX sockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高 性能web服务器平台而不是简单作为后台容器。 所以呢,apr是可以和ajp,http结合使用的。
  nio(new io)又是什么,它早在jdk1.4就被引入了,一直以来好像也不是很多人关注这个。主要作用就是用来解决速度差异的。举个例子:计算机处理的速度和用户 按键盘的速度。这两者的速度相差悬殊。如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费:每一个线程都需要 珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。这nio是怎么做的?无非就是非阻塞,谁要给谁,用模式话语就是观察者模式 了。所以nio和ajp,http也是没冲突的。
  这么搞起来,io的方式就有apr,nio,普通io等,协议就有ajp,http等等,再加上带不带连接池什么什么的,在tomcat里边就有n多 种io+protocol组合可供选择了。至于那种方式比较好,也没什么定论,nio也不一定比no好,要不早就流行了。以前也试过nio,性能反而下降 了,还是要具体情况具体分析呀。tomcat6默认的配置是apr+http1.1,感觉这个配置还是相当合理的。呵,在这里也并不想比较哪个好点,只是 希望有新同学再看到这些概念的时候不会乱了分寸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值