哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节三的“Spring Cloud Gateway实战 ”干货总结~是一起学习新课程吧!
课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇
课程名称:Spring Cloud Gateway实战
课程地址:https://developer.aliyun.com/learning/course/60/detail/1102
图谱名称:Alibaba Java 技术图谱
图谱地址:https://developer.aliyun.com/graph/java
Spring Cloud Gateway实战
Gateway本身框架不断进行迭代,除了官方共建以外,社区贡献了许多技术组件,像麦飞公司贡献了Spring Cloud Gateway早期的微服务的许多核心组件。对于整个Java的微服务发展做出了非常巨大的贡献,但是官方披露公司一直希望能够进行云原生企业化,包括有可能会走一些收费路线,麦飞贡献了很多代码,但是实际没得到多少好处。
- Spring Cloud Gateway网关
1、Spring Cloud Gateway新特性
- Built on Spring Framework 5, Project
- Reactor and Spring Boot 2.0
- Able to match routes on any request
- attribute.
- Predicates and filters are specific to routes.
- Hystrix Circuit Breaker integration.
- Spring Cloud DiscoveryClient integration
- Easy to write Predicates and Filters
- Request Rate Limiting
- Path Rewriting
主要特点是你现在用Spring Cloud Gateway Spring Framework在5年以上。继Spring boot2.0 往上的版本它里面有一些编程语法。这边有个词叫魏池,魏池的话实际上我们说主要是做或者说自定义的一些代码的扩展,主要我们比如说做过滤器或者说路由的一些定自定义的开发工作另外也自己继承Hystrix的组件,也有说叫Discoveryclient贡献服务的客户端,所以很多技术组件还依然存在,只不过有些是官方在后续的更新中,我们知道2020以后可能就不再默认集成。
- Spring Cloud Gateway新特性
① 基于Spring 5,Project Reactor和Spring Boot 2.0构建
② 能够匹配任何请求路由。
③ 特定路由专用Predicate谓词和过滤器Filter特。
④ 集成Hystrix断路器。
⑤ 集成Spring Cloud DiscoveryClient
⑥ 易于编写谓词和过滤器
⑦ 请求速率限制
⑧ 路径重写
⑨ 非阻塞API,响应式API,高并发
这里面比较有意思的是当细节已经有了,之前梳理里面也已经集成了服务,重要的是我们实际想变成异步的非阻塞Api,其实对后期要高并发吞吐量会有新的改善,也不是绝对的,要做压测才能够体现出来技术差异,出了一个结构,大家发现里面其实有很多相似点,比如这里面其实也有请求处理。
- Spring Cloud Gateway网关架构
- Spring Cloud Gateway架构图
普通的架构师会模仿架构就可以,但是高级或专家架构师不仅要能开发,还能做优化,还要做一些架构关键底层的设计扩展,这是对于高级岗位的要求。
2、Gateway核心组件
①Route是网关的基础元素,由ID、目标URI、断网、过滤器组成。当请求到达网关时,由Gateway Handler Mapping 通过断言进行路由匹配(Mapping),当断言为真时,匹配到路由。
②Predicate是Java 8 Function Predicate。输入类型是Spring Framework SeverWebExchange。匹配HTTP请求,例如请求头或者请求参数。简单来说它就是匹配条件做路由。
③ Filter是Gateway中的过滤器,在请求发出前后进行处理。
3、Route Predicate Factories模式
- After Route Predicate Factory
- Before Route Predicate Factory
- Between Route Predicate Factory
- Cookie Route Predicate Factory
- Header Route Predicate Factory
- Host Route Predicate Factory
- Method Route Predicate Factory
- Path Route Predicate Factory
- Query Route Predicate Factory
- RemoteAddr Route Predicate Factory
- 实战Spring Cloud Gateway
- 依赖包
• <dependency>
• <groupId>org.springframework.cloud</groupId> • <artifactId>spring-cloud-startergateway</artifactId> • </dependency>
我们做一个Spring Cloud Gateway项目,要加入必要的依赖,一般必要的依赖包有了,要改一下配置,这个和我们以往开发过程不太一样,因为有些参数方式不一样,我们实验的话基本上基于Spring Cloud Gateway2。实际有一些问题是要启用路由才行,直接改完配置后,加注解启动就可以,这边还要改配,不改配的话,你可能介入以后请求无法进行转发的。核心依赖包就是artifactId。
- 配置文件
• spring.cloud.gateway.enabled=false
配置文件里面要启用一个开关,你可以提供给他们,也可以关闭它。我们要显示启动,这里面等于false的话就等于关闭,稍微注意一下
- 代码配置路由
前面的配置文件的方式和我们之前租的很像,有自己的名字,如果我要注册到注册中心进行挂接的话, 主要是eureka。