SpringCloud学习----阳哥(十三)

一、GateWay 和Zuul(停更)说明,服务网关---------------P66

GateWay替代了Zuul 1.x

1.Gateway在微服务架构中的位置

SpringCloud学习----阳哥(十三)

 2.GateWay的特性---------P67

SpringCloud学习----阳哥(十三)

 Zuul 1.x基于Servlet 2.5的阻塞架构,性能比较差。

GateWay支持WebFlux,异步非阻塞的架构。

SpringCloud学习----阳哥(十三)

  3.GateWay的核心工作流程---------------P68

GateWay主要由以下三个部分构成:Route (路由)Predicate(断言) Filter(过滤)

三者的具体作用如下:

SpringCloud学习----阳哥(十三)

 SpringCloud学习----阳哥(十三)

  4、GateWay微服务9527搭建

1.)新建module

2.)新建pom

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

3.)新建yml

4.)主启动类

这里是网关,所以没有业务类这一说法。

现在尝试更改payment8001对外暴露的访问端口8001,用网关进行封装,对外不显示payment真正的服务端口8001.

更改yml配置文件。

查看payment8001服务的controller访问服务路径,添加网关前的访问地址是localhost:8001/payment/get/31

SpringCloud学习----阳哥(十三)

 更改GateWay的yml配置文件,更改之后的访问地址是localhost:9527/payment/get/31

SpringCloud学习----阳哥(十三)

 二、GateWay配置路由的两种方式-----------------P70

1.第一种方式:上文说所说的,更改yml文件,yml文件中进行更改配置。

2.第二种方式:代码中诸如RouteLocator的Bean(不建议 个人感觉比较麻烦)

三、GateWay配置动态路由----------------------P71

上面一中提到的配置方式,比较的简单,但是也存在一些问题。比如服务是固定死的8001 ,但是在实际过程中我们的订单服务

是由集群提供的,存在8002,8003等,所以我们需要构建以GateWay来实现的负载均衡。如下图所示:

先前的负载均衡是通过Ribbon来实现的,现在需要改为GateWay实现。

SpringCloud学习----阳哥(十三)

 只需要更改yml文件里的两个配置均可,

SpringCloud学习----阳哥(十三)

 SpringCloud学习----阳哥(十三)

 四、GateWay当中常用的Predicate,下面是一些常见的类别:

After、before、between可以限定时间,

SpringCloud学习----阳哥(十三)

 五、GateWay中filter过滤器的使用。------------------------P73

按生命周期来分有两种类型:pre和post

单一的filter共有31种,全局的十几种,