用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

一.概述

gateway是springcloud微服务技术全家桶的一员,主要功能是做客户端到微服务的统一入口,或者简称为网关,其使用的核心在其过滤器,它内置了很多过滤,比如路由过滤器、限流过滤器,它也提供了实现过滤器的接口,我们可以通过继承这些接口来写我们自定义的过滤实现鉴权等功能.

二.出现的背景

spring的第一要义整合世面上最好的组件,springcloud第一代是通过整合Netflix的微服务技术栈实现的,后来Netflix大量的组件进入了停更.包括zuul网关在内,所以springcloud不得不自己开发一个微服务网关用来替代zuul,gateway就出现了.

三.gateway中的三大术语

1.路由

(1).路由是网关的基本构件。它由ID、目标URI、谓词集合和过滤器集合定义。如果聚合谓词为真,则匹配路由.
(2).深入理解可以参考源码,类名为RouteDefinition.java,这里贴出截图.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

2.断言

(1).参照Java8的新特性Predicate。这允许开发人员匹配HTTP请求中的任何内容,比如头或参数.
(2).深入理解可以参考源码,类名为PredicateDefinition.java,这里贴出截图.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

3.过滤器

(1).可以在发送下游请求之前或之后修改请求和响应.
(2).深入理解可以参考源码,类名为FilterDefinition.java,这里贴出截图.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

四.过滤器

1.gateway的所有功能都是通过其过滤器实现的,gateway的其实就是由大量的过滤器组成,包括我们需要实现鉴权等功能都是通过实现它提供了过滤器接口.

2.继承树.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

3.gateway过滤器的核心接口.

1.全局过滤器GlobalFilter.
(1).通过实现GlobalFilter接口定义过滤器,该过滤器将被作用到所有的路由.
(2).gateway中GlobalFilter接口的已有实现.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍
用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

2.局部过滤器GatewayFilter.
(1).通过实现GatewayFilter接口定义过滤器,该过滤器作用在哪个路由可以灵活配置.当然也可以通过GatewayFilter实现类+spring.cloud.gateway.default-filters的方式取得和GlobalFilter一样的效果.
(2).我个人更喜欢这种方式.
3.过滤器抽象工厂AbstractGatewayFilterFactory.
(1).可以通过实现AbstractGatewayFilterFactory抽象类,重写apply()方法,方法内部写过滤器的逻辑的方式来来实现.
(2).AbstractGatewayFilterFactory的默认的实现类.

用SpringCloud Alibaba搭建属于自己的微服务(二十三)~基础搭建~gateway介绍

至此,完事!

您的点赞、收藏、转发和关注是我持续创作的动力!