Spring Cloud Gateway 与 Nacos 的完美结合

在现代微服务架构中,服务网关扮演着至关重要的角色。它不仅负责路由请求到相应的服务,还承担着诸如负载均衡、安全认证、限流熔断等重要功能。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的一员,以其强大的功能和灵活的配置,成为了构建微服务网关的首选。而 Nacos,作为阿里巴巴开源的服务发现和配置管理平台,为微服务架构提供了强大的支持。本文将详细介绍如何将 Spring Cloud Gateway 与 Nacos 结合,构建一个高效、稳定的微服务网关。

这是之前写的zuul 路由网关 SpringCloud之zuul路由网关,可以做下对比;

接着昨天,下面介绍下如何将 Spring Cloud Gateway 与 Nacos 整合。

1 添加依赖

首先,在 pom.xml 文件中添加必要的依赖:

XML 复制代码
<dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 网关gateway依赖-->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-gateway</artifactId>
     </dependency>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
     </dependency>

 </dependencies>

 <dependencyManagement>
     <dependencies>
     <!--SpringCloud依赖,一定要放到dependencyManagement中,起到管理版本的作用即可-->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-dependencies</artifactId>
         <version>Hoxton.SR8</version>
         <type>pom</type>
         <scope>import</scope>
     </dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-alibaba-dependencies</artifactId>
             <version>2.2.3.RELEASE</version>
             <type>pom</type>
             <scope>import</scope>
         </dependency>
     </dependencies>
 </dependencyManagement>
2 配置文件

application.yml 文件中配置 Nacos 和 Gateway:

XML 复制代码
server:
  port: 8080

spring:
  application:
    name: service-gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    gateway:
      routes:
        - id: service-consumer
          uri: lb://service-consumer
          predicates:
            - Path=/consumer/**
3 启动类

创建一个启动类来启动 Spring Boot 应用:

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayStarter {
    public static void main(String[] args) {
        // 启动网关服务
        SpringApplication.run(GatewayStarter.class, args);
        System.out.println("Gateway服务启动成功!");
    }
}
4 服务提供者和消费者

我这里还是使用上篇的生产者消费者,唯一变得一点是加了如下两块,便于测试与统一访问;

5. 测试

启动 Nacos 服务器、Gateway 应用、服务提供者和服务消费者。然后你可以通过以下 URL 访问服务:

5.1确保服务都已启动:
5.2 浏览器验

通过以上步骤,你已经成功构建了一个基于 Spring Cloud Gateway 和 Nacos 的微服务网关。这个网关不仅能够高效地路由请求,还能够与 Nacos 无缝集成,实现服务发现和动态配置管理。希望本文对你构建微服务架构有所帮助。

相关推荐
没有bug.的程序员18 小时前
Service Mesh 与 Spring Cloud 共存方案:双体系治理、平滑迁移与风险控制实战指南
云原生·springcloud·流量治理·混合架构·servicemesh·微服务迁移·技术演进
奥升新能源平台3 天前
奥升充电平台安全稳定体系构建
运维·安全·开源·springcloud
qq_165901693 天前
spring-cloud读取Nacos上的配置
java·spring cloud·springcloud
无心水3 天前
【分布式利器:腾讯TSF】2、腾讯微服务框架TSF实战指南:Spring Boot零侵入接入与容器化部署全流程
java·spring boot·分布式·微服务·springcloud·分布式利器·腾讯tsf
lhrimperial3 天前
深入浅出Spring Cloud Gateway:从理论到企业级实践(一)
spring cloud·微服务·系统架构·gateway
lhrimperial3 天前
深入浅出Spring Cloud Gateway:从理论到企业级实践(二)
spring cloud·微服务·系统架构·gateway
ghostwritten4 天前
云原生流量治理新标准:Kubernetes Gateway API 部署实践指南
云原生·kubernetes·gateway
齐 飞4 天前
Spring Cloud Alibaba快速入门-Gateway
spring cloud·微服务·gateway
Linux运维技术栈4 天前
Gravitee Kafka Gateway 规范部署:HTTP API化封装与安全隔离实践
http·kafka·gateway
麦兜*5 天前
【Spring Boot 3 + Spring AI】 实战:十分钟集成 OpenAI API 构建智能应用
java·人工智能·spring boot·spring·ai编程·springcloud