1、网关的作用?
a,身份认证和权限校验 b,服务路由、负载均衡 c,请求限流
技术实现:gateway,zuul
Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。
ps:阻塞式编程是传统的编程模式,程序进行IO操作时会阻塞当前线程的执行,期间新城无法执行其他任务
响应式编程是更现代和高效的编程范式,基于异步和事件驱动,允许程序中的不同部分相互通信和协作,无需等待其他操作完成
2、搭建网关服务的步骤:
网关搭建步骤:
1.创建项目,引入nacos服务发现和gateway依赖
2.配置application.yml,包括服务基本信息、nacos地址、路由
路由配置包括
1.路由id:路由的唯一标示
2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
3、PredicateFactory的作用
读取用户配置的断言规则并解析成对应的判断条件
其中- Path=/order/** 是对路径进行判断,此外还能对时间等条件作出限制,具体书写可以上官方文档查询
4、GatewayFilter过滤器
过滤器的作用是什么?
对路由的请求或响应做加工处理,比如添加请求头
配置在路由下的过滤器只对当前路由的请求生效
defaultFilters的作用是什么?
对所有路由都生效的过滤器
5、全局过滤器GlobalFilter
和上文Filter中区别在于能进行更复杂的逻辑,乃至访问请求中的参数
全局过滤器的作用是什么?
对所有路由都生效的过滤器,并且可以自定义处理逻辑
实现全局过滤器的步骤?
实现GlobalFilter接口
添加@Order注解或实现Ordered接口
编写处理逻辑
6、过滤器执行顺序
路由过滤器、defaultFilter、全局过滤器的执行顺序?
order值越小,优先级越高
当order值一样时,顺序是defaultFilter最先,然后是局部的路由过滤器,最后是全局过滤器。其中,路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。
6、跨域问题处理
跨域:域名不一致就是跨域,主要包括:
域名不同:www.taobao.com和www.taobao.org 和 www,jd.com 和 miaosha.jd.com
域名相同,端口不同:localhost:8080和localhost8081
跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题
解决方案:CORS
CORS跨域要配置的参数包括哪几个?
允许哪些域名跨域?
允许哪些请求头?
允许哪些请求方式?
是否允许使用cookie?
有效期是多久?