因为Zuul API 网关内置Ribbon负载均衡器,因此比较容易实现负载均衡。
更新微服务,使其打印端口号
为了能够验证负载均衡,更新前面几节内容创建的微服务:
package com.xarhsoft.photoapp.api.users.io.controllers;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
@RestController
@RequestMapping("/users")
public class UsersController {
@Autowired
private Environment env;
@GetMapping("/status/check")
public String status() {
return "Working on port " + env.getProperty("local.server.port");
}
}
开启微服务的多实例
为了验证负载均衡,必须启动同一个微服务的多个实例:
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8099
验证负载均衡
本例中的访问地址如下:
http://localhost:8011/users-ws/users/status/check
打开浏览器,访问上述地址,快速刷新浏览器,可以看到不同的输出内容不同:
Working on port 8099
Working on port 0