springcloud gateway搭建及动态获取nacos注册的服务信息信息

前言

Spring Cloud Gateway 通过集成 Nacos 服务发现,可以动态获取注册到 Nacos 的微服务实例信息,并根据服务名(Service Name)自动生成路由规则或手动配置路由规则,实现请求的动态路由和负载均衡。

一个最简单的网关就是实现所有微服务的代理即可,但是生产环境通常需要服务鉴权限制访问等,这里先简单示例一个没有鉴权,可以访问所有微服务接口的网关

创建项目

创建一个springboot项目

注意 :避免引入 spring-boot-starter-web,因 Gateway 基于 WebFlux 非阻塞模型

添加依赖

复制代码
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>





        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2022.0.0.0-RC2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2022.0.0.0-RC2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>4.0.5</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.0.5</version>
        </dependency>

修改配置

复制代码
application.yml
复制代码
server:
  port: 8080

spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  # 服务注册地址
        namespace: local            # 命名空间(默认 public,我这里改为了local)
        group: DEFAULT_GROUP         # 分组
    gateway:
      discovery:
        locator:
          enabled: true              # 自动根据服务名生成路由(重要!)
          lower-case-service-id: true

启动和调用

成功访问到微服务的接口调用成功

手工配置路由

复制代码
spring:
  application:
    name: api-gateway

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  # ??????
        namespace: local            # ??????? public?
        group: DEFAULT_GROUP         # ??
    gateway:
      discovery:
        locator:
          enabled: true              # ????????????????
          lower-case-service-id: true
      routes:
        - id: hello_route  # 路由唯一标识
          uri: http://localhost:8081  # 目标服务地址
          predicates:
            - Path=/hello/**  # 路径匹配规则

访问配置的路由

总结

这里只是个简单的调用,主要目的是走通微服务调用的流程,后续会不断完善权限配置等

相关推荐
SWAGGY..10 分钟前
【C++初阶】:(15)模板进阶--从非类型参数到模板特化与分离编译
java·服务器·前端
楠楠子呀32 分钟前
独立站聊天转化全链路:从二维码引流到数据复盘
java·javascript·数据仓库·python·c#·自动化·etl
yurenpai(27届找实习中)33 分钟前
从零读懂AI智能客服(二):Java 多模块项目如何协作:Maven 依赖、Spring 注入与运行时装配
java·spring·maven
有来技术1 小时前
youlai-boot 实战:MinIO 停止维护,Docker 迁移 RustFS 完整记录
java·后端·docker
吴声子夜歌1 小时前
Java面试——设计模式(二)
java·设计模式·面试
JAVA面经实录9171 小时前
MySQL问题定位与性能优化完整知识体系
java·jvm·数据库·mysql·性能优化
Rain的Java大神之路1 小时前
Docker搭建Redis集群完全指南
java·运维·redis·后端·docker·容器·架构
Raas1001 小时前
大模型网关和API网关区别是什么?MAI Gateway统一AI流量治理
java·大数据·运维·人工智能·gateway·企业级·ai网关
BioRunYiXue1 小时前
RACE技术全攻略:从全长克隆到靶基因验证
java·javascript·网络·人工智能·科技·算法·eclipse
AC赳赳老秦2 小时前
个保法下数据处理:OpenClaw 自动过滤公开数据中的个人信息,保障采集分析合规性
java·python·sqlite·json·php·deepseek·openclaw