gateway
网关是什么,网关是一切外部访问程序的入口,他控制这这个服务架构的出入,鉴权,代理,流控,监控等.
一.简介
1.官网
2.是什么?
Spring Cloud Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架
3.作用
网关在微服务架构中的位置
作用:
- 反向代理
- 鉴权
- 流量控制
- 熔断
- 日志监控
- 等等
4.gateway于zuul的区别和特性
gateway的特性:
- 动态路由
- 路由断言(Predicate)和过滤(filter)
- 继承Hystrix的断路器功能
- 继承springcloud的服务注册与发现功能
- 请求限流
- 支持路劲重写
gateway和zuul的区别
- gateway是基于NIO的,非阻塞式架构模型
- zuul是基于阻塞IO模型的.
- gateway还支持webSocket,并且与spring紧密集成.
二.gateway的原理分析
1.gateway的核心组件
- Route(路由)
#路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由 - Predicate(断言)
#参考的是java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由 - Filter(过滤)
#指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
2.gateway的工作流程
步骤:
- 请求发送到handler Mapping上,handler mapping对比predicate(断言)匹配路劲.
- 在发送到web handler上,handler在经过一系列的过滤链.
- 经过过滤链之后才是发送到具体的微服务上请求服务.
- 再请求之后还会经过一系列的过滤链,回到web handler.
- web handler再返回给handler mapping.
总结:路由转发,断言匹配,过滤,执行业务
三.gateway搭建
1.基本使用
(1) 建module
略
(2) 改pom
<!--新增gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
(3) 写yml
server:
port: 9527
spring:
application:
name: cloud-gateway
cloud:
gateway:
routes:
#路由地址1
- id: payment_routh #路由的ID,没有固定规则但要求唯一,建