SpringCloud面试题, 你项目里为什么选择 Gateway 作为网关?
SpringCloud面试题, 你项目里为什么选择 Gateway 作为网关?
QA
Step 1
Q:: 为什么选择 Spring Cloud Gateway 作为网关?
A:: Spring Cloud Gateway 是 Spring 生态系统中专门为微服务架构设计的网关,它具有以下优势:
1.
集成性强:与 Spring Boot 和 Spring Cloud 无缝集成,配置简单且易于使用。
2. **高性能**:基于异步的非阻塞 I/
O 模型(Reactor Netty),能够处理大量并发请求,性能优秀。
3.
功能丰富:提供路由转发、负载均衡、熔断限流、请求过滤和认证授权等多种功能。
4.
可扩展性强:支持自定义过滤器和路由策略,能够灵活应对复杂的业务需求。
5.
社区支持和文档完善:作为 Spring 生态的一部分,拥有广泛的社区支持和完善的文档资源。
Step 2
Q:: Spring Cloud Gateway 与 Zuul 的区别是什么?
A:: Spring Cloud Gateway 和 Zuul 都是微服务架构中的网关组件,但它们有一些重要的区别:
1. **架构**:Zuul 1.x 是基于阻塞 I/O 的,而 Spring Cloud Gateway 基于非阻塞 I/
O(Reactor Netty),性能更高。
2.
开发体验:Spring Cloud Gateway 更加贴近 Spring 生态,配置和开发体验更佳。
3. **功能**:Spring Cloud Gateway 提供了更现代的功能,如动态路由、断路器集成、限流等,而 Zuul 1.
x 的功能相对较为基础。
4.
可扩展性:Spring Cloud Gateway 的可扩展性更强,支持自定义过滤器和更灵活的路由配置。
5. **社区和支持**:Zuul 1.
x 目前处于维护模式,而 Spring Cloud Gateway 得到了持续的社区更新和支持。
Step 3
Q:: 如何在 Spring Cloud Gateway 中实现认证和授权?
A:: 在 Spring Cloud Gateway 中,可以通过配置过滤器链来实现认证和授权:
1.
GlobalFilter:可以实现全局的认证逻辑,例如在每个请求进入网关时检查 JWT Token 是否有效。
2. **Route-
specific Filter**:可以针对特定路由实现不同的认证和授权逻辑,例如不同的 API 需要不同的权限。
3. **集成 OAuth2.0**:通过集成 Spring Security 和 OAuth2.0
,可以轻松实现基于 Token 的认证授权机制。
4.
自定义过滤器:可以编写自定义过滤器,实现复杂的业务需求,比如根据请求的某些特征动态调整认证策略。
Step 4
Q:: 如何在 Spring Cloud Gateway 中实现限流?
A:: 在 Spring Cloud Gateway 中,可以使用以下方式实现限流:
1.
RequestRateLimiter:这是 Spring Cloud Gateway 提供的内置限流过滤器,可以基于 Redis 来实现令牌桶算法限流。
2.
KeyResolver:与限流过滤器配合使用,用于确定请求的唯一标识(如用户 ID、IP 地址等)。
3.
自定义限流:可以根据业务需求,编写自定义限流策略,比如对特定用户组或者接口进行限流。
Step 5
Q:: Spring Cloud Gateway 的路由配置是如何实现的?
A:: Spring Cloud Gateway 的路由配置可以通过以下两种方式实现:
1.
Java 代码配置:通过 Java 配置类,使用 RouteLocatorBuilder 来配置路由规则,可以动态构建路由。
2. **配置文件配置**:通过 application.yml 或 application.
properties 文件,使用 YAML 或 Properties 格式来定义路由规则,这种方式简单直观,适合大多数场景。
每个路由都包含一个 ID、URI 以及一组 Predicates(条件)和 Filters(过滤器),通过这些配置可以灵活地实现各种路由转发策略。