2014-02-13 244 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保持高用量的產品。 –