问题:Nginx和Netty在构建代理服务器方面的利弊是什么?
详细说明问题:
我们正在尝试实现位于服务前面的代理服务器(正向或反向代理),并注意可应用于我们的服务的良好实践.
因此,我们正在评估市场上可用的不同解决方案,主要是Nginx和Netty.因此,当我们最初对Nginx进行研究时,我们遇到了很多积极的博客,这些博客表明Nginx速度非常快,可以通过将自定义模块编写为Nginx插件来轻松配置.
但是,当我们在Netty上进行POC时,使用Netty 4时我们可以获得更好的性能数据.所以我想知道是否有人在Nginx和Netty之间进行了一些比较,还有什么原因不使用Netty作为反向产品/转发代理解决方案.我们担心与Java Server解决方案相关的GC问题,因此我们希望在继续解决方案之前了解Nginx和Netty的优缺点.
谢谢,
维娜
最佳答案
我不知道详细的比较,因为您这里没有比较苹果. Netty是一个非常底层的Java框架,而Nginx是一个几乎完整的代理.我不确定您为网易示例撰写的内容.我不做任何测试,我想在netty上创建一个比Nginx更快的功能代理非常困难.
我认为,如果您想要一个简单的代理服务器,则应使用Nginx,因为它很可能具有基本代理所需的所有功能. Nginx快速成熟,因此在基本用例中应该做得很好.
如果您正在寻找带有特殊插件的更复杂的代理.也许像速率限制/自定义身份验证之类的东西,那么使用netty可能值得考虑.这些东西可以在Nginx上构建,但是需要使用Lua脚本.您可能更喜欢使用Java作为开发人员.
如果您最终还是要使用netty,请记住,您可能必须重新实现一些复杂的功能,例如后端负载平衡.
我使用写在netty上的负载均衡器,所以我不想阻止您.我只想指出,一个是预先编写的优化反向代理,而另一个是您必须从头开始编写自己的代理.