微服务架构设计:Spring Cloud Gateway与Nacos集成

微服务架构设计:Spring Cloud Gateway与Nacos集成

依赖配置

在Spring Boot项目的pom.xml中添加以下依赖:

XML 复制代码
<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>
Nacos服务注册配置

application.yml中配置Nacos服务发现:

yaml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: public
        group: DEFAULT_GROUP
动态路由配置

通过Nacos配置中心管理路由规则,创建gateway-routes.json

json 复制代码
{
  "routes": [
    {
      "id": "user-service",
      "uri": "lb://user-service",
      "predicates": ["Path=/api/user/**"],
      "filters": ["StripPrefix=1"]
    }
  ]
}
路由刷新监听

实现NacosConfigListener监听配置变更:

java 复制代码
@RefreshScope
@Configuration
public class RouteConfig {
    @Value("${spring.cloud.nacos.config.data-id}")
    private String dataId;

    @Bean
    public NacosConfigListener nacosConfigListener() {
        return new AbstractSharedListener() {
            @Override
            public void innerReceive(String dataId, String group, String config) {
                refreshRoutes();
            }
        };
    }
}
全局过滤器示例

添加认证过滤器:

java 复制代码
@Component
public class AuthFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getHeaders().getFirst("Authorization");
        if (StringUtils.isEmpty(token)) {
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }
}
负载均衡配置

确保已启用Ribbon负载均衡:

yaml 复制代码
spring:
  cloud:
    loadbalancer:
      ribbon:
        enabled: true
健康检查配置

在Nacos控制台配置健康检查端点:

modelscope.cn/learn/71369

modelscope.cn/learn/71367

modelscope.cn/learn/71365

modelscope.cn/learn/71364

modelscope.cn/learn/71361

modelscope.cn/learn/70921

modelscope.cn/learn/70918

modelscope.cn/learn/70916

modelscope.cn/learn/70914

modelscope.cn/learn/70912

modelscope.cn/learn/70910

modelscope.cn/learn/70908

modelscope.cn/learn/70906

modelscope.cn/learn/70905

modelscope.cn/learn/70902

modelscope.cn/learn/70901

modelscope.cn/learn/70898

modelscope.cn/learn/70897

modelscope.cn/learn/70894

modelscope.cn/learn/70893

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: health,info
服务熔断配置

集成Sentinel进行流量控制:

java 复制代码
@Bean
public SentinelGatewayFilter sentinelGatewayFilter() {
    return new SentinelGatewayFilter();
}
性能优化建议

调整网关线程池参数:

yaml 复制代码
server:
  tomcat:
    threads:
      max: 200
      min-spare: 10
日志追踪配置

集成Sleuth实现链路追踪:

yaml 复制代码
spring:
  sleuth:
    sampler:
      probability: 1.0
配置验证方式

通过以下命令验证路由是否生效:

bash 复制代码
curl http://localhost:8080/api/user/1
相关推荐
San813_LDD32 分钟前
[C语言]《Dev-C++ 报错解决手册(Day0607 精华版)》
java·前端·javascript
Anastasiozzzz2 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
wang09078 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java8 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
豆瓣鸡9 小时前
Spring Cloud笔记
spring·spring cloud
不知名的老吴9 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver9 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
云烟成雨TD10 小时前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
杨了个杨898210 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构