最近我在学习的时候,发现了一个问题。所谓的网关,Nginx和Zuul有什么区别?两人看起来好像是一样的,所以学习了一番。事实证明,两者之间仍有些许差异。让我们来谈谈两者之间的差异。

差异:

1)首先,Nginx是C语言开发,Zuul是Java语言开发的。

2)Nginx是利用服务器实现负载均衡,而Zuul负载平衡则由Ribbon+Eureka来实现本地的负载均衡。

3)Nginx适用于服务器端负载平衡,Zuul适合于在微服务中实现网关。

4)Nginx其实比Zuul更强大一些,因为Nginx集成了一些脚本语言(Nginx+Lua)。

5)Nginc是一种高性能的HTTP和反向代理服务器,也是IMAP/POP 3/SMIP服务器。Zuul是SpringCloud Netflix的一个开源APIGateway服务器,本质上是一个webservlet应用程序,提供动态路由、监视、灵活性、安全性和其他边缘服务。Zuul相当于Web站点后端设备和Netflix流应用程序的所有请求的前门。

那么,既然我们说了这么多的差异,我们也可以说它们的相似之处!

相同之处:

1)可以实现负载平衡(Zuul采用 Ribbon + Eureka 来实现本地负载均衡)

2)您可以实现反向代理(即隐藏真正的IP地址)。

3)过滤请求,以实现网关的效果。

总结起来就是:

zuul是一个微服务的网关,所有的web请求都需要进过它进行路由。比如简单来说,A请求路由给A微服务,B请求交给B微服务处理。它是仅支持http请求的,并不支持tcp协议。

nginx是一个网关,同样它可以路由web请求到对应的服务节点(有独立IP的服务器),它一般做为负载均衡来使用。

它们两者设计的维度是不同的,但功能相似:

zuul处理路由的业务,对业务进行了归类,并交给了对应的微服务。

nginx处理路由请求的压力,对请求进行平均后,交给了服务器处理。

两者在性能上的差距不大。