SpringCloud微服务系列04-Alibaba架构01-Gateway-01-intro
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。本文首先用官方的案例带领大家来体验下Spring Cloud的一些简单的功能,在后续文章我会使用详细的案例和源码解析来详细讲解Spring Cloud Gateway.
准备工作
- Gateway模块
- Spring-Cloud-Alibaba 父模块
- springboot springcloud springcloudalibaba的依赖关系(参考上一章节)
- SpringCloud-Seed模块
快速开始
总依赖SpringCloud-Seed模块
1 |
|
Spring-Cloud-Alibaba 父模块 pom
1 |
|
Gateway POM文件
1 |
|
yml文件
1 | server: |
RouteConfig类
1 | package cn.zm.gateway.config; |
测试route
1 | { |
熔断配置
RouteConfig类添加
1 | package cn.zm.gateway.config; |
熔断配置测试
1 | spring: |
windows下cmd打开命令行工具
1 | Microsoft Windows [版本 10.0.19042.867] |
1 | 测试结果 |
Gateway三个核心概念
- Route路由
路由。路由是网关最基础的部分,路由信息有一个ID、一个目的URL、一组断言和一组Filter组成。如果断言路由为真,则说明请求的URL和配置匹配 - Predicate断言
参考的是Java8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于http request中的任何信息,比如请求头和参数等。如果请求与断言相匹配则进行该路由。 - Filter过滤
一个标准的Spring webFilter。Spring cloud gateway中的filter分为两种类型的Filter,分别是Gateway Filter(路由过滤)和Global Filter(全局过滤)。过滤器Filter将会对请求和响应进行修改处理
Gateway执行流程
客户端向Spring Cloud Gateway发出请求。然后在Gateway Handler Mapping中找到与请求相匹配的路由,将其发送到Gateway
Web Handler。Handler再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。
过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前( “pre” )或之后( “post” )执行业务逻辑。| I
Filter在 “pre” 类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,
在"post"类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。
目录结构
引用资料
https://spring.io/guides/gs/gateway
https://www.fangzhipeng.com/springcloud/2018/11/06/sc-f-gateway1.html
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
https://www.fangzhipeng.com/springcloud/2018/12/21/sc-f-gatway1.html
https://www.fangzhipeng.com/springcloud/2018/12/05/sc-f-gateway2.html
https://www.fangzhipeng.com/springcloud/2018/12/21/sc-f-gatway3.html
springcloud之gateway路由熔断