Skip to content

SpringCloudGateway网关整合Nacos

原先存在的问题

  • 微服务地址写死(写死在yml文件中)
  • 负载均衡没做到(多个服务没做负载均衡)

网关项目添加Nacos依赖

xml
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

网关项目启动类添加注解

xml
@EnableDiscoveryClient

网关项目修改配置文件

yaml
server:
  port: 8888
spring:
  application:
    name: class-api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: order-service
          uri: lb://class-order-service  # 从nacos获取名称转发,lb是负载均衡轮训策略
          order: 1
          predicates:
            - Path=/order-server/**
          filters:
            - StripPrefix=1
      discovery:
        locator:
          enabled: true   #开启网关拉取nacos的服务

修改订单服务中的threadTest接口,用于测试

yaml
@GetMapping("/threadTest")
public Object threadTest(HttpServletRequest req){
    Map<String, Object> map = new HashMap<>();
    map.put("code", 200);
    map.put("title", "SpringCloudAlibaba微服务");
    //将端口返回,测试负载均衡
    map.put("port", req.getServerPort());
    return map;
}

启动多个订单服务,在启动1个网关服务

yaml
订单服务启动:8000、8001、8002端口
网关服务启动:8888端口

访问接口测试

yaml
//通过接口返回的端口号,可以看到配置的负载均衡生效
http://localhost:8888/order-server/api/v1/video_order/threadTest