GateWay相关题目

spring ali babab gateway


第一章 spring ali bababgateway简单介绍


目录

前言

一、网关是什么?

二、springgateway中如何进行服务平滑迁移?

1. spring ali baba gateway 集成

(二)nacos 配置

2.springgateway 组成

总结



前言

随着目前市场上大多数微服务架构网关采用springcloud gateway网关以webflux、netty、reator组成的网关,当然也有hong 网关,zuul网关等。这里着重以gateway展开分析。


一、网关是什么?

 网关 大致理解为接口组件管家,通过接口组件管家统一规划化,抽象化,便于管理级维护

二、springgateway中如何进行服务平滑迁移?

该题目主要针对gateway权重设置的考察。

可以这样回答:集成nacos 配置中心,使用nacos 动态刷新机制,设置相同的组,设置的相同的uri 设置不同的断言权重比例,进行平滑迁移。

 在断言中predicates 设置weight 权重分配比例,权重主要事项:

 每个路由的uri 保持一致,例如下面的路由配置,- id: weight_high 和- id: weight_low 设置相同的

url,其中 - Weight 设置权重的比例 

- Weight=group1, 8   其中 group1 自定义组的组的名称 ,可以自行定义,"8" 是指 在group1组下 请求率达80%.

- Weight=group1, 2 其中 group1 自定义组的组的名称 ,可以自行定义,"8" 是指 在group1组下 请求率达20%.

spring:
  cloud:
    gateway:
      routes:
      - id: weight_high
        uri: https://weighthigh.org
        predicates:
        - Weight=group1, 8
      - id: weight_low
        uri: https://weightlow.org
        predicates:
        - Weight=group1, 2

1. spring ali baba gateway 集成

具体详情可联系作者授权。git 地址: https://gitee.com/t-zhanxf/gate-way.git

(一)pom依赖

这里整合了springboot 、springcloud、springgateway、nacos


    org.springframework.boot
    spring-boot-dependencies
    2.6.3
    pom
    import


    org.springframework.cloud
    spring-cloud-dependencies
    2021.0.0
    pom
    import


    com.alibaba.cloud
    spring-cloud-alibaba-dependencies
    3.1.0
    pom
    import



    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config

(二)nacos 配置

    创建gateway-routes.yamlGateWay相关题目_第1张图片

 内容如下:

[
    {
        "id":"butool-cloud-test",  
        "order":0, 
        "predicates":[ 
            {
              "args":{
                  "pattern":"/gateway/provider/**"  
              },
              "name":"Path" 
              }
        ],
        "uri":"http://localhost:8070/",
        "filters":[
            {
                "name":"AuthorToken" 
            },
            {
               "name":"StripPrefix",
               "args":{
                    "parts":"1" 
               }     
            }
        ]
    }
]

2.springgateway 组成

gateway 组成

GateWay相关题目_第2张图片


gateway 主要由id、order、predicates、uri、filters构成。

(一)id属性

   一组路由主键,保持唯一即可,指定某个服务一组服务api ,exg: 路由到butool-cloud-test 应 用,可定义成 "id":"butool-cloud-test"。

(二)iorder属性 

  一组路由的优先级,其值越小,顺序靠前。

(三)ipredicates属性

 断言规则,用于路由规则的匹配,包含两部分 

1.name  路由规则匹配名称 

2.args 理由规则匹配参数配置

如下图所示:

GateWay相关题目_第3张图片

 (四)uri属性

   uri 需要转发的路径, 一组服务url 前缀 exg:http://localhost:8070/    

(五)filters 过滤器

   自定义过滤器 实现 GatewayFilter Ordered ,实现服务鉴权、操作日志等

   如下:

import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
 * 鉴权验证
 * @author zxf
 */
public class AuthorGateWayFilter implements GatewayFilter, Ordered {
    @Override
    public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getHeaders().getFirst("token");
        if("test".equals(token)){
            return chain.filter(exchange);
        }
        // 标记此次请求没有权限,并且结束这次请求
        exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
        //请求结束
        return exchange.getResponse().setComplete();
    }

    /**
     * 优先级
     * @return
     */
    @Override
    public int getOrder() {
        return HIGHEST_PRECEDENCE+2;
    }
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了gateway及使用场景、相关面试题。

你可能感兴趣的:(#,spring相关题目,gateway,java)