Spring Cloud Gateway 搭建网关

  1. 新建一个module添加依赖:
xml 复制代码
<!--Spring Cloud Gateway依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<!-- nacos客户端依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. application,yml中配置路由:
yaml 复制代码
server:
  port: 10010  #网关端口
spring:
  application:
    name: server  #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #将网关注册到naocs中心
  cloud:
    gateway:
      routes:
        - id: service-route                # 路由ID
          uri: http://backend-service      # 后端服务地址
          predicates:
            - Path=/api/**                 # 请求路径匹配规则

3.编写启动类启用网关:

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

Spring Cloud Gateway是Spring Cloud中的一个组件,它作为微服务的统一入口,主要作用包括:

  1. 请求路由:所有进入Spring Cloud Gateway的请求都会被路由到对应的微服务。路由规则可以通过配置文件灵活地进行定制。
  2. 权限控制:网关作为微服务入口,需要校验用户是否有请求资格,如果没有则进行拦截。权限控制可以基于各种条件,例如IP地址、用户名、请求头信息等。
  3. 限流:当请求流量过高时,Spring Cloud Gateway会在内部进行限流,即按照下游微服务能够接受的速度来放行请求,避免服务压力过大。
  4. 负载均衡:当目标服务有多个时,Spring Cloud Gateway会进行负载均衡,以确保各个微服务负载均匀,提高整体性能。

Spring Cloud Gateway还支持多种编程范式,例如阻塞式编程和响应式编程。在Spring Cloud生态中,Zuul网关和Spring Cloud Gateway可以共存,前者更适用于阻塞式编程,而后者则是基于Spring5中提供的WebFlux,更适合于响应式编程。

相关推荐
evans在进步1 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
渡我白衣2 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
电商API_180079052472 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
zzzll11112 小时前
深度剖析:HashMap 并发死循环与 ConcurrentHashMap 两代演进全解
java·开发语言
秋名RG3 小时前
2026/5/27 生产事故复盘与整改方案
java
血小板要健康3 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
坐吃山猪3 小时前
【多线程】CompletableFuture使用
java·开发语言·多线程
m0_587383004 小时前
点餐预约核销系统的架构脉络
java·架构·系统架构·需求分析
代码方舟4 小时前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化
爱学堂IT分享4 小时前
图灵Java互联网架构师六期
java·开发语言