Zuul 网关

Posted syjp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zuul 网关相关的知识,希望对你有一定的参考价值。

1、网关的作用

网关可以拦截客户端所有请求,对该请求进行权限控制,负载均衡、日志管理、接口调用监控等操作。

1)网关对所有服务会话进行拦截

2)网关安全控制,统一异常处理,XXS、SQL注入

3)权限控制,黑名单和白名单、性能监控、日志打印

 

2、过滤器与网关的区别是什么?

1)过滤器适合于单个tomcat服务器进行拦截请求;

2)网关是拦截整个微服务所有请求;

3)网关分为内网网关和外网网关,外网网关是针对于开放平台接口;

 

3、Nginx与Zuul区别

相同点:

1)Zuul和nginx都可以实现负载均衡、反向代理、过滤请求、实现网关效果。

不同点:

1)Nginx采用C语言编写,Zuul采用java语言编写

2)Zuul负载均衡实现:采用ribbon+eureka实现本地负载均衡;

3)Nginx负载均衡实现:采用服务器端实现负载均衡;

4)Nginx比Zuul功能会更加强大,因为Nginx可以整合一些脚本语言(Nginx+Lua)

5)Nginx适合于服务器端负载均衡,也可以实现网关

6)Zuul适合微服务中实现网关,而且使用技术是java语言

7)最好建议nginx+zuul实现网关

nginx用作实现反向代理,zuul对微服务实现网关拦截

反向代理的目的是隐藏真实ip地址

 

4、网关框架

Kong Kong是基于nginx+lua进行二次开发的方案

使用网关后,不能直接输入真实地址访问会员服务/订单服务,而是运用了反向代理机制,输入网关地址+服务名称,程序会自动转发到对应的会员服务/订单服务;

f12是捕捉不到真实地址的

公司的token一般放在请求头里面,很少以?号传参

配置完网关后,配置的服务一开始没启动,是不会报错的;只是当你输入地址后,如果这个地址和你配置的相同,而该服务没有启动,才会报错;

zuul配置能够使用分布式config实现实时更新,还是得手动刷新

这个手动刷新有点问题:当你在配置文件上面添加内容,他可以生效;但是当你删减内容,他不会生效,可能是有缓存;

 

5、bootstrap.yml与application.yml的区别

这个网关我原本用的application.yml,结果一直搜索不到config服务器,一直搜的8888端口;我比对了一下,之前那个config-client就是yml名称为bootstrap,所有我就也改成了bootstrap,结果就可以了,不晓得是什么原因。

=》但是蚂蚁课堂的用的application.yml却可以成功

原因如下:

首先如果你在Controller中使用@Value("${fileName}")去加载git上的配置文件属性,当你用的application.xml时,启动就会报错;

结合以上两个现象得出结论:

1)由于添加了config-client依赖,并且你是application.xml,他的加载顺序比较慢,这是还没有读取到yml配置中的config-server名称,所以这个客户端就会搜索到一个虚拟的config-server,如下

Fetching config from server at: http://localhost:8888

而如果你用的bootstrap.xml,他的执行顺序比较快,所以就加载了yml文件,找到了真正的config-server地址

Fetching config from server at: http://LIJ55MM21H39YNQ:9200/

 

6、网关集群思路

客户端发送请求统计到Nginx上,再使用Nginx实现反向代理和负载均衡,采用轮询机制转发到网关上。

=》集群时如果用谷歌浏览器可能负载均衡效果显示不出来(需要配置参数),可以用火狐浏览器。但是我的谷歌浏览器却是可以的

 

以上是关于Zuul 网关的主要内容,如果未能解决你的问题,请参考以下文章

服务网关zuul之四:zuul网关配置

zuul网关

API网关对比zuul.1,zuul.2,gateway

zuul网关

zuul网关

Zuul 网关