问题:Nginx和Netty使用构建代理服务器的优缺点是什么。
阐述问题:
我们正在尝试实施代理服务器(正向或反向代理),该代理服务器位于服务之前,并负责可以应用于我们服务的良好实践。
因此,我们正在评估市场上可用的主要是Nginx和Netty的不同解决方案。因此,当我们最初对Nginx进行研究时,我们遇到了大量积极的博客,这些博客表明Nginx非常快,可以通过编写自定义模块插件到Nginx来轻松配置。
但是当我们在Netty上进行POC时,我们在使用Netty 4时获得了更好的性能数据。所以我想知道是否有人在Nginx和Netty之间进行了一些比较,以及不使用Netty的原因是什么作为反向/转发代理解决方案。我们担心与Java Server解决方案相关的GC问题,因此我们想在了解解决方案之前了解Nginx和Netty的优点和缺点。
谢谢, 维奈。
答案 0 :(得分:3)
我不知道详细的比较,因为你不是在这里比较苹果和苹果。 Netty是一个非常低级的java框架,而nginx是一个大多数完整的代理。我不确定你在netty上为你的例子写了什么。没有进行任何测试,我认为在netty上创建比nginx更快的功能代理是非常困难的。
我认为如果你想要一个简单的代理服务器,你应该使用nginx,因为它很可能拥有基本代理所需的所有功能。 nginx快速而成熟,因此它对于基本用例应该做得非常好。
如果您正在查看更复杂的代理,请使用特殊插件。也许像限速/自定义身份验证等等,然后可能值得考虑使用netty。这些东西可以在nginx上构建,但需要使用Lua脚本。您可能更喜欢使用java作为开发人员。
如果您最终使用netty,请记住您可能需要重新实现可能的复杂功能,例如后端负载平衡。
我使用netty上写的负载均衡器,所以我不想劝阻你。我只想指出一个是预先编写的优化反向代理,而另一个是你必须从头开始编写的。
答案 1 :(得分:0)
我没有看到或做过任何并排比较,但就Netty而言,通过一些仔细的编码和使用池化直接内存缓冲区,你不应该看到很多GC活动。