1.为什么需要gateway作为网关/路由
在微服务框架中,我们各个微服务都不是直接暴露给其他服务来调用的。但假如有一个用户知道了一个服务的ip:端口号:url:访问参数,就能直接访问你,再进一步,如果这个用户开始恶意访问、恶意攻击,就会摧毁咱们的微服务系统。所以需要一个网关对我们的微服务进行保护。
网关完成对微服务保护的核心:过滤器。
2.过滤方式
- pre:在转发之前执行,一般用来做参数校验、权限校验、流量监控、日志输出、协议转换。
- post:在后端响应之后,但没有返回给前端之前执行,一般用来作响应头和相应内容的修改、流量监控、日志输出。
3.两种过滤器类型
- GatewayFilter:局部过滤器,针对单个路由。
- 在springcloud gateway组件中提供了大量内置的局部过滤器,对请求和响应做过滤操作。
- 遵循约定大于配置的思想,只需要在配置文件配置局部过滤器的名称,并为其指定对应的值,就可以让其生效。
- GlobalFilter:全局过滤器,针对所有路由。
- 不需要特殊的配置,系统初始化的时候自动加载,并作用在每个路由上。
- gateway的核心功能也是通过内置的全局过滤器来完成的。
- 自定义全局过滤器的步骤:
- 实现GlobalFilter和Ordered接口
- 复写方法
- 完成逻辑处理