从0开始搭建springcloud---Zuul网关

微服务网关与限流
本文详细介绍了微服务架构中的网关概念,包括APIGateway的作用、主流网关如Zuul、Kong和Nginx+lua的特点,以及如何在Zuul中配置路由、忽略服务和解决请求头值问题。此外,还探讨了如何利用Zuul拦截器实现API限流,以保护系统免受网络攻击。

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拦截器

  1. 自定义一个类继承ZuulFilter
  2. 重写里头的方法
  3. 在类顶部加注解,@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的拦截器配置限流
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值