2016-03-24 14 views
1

Frage: Was sind die Vor- und Nachteile von Nginx und Netty für die Verwendung von Proxy-Server erstellen.Netty vs Nginx: Vor- und Nachteile auf Leistung, Speicherverwaltung, Speicherabdruck

Ausarbeiten das Problem:

Wir versuchen, einen Proxy-Server zu implementieren (vorwärts oder rückwärts Proxy), die vor einem Dienst gestellt wird, und kümmert sich um bewährte Verfahren, die auf unsere Dienstleistungen angewendet werden können.

Wir bewerten verschiedene Lösungen, die auf dem Markt verfügbar sind hauptsächlich Nginx und Netty. Als wir also anfänglich über Nginx recherchierten, stießen wir auf viele positive Blogs, die nahelegten, dass Nginx sehr schnell und einfach konfigurierbar ist, indem man die benutzerdefinierten Module in ein Plugin für Nginx schreibt.

Aber wenn wir einen POC auf Netty gemacht haben, haben wir viel bessere Leistungszahlen während der Verwendung von Netty 4. Also würde ich gerne wissen, ob jemand einen Vergleich zwischen Nginx und Netty durchgeführt hat und welche Gründe nicht verwendet werden Netty als Reverse/Forward-Proxy-Lösung. Wir sind besorgt über GC-Probleme, die mit Java Server-Lösungen verbunden sind. Daher möchten wir die Vor- und Nachteile von Nginx und Netty kennen, bevor wir mit einer Lösung fortfahren.

Danke, Vinay.

Antwort

0

Ich habe keine direkten Vergleiche gesehen oder gemacht, aber was Netty angeht, sollten Sie mit etwas sorgfältiger Codierung und der Verwendung von gepoolten direkten Speicherpuffern nicht viel GC-Aktivität sehen.

1

Mir sind keine detaillierten Vergleiche bekannt, da Sie Äpfel nicht mit Äpfeln vergleichen. Netty ist ein sehr niedriges Java-Framework, während nginx ein weitgehend vollständiger Proxy ist. Ich bin mir nicht sicher, was Sie für Ihr Beispiel auf Netty geschrieben haben. Ohne irgendwelche Tests zu machen, stelle ich mir vor, es wäre ziemlich schwierig, einen funktionalen Proxy auf netty zu machen, der schneller ist als nginx.

Ich denke, wenn Sie einen einfachen Proxy-Server wollen, sollten Sie mit Nginx gehen, da es wahrscheinlich die ganze Funktionalität haben wird, die Sie für einen grundlegenden Proxy benötigen. Nginx ist schnell und ausgereift, also sollte es für den grundlegenden Anwendungsfall sehr gut sein.

Wenn Sie einen komplexeren Proxy suchen, mit speziellen Plugins. Vielleicht Dinge wie Ratenbegrenzung/benutzerdefinierte Authentifizierung, etc., dann könnte es sich lohnen, Nety zu betrachten. Diese Dinge können auf nginx aufbauen, erfordern aber die Verwendung von Lua-Skripten. Vielleicht bevorzugen Sie Java als Entwickler.

Wenn Sie am Ende netty gehen, denken Sie daran, Sie müssen möglicherweise komplexe Features wie Backend Load Balancing neu implementieren.

Ich benutze einen Load Balancer, der auf Netty geschrieben ist, also will ich dich nicht entmutigen. Ich möchte nur darauf hinweisen, dass es sich bei einem um einen vordefinierten, optimierten Reverse-Proxy handelt, während der andere dazu gedacht ist, sich selbst neu zu schreiben.

+0

Danke Wilson für die Antwort. Das eigentliche Ziel meines Proxys ist es, auf jedem poxying einen Dienst zu bleiben und all die zusätzlichen Sachen wie Authentifizierung, Metriken Veröffentlichung, Leistungsschalter Zeug, etc usw. So wird es nicht für Reverse-Proxy genau verwendet, aber geben Sie ein Plugin-basierten Proxy obwohl welche die Service-Besitzer ihre Authentisierung, Timeouts usw. einstellen können. So werden viele benutzerdefinierte Handler geschrieben. Also bevorzugst du Netty/Nginx? Zur Performance gekommen, habe ich einige Blogs auf Netty 4 gelesen, die behaupteten, dass es schneller ist, haben Sie irgendwelche Informationen darüber? – user2604844