原先存在的问题
- 微服务地址写死(写死在yml文件中)
- 负载均衡没做到(多个服务没做负载均衡)
网关项目添加Nacos依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
网关项目启动类添加注解
@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端口
访问接口测试
http://localhost:8888/order-server/api/v1/video_order/threadTest
//通过接口返回的端口号,可以看到配置的负载均衡生效