interview
springcloud
什么是微服务网关为什么需要服务网关

SpringCloud 面试题, 什么是微服务网关?为什么需要服务网关?

SpringCloud 面试题, 什么是微服务网关?为什么需要服务网关?

QA

Step 1

Q:: 什么是微服务网关?

A:: 微服务网关(API Gateway)是一种服务,它位于客户端和微服务之间,用于请求路由、组合、过滤等。微服务网关是一个进入微服务系统的唯一入口,所有客户端的请求都会先经过网关,然后由网关路由到相应的服务。网关还可以处理认证授权、负载均衡、缓存、日志记录、监控等功能,从而简化客户端的调用逻辑和提升系统的安全性、稳定性。

Step 2

Q:: 为什么需要服务网关?

A:: 服务网关能够提供统一的入口,简化客户端与微服务的交互,并能够处理跨多个服务的请求和响应。它还能为系统提供额外的安全性,通过认证授权机制来控制对微服务的访问。此外,网关可以实现负载均衡、限流、熔断等功能,有助于提高系统的可用性和稳定性。同时,网关可以整合不同微服务的响应,提供给客户端一个统一的结果,减少客户端对微服务架构的了解程度。

Step 3

Q:: Spring Cloud Gateway 与 Zuul 有什么区别?

A:: Spring Cloud Gateway 是 Spring 官方提供的第二代网关框架,基于 Spring 5、Spring Boot 2 和 Project Reactor 构建,支持响应式编程模型,性能相较于第一代的 Zuul 提高了很多。Zuul 是 Netflix 开源的网关,虽然功能强大,但性能相对较低,且不支持响应式编程。Spring Cloud Gateway 还提供了更丰富的路由匹配功能和更强的扩展性。

Step 4

Q:: 服务网关的核心功能有哪些?

A:: 服务网关的核心功能包括:1. 请求路由:将客户端的请求转发到相应的微服务;2. 负载均衡:将请求分发到多个实例,保证高可用性;3. 认证授权:验证请求的合法性并控制访问权限;4. 流量控制:限流、熔断、降级等机制来保护后端服务;5. 日志和监控:记录请求日志并监控系统性能;6. 响应聚合:组合多个服务的响应,减少客户端的请求次数。

Step 5

Q:: 如何在 Spring Cloud Gateway 中配置自定义过滤器?

A:: 在 Spring Cloud Gateway 中,可以通过实现 GatewayFilter 接口或继承 AbstractGatewayFilterFactory 类来创建自定义过滤器。过滤器可以在全局或特定路由级别应用,通常用于在请求进入网关和响应返回客户端之间执行特定的逻辑。例如,记录日志、添加认证信息、修改请求头等。配置好自定义过滤器后,可以在 application.yml 或 Java 配置类中将其应用到指定的路由。

用途

面试这类内容的目的是评估候选人对微服务架构的理解,以及是否具备管理复杂分布式系统的能力。在实际生产环境下,当企业采用微服务架构时,服务网关几乎是必不可少的组件,尤其是在有多个客户端(如 Web 前端、移动应用等)访问后台服务时。服务网关不仅提供统一的入口,还能处理认证、负载均衡、监控等多个与安全性和性能相关的重要功能。因此,理解和掌握服务网关是开发和维护微服务系统的关键技能。\n

相关问题

🦆
什么是微服务架构?

微服务架构是一种软件开发架构风格,将应用程序划分为一组小的、独立部署的服务。每个服务都是一个独立的进程,通常围绕业务功能构建,可以独立部署和扩展。微服务之间通过轻量级的通信协议(通常是 HTTP 或消息队列)进行交互。微服务架构能够提高系统的灵活性、可扩展性和可维护性,但也带来了分布式系统的复杂性和挑战。

🦆
如何进行微服务之间的通信?

微服务之间的通信方式有多种,包括:1. HTTP/REST:最常见的同步通信方式;2. gRPC:一种高性能的开源 RPC 框架,适用于低延迟的场景;3. 消息队列:如 Kafka、RabbitMQ,适用于异步通信,解耦微服务并提供可靠的消息传递;4. 事件驱动:基于事件的模式,通过发布-订阅机制实现微服务的解耦和扩展。

🦆
如何实现微服务的监控和日志管理?

监控和日志管理是微服务架构中的关键部分,可以通过以下工具实现:1. Spring Boot Actuator 提供了内置的监控端点;2. Prometheus 和 Grafana 用于度量数据的收集和展示;3. ELK 堆栈(Elasticsearch, Logstash, Kibana)用于日志的集中式收集、分析和可视化;4. Zipkin 或 Jaeger 用于分布式追踪,帮助理解请求在多个微服务之间的流转情况。

🦆
什么是服务发现?如何在 Spring Cloud 中实现?

服务发现是微服务架构中的关键组件,允许服务自动注册和查找其他服务。Spring Cloud 提供了多种服务发现解决方案,最常见的是使用 Netflix Eureka。服务在启动时会向 Eureka Server 注册其自身,其他服务则通过 Eureka Client 查询并调用目标服务。Consul 和 Zookeeper 也是常见的服务发现工具。

🦆
如何处理微服务中的分布式事务?

分布式事务是指跨多个微服务的操作需要保持原子性。处理分布式事务有多种策略:1. 两阶段提交(2PC):协调者向所有参与者发出准备和提交请求,但复杂且影响性能;2. 事务补偿(SAGA):将事务拆分为多个子事务,失败时通过补偿事务进行回滚;3. TCC(Try-Confirm-Cancel):基于 2PC 的一种优化方式,增加了资源的预留和确认步骤。