SpringCloud 面试题, 你项目里为什么选择 Gateway 作为网关?
SpringCloud 面试题, 你项目里为什么选择 Gateway 作为网关?
QA
Step 1
Q:: 你项目里为什么选择 Gateway 作为网关?
A:: 在微服务架构中,网关是流量进入系统的入口,可以处理路由、负载均衡、安全认证、监控等功能。我们选择 Spring Cloud Gateway 是因为它是 Spring 家族的一部分,与 Spring Boot 和其他 Spring Cloud 组件有着良好的集成性,易于配置和扩展。Gateway 支持响应式编程模型,性能优秀,特别适用于大流量高并发的场景。同时,它也具备过滤器链机制,便于我们在请求经过网关时进行各种拦截和处理,例如权限验证、请求限流等操作。
Step 2
Q:: Spring Cloud Gateway 如何实现路由?
A:: Spring Cloud Gateway 通过 Route 定义路由,每个 Route 包含一个 Predicate(条件)和一组 Filter(过滤器)。Predicate 决定了请求是否与该路由匹配,而 Filter 则在请求和响应过程中应用一些处理逻辑。例如,可以通过路径匹配、请求参数、请求头等多种方式定义路由的条件。具体实现上,Gateway 使用 Java 的函数式编程模型,Predicate 是一个返回布尔值的函数,定义请求匹配的条件。
Step 3
Q:: 如何在 Spring Cloud Gateway 中实现请求限流?
A:: Spring Cloud Gateway 提供了限流过滤器(RateLimiter),我们可以使用它来限制特定路由的请求速率。Gateway 默认集成了 Redis 和 Bucket4
j 作为限流算法的支持。通过配置,可以设置每秒允许通过的最大请求数、请求的刷新速率等参数。这样可以有效地防止服务被突发的大量请求压垮。在实际生产环境中,限流对于保护后端服务的稳定性至关重要。
Step 4
Q:: Spring Cloud Gateway 如何处理身份验证和授权?
A:: Spring Cloud Gateway 可以集成 OAuth2.0
或 JWT(JSON Web Token)来实现身份验证和授权。通过在网关层配置安全过滤器,我们可以在请求进入微服务之前验证用户的身份,并确保其拥有访问特定资源的权限。这样,微服务内部不需要重复实现这些认证逻辑,简化了开发和维护。此外,Gateway 还可以与 Spring Security 结合,支持复杂的认证和授权策略。