SpringCloud Gateway简单应用

572 阅读1分钟

1、gateway的作用

先上源码地址 https://github.com/worldcoding/demo.git

在微服务系统中通常需要对请求统一鉴权,限流等处理,这时候我们可以使用Spring Cloud官方推出的第二代网关框架SpringCloud Gateway,所有请求的权限校验,限流等从业务服务解耦,简单系统架构图类似如下:


2、具体使用

gateway中提供的有全局过滤器接口GlobalFilter和过滤器工厂抽象类AbstractGatewayFilterFactory,框架本身也对这两种过滤器有了具体实现。但在实际使用过程中,通常我们需要实现以上两种过滤器加入我们需要的处理逻辑。

2.1、GlobalFilter的实现如下


全局过滤器会对所有的请求进行拦截处理,可以对不需要处理的请求根据uri排除。

2.2、AbstractGatewayFilterFactory的实现


过滤器工厂具体处理哪些路由需要在配置文件中配置,apply方法中参数Config作用就是判断是否对当前请求生效。

2.3 路由配置


过滤器工厂只会对ApiExample=true的路由生效。

3、测试

为了测试以上网关这里使用了一个注册中心eureka-server和一个业务服务demo-provider,

启动以上程序可以在注册中心页面看到demo-gatewaydemo-provider都注册到了注册中心,


分别在浏览器中输入:

http://localhost:8080/demo/user/getName

http://localhost:8080/demo/user/getPhone

结果分别如下



观察gateway输出日志,http://localhost:8080/demo/user/getName日志如下


http://localhost:8080/demo/user/getPhone日志如下


和预想结果一致,springcloud gateway基本功能大体如此。