面试题答案
一键面试Spring Cloud Gateway实现智能路由基本原理
Spring Cloud Gateway基于Spring WebFlux框架构建,采用了Reactor响应式编程模型。其智能路由主要通过路由规则和过滤器链实现:
- 路由规则:定义了如何将请求从客户端发送到目标微服务。它包含一个ID、一个目标URI(微服务地址)、一组断言(Predicate)。断言用于匹配请求的属性,如请求路径、请求方法、请求头等,当请求满足断言条件时,该路由规则生效。
- 过滤器链:在请求被路由到目标微服务之前或之后,可以对请求和响应进行处理。过滤器可以修改请求头、请求体,或者对响应进行统一处理等。通过一系列过滤器组成的过滤器链,实现对请求和响应的细粒度控制。
基于路径匹配的智能路由规则配置示例
假设我们有一个名为service - example
的微服务,以下是在application.yml
配置文件中的配置:
spring:
cloud:
gateway:
routes:
- id: example_route
uri: lb://service - example
predicates:
- Path=/example/**
在上述配置中:
id
:路由的唯一标识符,这里是example_route
。uri
:lb://service - example
表示使用负载均衡(lb
)将请求转发到名为service - example
的微服务实例。如果不使用负载均衡,也可以直接写具体的微服务地址,如http://192.168.1.100:8080
。predicates
:Path=/example/**
是一个断言,表示当请求路径以/example
开头时,该路由规则生效,请求会被转发到service - example
微服务。