SpringBoot单独使用Zuul+ribbon实现负载均衡与网关功能
1.创建Zuul的服务
-
创建SpringBoot时勾选web+zuul+ribbon即可
-
在application.yml中加入如下代码
server: port: 9000 zuul: routes: api-1: path: /app/** #url: http://localhost:8081/ api-2: path: /tv/** url: http://localhost:8083/ api-1: ribbon: listOfServers: http://localhost:8081,http://localhost:8082 ribbon: eureka: enabled: false
-
在@SpringBootApplication上加@EnableZuulProxy注解,代表开启zuul服务
注:配置中的api-1和api-2可以随便起名,但注意要和下方的api-1: ribbon: listOfServers 对得上号
如果不使用负载均衡ribbon的下两行配置可以去掉。
2.创建并启动三个服务
- 三台模拟机创建步骤一样,需要注意的是端口号不一样,我这里创建的是8081,8082,8083和上文对应。
- 这里创建时只勾选web即可
- 创建controller
代码结构:
Controller:
@RestController
public class MAController {
@RequestMapping("/method")
public void methodA(){
System.out.println("----->A");
}
}
application.properties
server.port=8081
注:类似这样创建出ZuulMachine_B和C ,其中ZuulMaster为上文创建的。
3.测试步骤
分别启动A,B,C三台服务器,验证可单独访问
访问http://localhost:9000/app/method,可以在A和B的控制台从打印结果看到输出字样,此时通过负载分发到了8081和8082上
访问http://localhost:9000/tv/method 可以看到只发到8083上,这里可看出负载和非负载的对比。