从0开始搭建springcloud---Zuul网关
1. 什么是网关
API Gateway, 是系统唯一对外的入口, 介于客户端和服务器端之间的中间层,处理非业务功能提供路由请求、鉴权、监控、缓存限流等功能
主流的网关:
zuul:是Netflix开源的微服务网关,和Eureka,Ribbon,Hystrix等组件配合使用,Zuul 2.0比1.0的性能提高很多
kong: 由Mashape公司开源的,基于Nginx的API gateway
nginx+lua:是一个高性能的HTTP和反向代理服务器,lua是脚本语言,让Nginx执行Lua脚本,并且高并发、非阻塞的处理各种请求
2. 代码配置
2.1 pom.xml
2.2 启动类添加注解
启动类添加注解@EnableZuulProxy
2.3 启动zuul并访问
ip:zuul的端口/服务的名词/接口
2.4 配置访问路由
在2.3中我们通过服务的application.name的名字进行访问,我们在zuul可以进行路由名称配置
这样的话再访问movie服务时的访问路径为http://192.168.1.47:9000/apimovie/movie/2
2.5 配置忽略服务
2.6 配置请求头的值为空的问题
我们看zuul的源码的时候会发现zuul忽略了Cookie,Set-Cookie, Authorization这三个的值。
我们可以在yml文件设置这个的值为空,就会把zuul的默认的三个值会覆盖,表示不会忽略任何请求的值。配置如下
值设置为空就好
zuul:
sensitive-headers:
3. zuul拦截器
- 自定义一个类继承ZuulFilter
- 重写里头的方法
- 在类顶部加注解,@Component,让Spring扫描
Type:定义filter的类别,用字符串代表,有四种标准类别,代表了Request的生命周期。filterType()返回值代表该filter的Type。
PRE: 该类型的filters在Request routing到源web-service之前执行。用来实现Authentication、选择源服务地址等
ROUTING:该类型的filters用于把Request routing到源web-service,源web-service是实现业务逻辑的服务。这里使用HttpClient请求web-service。
POST:该类型的filters在ROUTING返回Response后执行。用来实现对Response结果进行修改,收集统计数据以及把Response传输会客户端。
ERROR:上面三个过程中任何一个出现错误都交由ERROR类型的filters进行处理。
下边是具体配置
4. 网关限流
微服务开发中有时需要对API做限流保护,防止网络攻击,比如做一个短信验证码API,限制客户端的请求速率能在一定程度上抵御短信轰炸攻击,降低损失。
使用zuul的拦截器配置限流
还没有评论,来说两句吧...