【SpringCloud教程】4.SpringCloud Gateway常用配置和整合Loadbalancer

上篇讲到了SpringCloud Gateway的简单使用,实现转发功能。本章主要讲到常用配置以及整合Loadbalancer。

常用配置

Gateway 基本配置route(路由)构成如下:

id:保证路由唯一;

uri:配置跳转路径,可以是具体的http资源路径、也可以是服务名。如lb://user/,lb是loadbalancer缩写,user是服务名,通过这段配置实现服务的负载均衡,这一点类似Nginxupstream

predicate:配置规则,官网配置如下:

image-20220521100702342

filters:给下游配置请求头、响应头等。

参考SpringCloud Gateway 官网:https://docs.spring.io/spring-cloud-gateway/docs/3.0.6/reference/html/

整合Loadbalancer

服务注册者准备

准备一个服务注册者项目,如果不知道搭建可参考往期博客 Nacos服务消费和负载均衡,本文使用 user-api服务 分别占用9001、9002端口。

本地IDEA通过如下配置,同一项目占用两个端口:

image-20220521102706179

测试控制层,获取服务端口号:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserCtrl {

    @Value("${server.port}")
    private String port;

    @GetMapping("getUser")
    public String getUser(){
        return "terry: " + port;
    }
}

启动项目,在Nacos管理页看到实例数为2:

image-20220521102950115

Gateway项目

pom.xml配置如下:


    <dependencies>
        <!-- 注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 网关 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!-- 响应式web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <!-- 负载均衡 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <!--Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.4.2</version>
            </dependency>
            <!--Spring Cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--Spring Cloud Alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

yml配置如下:

server:
  port: 8080

spring:
  application:
    name: gateway
  cloud:
    # nacos 配置中心
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      discovery:
        locator:
          #### 开启以服务id去注册中心上获取转发地址
          enabled: true
      # 配置路由
      routes:
        # id 保证唯一
        - id: csdn
          # 配置跳转路径(这里以我的博客首页为例)
          uri: https://blog.csdn.net/qq_37493888/
          # 路由条件
          predicates:
            - Path=/csdn/**
        - id: user
          # 配置跳转路径(这里以我的博客首页为例)
          uri: lb://user-api
          # 路由条件
          predicates:
            - Path=/user/**
          filters:
            - StripPrefix=1

访问:http://localhost:8080/user/getUser

terry:9001,terry:9002 交替执行,如下:

image-20220521104505646

image-20220521104336109

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

terrybg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值