目录
4.1 Cookie-Route-Predicate-Factory Cookie断言工厂
4.2 Header-Route-Predicate-Factory Header断言工厂
1 网关的作用
1.请求代理、路由转发
2.访问认证、鉴权
3.运维监测、数据加密、安全管控
4.日志、应用审计
5.限流
6.协议转换
比如也发发过来的是dubbo协议的请求,我们在网关这一侧就可以将 dubbo协议转换成http协议
7,其他
2 网关的技术选型
1.Nginx:
它的反向代理和负载均衡机制可以完成基本的API路由转发能力,性能不错,如果需要一些其他逻辑需要结合lua脚本进行二开,但无法嵌入到微服务架构中
2.Netflix Zuul :
基于JAVA开发,2.0做了优化性能提升,SpringCloud对其进行了整合,能很好的融入到微服务架构中
3.SpringCloud Gateway:
SpringCloud的一个项目,目标是替代 Zuul作为 Spring Cloud 生态系统中的网关
4.Kong:基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,高性能的网关,开箱即用
5.APISIX:基于 OpenResty + etcd 实现的云原生、高性能、可扩展的微服务 API 网关,由国人开源并进入Apache 进行孵化
3 Gateway 中的核心概念
1.路由:是一个包含了请求的匹配规则和路由的目标等相关信息的集合目标可以是我们自己的服务,也可以是外部第三方的系统
2.断言:
定义在某一个路由下,代表了请求是否匹配当前路由的判断规则,且gateway内置了多种断言规则
可以理解为断言就是路由的匹配规则,判断当前请求是否符合当前的路由规则
3.过滤器:
请求成功匹配某路由后,在被发送到目标对象去之前及响应回到gateway之后可以执行一系列过滤器,且gateway内置了多种过滤器
4 Gateway内置断言方式
Gateway内置断言方式
1.Gateway内置了多种断言工厂供开发者开箱即用,
官方网站
Gateway内置断言工厂演示,具体的请查看官方文档
4.1 Cookie-Route-Predicate-Factory Cookie断言工厂
按照Cookie断言的方式来进行匹配,Cookie表示断言的方式
多个断言间以and的方式进行连接,多个断言同时匹配成功才会进行路由,多个断言间只匹配一个则不会进行路由,多个断言间and关系
路由中添加如下断言方式
意味着请求必须携带Cookie,且Cookie的名称为 username ,且对应的值为
itheima ,都匹配成功才算成功。
且,key的值支持正则匹配
4.2 Header-Route-Predicate-Factory Header断言工厂
路由中添加如下断言方式,原理同上
key的值,支持正则
\d+ 正则表达式,数字即可
还有基于请求方式,请求携带的参数等等断言方式,就不一一介绍了,具体查看官
5 总结:
API网关的作用
1.根据API进行路由转发
2.通用(公共)能力的实现,比如:认证鉴权、日志、安全、限流、协议转换、应用审计等
SpringCloud Gateway核心概念
1.路由:包含了请求的匹配规则和路由的目标等相关信息的集合
2.断言:定义了请求如何匹配路由的规则
3.过滤器:对请求和响应进行拦截