2014-02-13 256 views
25

好吧,我已经阅读了一篇关于wiki的小文章,它解释了AJP。 基本上这个协议用于Apache和应用服务器之间的通信。 但为什么一个人需要它呢?为什么不使用纯粹的http?什么是AJP协议用于?

回答

27

具体而言,并没有真正覆盖在ehow文章,有一些非平凡的开销上的请求解析HTTP头和创造他们回应。如果您正在使用Web代理服务器向您的应用程序服务器前进,AJP允许您跳过额外的解析并仅在代理服务器和应用程序服务器之间传递有效的二进制表示。如果你使用apache/mod_jk到tomcat,还有其他好处,比如简单连接池和紧密集成。

客户< - HTTP/S->代理< - HTTP/S - >应用

VS

客户< - HTTP/S->代理< - AJP - >应用

12

AJP (Apache Jserv Protocol)基本上是binary protocol,它允许将FE Web服务器的代理请求反转到BE应用服务器,有效地传播所有需要的信息以使Req-Res流程成功继续。 通常,AJP用于使用粘滞会话策略进行负载均衡:由于传输的标头数据,FE Web服务器可以在使用特定模块(如mod_jk)的BE对等设备上实现负载平衡。

AJP使用,主要是因为:

  1. 它比任何HTTP交换更好的性能,
  2. 它与广泛使用反向代理模块集成(即mod_jk的,mod_proxy的),
  3. Tomcat的实现提供了丰富的API协议是横向的:HTTP(s)数据被无缝地传播,并且可以通过简单的API调用(规范的getXYX(),非常有效且直接)进行检索,所以它就像使用HTTP以更高的速度工作。

当然,我认为这是一个经过验证的解决方案,拥有近20年的成熟历史:它成功地用于生产环境。

+0

还有一个原因#0:'mod_jk'早于Apache JServ(一种长期停产的产品)中的HTTP的使用。历史上,'mod_jk'提供了许多通过'mod_proxy'不可用的功能。目前,这两款产品已基本达到功能平价,因此动力是唯一让AJP保持高用量的产品。 –