服务网关:(gateway)
三大核心概念:Route(路由)、Predicate(断言)、Filter(过滤)
・
Filter(过滤):指定是Spring框架中GetwayFilter的实例,使用过滤器,可以在请求被路由前或者之后请求进行修改。
・
Predicate(断言):开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言想匹配则进行路由。
・
Route(路由):是构建网关的基础模块,它由ID、URI、一系列的断言和过滤器组成 ,如果断言为true则则匹配该路由。
・
总体:WEB请求,通过一些匹配条件,定位到真正的服务节点,并在这个转发过程的前后,进行一些精细化控制。 Predicate(断言) 就是我们的匹配条件;而Filter(过滤),就可以理解为一个无所不能的拦截器,有了这两个元素,再加上目标uri,就可以实现一个具体的Route(路由)了。
・
・
gateway工作流程:
客户端发出请求 后,在处理映射中找到与请求想匹配的路由,将其发送到Gateway Web Handler。Handler 再通过Filter过滤器将请求发送到我们实际的业务逻辑中执行,然后返回。
在通过过滤器之前(pre)我们可以做参数校验、权限校验、流量监控、日志输出、协议转换等
在通过过滤器之后(post)我们可以做响应内容、响应头修改、日志输出、流量监控等。
・
・
构建gateway网关
流程图:(差)
・
・
1、建立子模块
2、改pom(不要WEB相关的两个依赖)
3、改Yml
4、业务类(无)
5、主启动类
6、9527网关做路由映射
7、Yml新增网关配置
8、测试
9、Yml配置说明
・
・
・
通过微服务名实现动态路由:(默认情况下Gateway会根据注册中心注册的服务列表,以注册中心上微服务名为路径创建动态路由进行转发,从而实现动态路由功能。)
流程图:
・
・
1、改pom(eureka服务注册中心)
2、改yml
3、测试
・
・
Predicate(断言)
Predicate下的为条件,满足的话返回(True)执行,不满足返回(false)不执行。
・
・
・
Filter(过滤器)
概念:
・
・
自定义过滤器(全局过滤器GatewayFilter)
・
自定义全局过滤器类
测试:
总结:
Gateway网关,主要由路由 负责,挡在访问的最前面,路由由(id,断言,拦截器构成),访问过来时,拦截器可以进行设置条件判断方法是否合法,在由断言进行判断访问是否满足它所设定的条件,满足返回true放行,否则false。 自定义全局拦截器:实现GlobalFilter,Ordered两个接口,来设定具体说明看上面演示示例