gateway面试题

简介

Gateway是springCloud中提供网关功能的框架,主要作为系统统一入口并路由转发到具体服务;可以配置各种过滤器来丰富网关的功能如:认证与鉴权、熔断与降级、限流、重试等功能,并且可以与服务发现配合使用。

什么是网关

网关一般作为系统的统一入口,主要提供内部服务的路由中转功能,一般也提供认证、鉴权、流量控制等功能。

网关位于微服务的前方

流量网关与微服务网关

流量网关(如Nignx)是指提供全局性的、与后端业务应用无关的策略,例如 HTTPS证书卸载、Web防火墙、全局流量监控等。

微服务网关(如Spring Cloud Gateway)是指与业务紧耦合的、提供单个业务域级别的策略,如服务治理、身份认证等。

Gateway的优缺点是什么

优点:
1. 统一入口:提供了统一的API入口,对外隐藏了微服务的细节实现。
2. 动态路由:能够根据请求的路径、类型等条件动态地将请求路由到不同的后端服务。
3. 过滤器:可以通过过滤器对请求进行修改、验证、日志记录等操作。
4. 集成服务发现和负载均衡:能够与服务发现组件和负载均衡组件集成,实现动态的服务发现和负载均衡。
5. 安全性:支持安全相关的功能,如认证、授权等。
6. 监控和指标:提供了监控和指标的功能,可以对网关的性能进行监控和分析。

缺点:
1. 单点故障:网关成为了系统的单点故障,一旦网关出现问题,整个系统的访问都会受到影响。(可以将多个网关实例部署在不同的服务器上,通过负载均衡器来分发流量,从而避免单点故障的问题)
2. 性能开销:网关需要处理大量的请求转发和过滤操作,可能会带来一定的性能开销。
3. 复杂性:配置和管理网关可能会增加系统的复杂性,特别是在处理大规模微服务的情况下。
4. 学习成本:使用和定制网关可能需要一定的学习成本,特别是对于初学者来说。

提供的功能

Spring Cloud Gateway提供以下功能:
1. 动态路由:能够根据请求的路径、类型(get,post)等条件动态地将请求路由到不同的后端服务。
2. 过滤器:可以通过过滤器对请求或响应进行处理(认证授权过滤器,断路器过滤器,限流过滤器,重试限流器,负载均衡过滤器等)。
3. 统一的API管理:能够提供统一的API入口,对外隐藏微服务的细节实现。
4. 监控功能:使用 Actuator 端点可以对网关中的信息激进型监控。

监控:

  • 运行状况监控:监控网关的运行状态,包括CPU、内存、磁盘、网络等方面的指标。可以使用Spring Boot Actuator提供的/actuator/health接口进行健康检查。
  • 请求统计监控:监控网关的请求情况,包括请求数、响应时间、错误率、吞吐量等指标。可以使用Spring Boot Actuator提供的/actuator/metrics/gateway.requests.*接口进行监控。
  • 路由配置监控:监控网关的路由配置情况,包括路由规则、转发目标、过滤器等配置信息。可以使用Spring Boot Actuator提供的/actuator/gateway/routes接口进行监控。
  • 日志监控:监控网关的日志输出情况,包括访问日志、错误日志、警告日志等。可以使用Logback等日志框架进行监控。

gateway的工作流程

  • 接收用户请求
  • 根据配置中的断言(判断请求路径、请求方式、请求头、请求参数等)来判断转发到那个服务
  • 对请求进行过滤器的处理(认证授权过滤器、熔断过滤器等)
  • 进行请求转发到后台服务,并接收服务端响应
  • 过滤器对请求结果进行处理
  • 返回用户请求结果

核心思想:路由转发+执行过滤器链

 

gateway的核心概念

路由(route):路由是构建网关的基本模块,它由ID,目标URI,断言集合和过滤器集合组成,如果断言为true,则匹配该路由。

断言(Predicate):用来匹配HTTP请求中的所有内容,例如请求头或请求参数,如果请求与断言匹配结果返回一个布尔值。

过滤(filter):Spring框架中GatewayFilter的实例,使用过滤器,可以载请求被路由前或者后对请求进行处理。

Gateway如何使用 Actuator 端点提供监控功能

默认在Spring Cloud Gateway中已经集成了actuator的功能,要获取gateway相关的监控信息,需要在gateway项目的配置文件中开启一些端点即可

  1. gateway/routes
    这个端点提供了当前配置的所有路由的详细信息。通过访问这个端点,你可以查看每个路由的ID、URI、顺序、断言、过滤器等信息。

  2. gateway/globalfilters
    这个端点列出了所有全局过滤器的详细信息。全局过滤器应用于所有路由,它们提供了跨多个路由的通用功能,如日志记录、认证等。

  3. gateway/routefilters
    这个端点允许你查看特定路由的过滤器列表。通过指定路由ID,你可以获取该路由上应用的所有过滤器的详细信息。

management:  
  endpoints:  
    web:  
      exposure:  
        include: gateway,routes,globalfilters,routefilters

配置文件中的lb是什么意思

lb通常指的是负载均衡(LoadBalancer)。当你在配置文件的路由规则中看到lb://前缀时,它表示该路由的目标是一个使用负载均衡的服务。

gateway服务器说明

部署在Netty上,这是因为Spring Cloud Gateway是基于WebFlux框架开发的,而WebFlux框架底层则使用高性能的Reactor模式通信框架Netty。

gateway负载均衡

老版本默认使用ribbon提供负载均衡功能,新版本使用的Spring Cloud LoadBalancer提供的负载均衡功能。

使用负载均衡功能不需要配置过滤器

默认的负载均衡策略:轮询

还有哪些负载均衡策略:轮询、随机、最少活跃调用数、

老版本用的ribbon,新版本使用的负载均衡功能由Spring Cloud LoadBalancer实现

posted @ 2024-01-15 16:24  星光闪闪  阅读(331)  评论(0)    收藏  举报