Spring Cloud Gateway整合Nacos


前言

由于微服务项目里包含了众多的服务,每个服务都有自己的IP地址和端口,当前端想要调用服务时极其不方便,需要知道每个服务的ip。如果在前端对每个请求地址都配置绝对路径,非常不利于系统维护。这时可以用网关解决问题,当然网关的作用不止解决服务调用问题,它还有路由转发,过滤器功能,集成断路器,集成服务发现,集成服务发现,请求转发等功能。

路由转发:Spring Cloud Gateway 可以根据请求的特定条件(如 URL路径、请求参数、请求头等)来将请求转发到后端的多个服务,并支持动态路由配置。

过滤器功能:Gateway 提供了一套过滤器机制,允许开发人员对请求进行修改和验证,以及应用各种策略,如认证、安全、监控/指标、限流、日志、请求转发/重试等。

集成断路器:可以集成断路器,比如 Netflix Hystrix,为微服务网关提供了容错处理的功能。

集成服务发现:Gateway 可以与服务注册中心集成,动态从服务注册中心获取服务信息并进行路由。

请求转发:Gateway 可以进行请求的协议转换,例如将 HTTP 请求转换成 WebSocket 请求。

请求限流:Gateway 支持通过配置限流规则,对请求进行限流,防止恶意请求或异常情况下的流量冲击。在这里插入图片描述

一、SpringCloud Gateway 是什么?

SpringCloud Gateway 它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。Spring Cloud Gateway 底层使用了高性能的通信框架Netty。

二、搭建一个网关

1.引入依赖

<dependencies>

    <!--网关-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>

    <!--服务发现中心-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <!-- 排除 Spring Boot 依赖的日志包冲突 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- Spring Boot 集成 log4j2 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>


</dependencies>

2.配置网关的bootstrap.yaml配置文件

#微服务配置
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev
        group: XXXX-XX-project
      config:
        namespace: dev
        group: XXXX-XX-project
        file-extension: yaml
        refresh-enabled: true

3.在nacos上配置网关路由策略

server:
  port: 63010 # 网关端口
spring:
  cloud:
    gateway:
#      filter:
#        strip-prefix:
#          enabled: true
      routes: # 网关路由配置
        - id: content-api # 路由id,自定义,只要唯一即可
          uri: lb://content-api # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/content/** # 这个是按照路径匹配,只要以/content/开头就符合要求
        - id: system-api
          uri: lb://system-api
          predicates:
            - Path=/system/**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值