笔记十四-Spring Cloud-Gateway 网关核心概念原理&&创建及测试

image.png

1.概念及原理

1.1相关概念

网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。Spring Cloud Gateway作为SpringCloud官方推出的第二代网关框架,取代了Zuul官网。
网关提供API全托管服务,丰富的API管理功能,辅助企业管理大规模API,以降低管理成本和安全风险,包括协议适配、协议转发、安装策略、防刷、流量、监控日志等功能。
Spring Cloud Gareway旨在提供一种简单有效的方式来对API进行路由,并为他们提供切面,如:安全性、监控/指标和弹性等。
官方文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/
与网关相关的概念有路由(Route),断言(Predicate)、过滤器(Fliter),详情请看官方文档。

image.png

1.2 工作流程

如下图所示:
A. 客户端向 Spring Cloud Gateway 发出请求
B. 然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。
C. Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。
过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。


image.png

2.创建及测试

2.1 创建mymail-gateway模块

A. 在我们的项目中新建一个网关模块:mymail-gateway
image.png
image.png
image.png

B. 在新建的mymail-gateway模块的pom文件中添加mymail-common的依赖

        <dependency>
            <groupId>com.lyh.mymail</groupId>
            <artifactId>mymail-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
image.png

C. 在application.properties文件中配置注册中心和服务端口


image.png

然后运行项目
image.png
2.2 测试

现在我们希望输入:http://localhost:88/?url=baidu 的时候,路由可以转发到baidu.com上,输入:http://localhost:88/?url=qq的时候,能够跳转到qq.com
接下来我们需要在application.yml文件中进行路由配置

spring:
  cloud:
    gateway:
      routes:
        - id: baidu_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
image.png

配置成功后,重启项目,在浏览器中输入http://localhost:88/?url=baidu能够跳转到百度首页。

image.png

推荐阅读更多精彩内容