2016-03-24 80 views
1

問題:使用Nginx和Netty構建代理服務器有哪些優缺點?Netty vs Nginx:基於性能,內存管理,內存佔用的優缺點

闡述的問題:

我們正在努力實現一個代理服務器(正向或反向代理),這是擺在服務前,需要的可以在我們的服務提供良好的實踐護理。

因此,我們正在評估市場上主要提供的不同解決方案,主要是Nginx和Netty。因此,當我們開始對Nginx進行研究時,我們遇到了大量積極的博客,這表明Nginx非常快速,可以通過將自定義模塊編寫爲插件到Nginx來輕鬆進行配置。

但是當我們在Netty上做了POC時,我們在使用Netty 4時獲得了更好的性能數據。所以我想知道是否有人在Nginx和Netty之間進行了一些比較,以及沒有使用Netty的原因是什麼Netty作爲反向/轉發代理解決方案。我們擔心與Java Server解決方案相關的GC問題,因此我們希望在繼續解決方案之前瞭解Nginx和Netty的優點和缺點。

謝謝, Vinay。

回答

0

我還沒有看到或做過任何並排的比較,但就Netty而言,通過一些仔細的編碼和使用池式直接內存緩衝區,您不應該看到太多的GC活動。

1

我不知道詳細的比較,因爲你沒有在這裏比較蘋果和蘋果。 Netty是一個非常低級別的java框架,而nginx是一個大部分完整的代理。我不確定你在netty上爲你的例子寫了什麼。沒有做任何測試我的自我,我想在netty上做一個比nginx更快的功能代理是非常困難的。

我想如果你想要一個簡單的代理服務器,你應該使用nginx,因爲它最有可能擁有基本代理所需的全部功能。 nginx是快速和成熟的,所以它應該對基本用例做得很好。

如果您正在尋找一個更復雜的代理,並帶有特殊的插件。也許像ratelimiting /自定義身份驗證等,那麼它可能是值得考慮使用netty。這些東西可以建立在nginx上,但需要使用Lua腳本。您可能更喜歡使用Java作爲開發人員。

如果你最終會用netty,只要記住你可能不得不重新實現可能複雜的功能,如後端負載平衡。

我使用一個寫在netty上的負載平衡器,所以我不想讓你灰心。我只想指出,其中一個是預先優化的反向代理,而另一個則是您必須從頭開始編寫自己的代碼。

+0

感謝威爾遜的迴應。我的代理服務器的實際目標是它會停留在每個服務上,並處理所有額外的東西,如身份驗證,指標發佈,斷路器的東西等等。所以它不是完全用於反向代理,而是給出一個基於插件的代理服務所有者可以設置它們的身份驗證,超時等。因此需要編寫大量自定義處理程序。那麼你更喜歡Netty/Nginx嗎?爲了表現我已經讀過Netty 4上的一些博客,聲稱它有更快的速度,你有沒有關於這方面的任何信息? – user2604844