原先存在的问题

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

    网关项目添加Nacos依赖
    image.png

    1. <dependency>
    2. <groupId>com.alibaba.cloud</groupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    4. </dependency>

    网关项目启动类添加注解
    image.png

    @EnableDiscoveryClient
    

    网关项目修改配置文件

    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接口,用于测试

    @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个网关服务

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

    image.png

    访问接口测试

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