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

<!--springboot pom 依赖-->

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.6.3</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!--springcloud  pom 依赖-->

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>2021.0.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

<!--spring-cloud-starter-gateway pom 依赖-->

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>3.1.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--nacos 配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

(二)nacos 配置

    创建gateway-routes.yaml

 内容如下:

[
    {
        "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 主要由id、order、predicates、uri、filters构成。

(一)id属性

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

(二)iorder属性 

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

(三)ipredicates属性

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

1.name  路由规则匹配名称 

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

如下图所示:

 (四)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<Void> 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及使用场景、相关面试题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值