04.负载均衡
SpringCloud Ribbon是基于Netfilx Ribbonandroid系统定制开发实现的服务器负载均衡工具。
Ribbon的
android系统定制开发客户端组件提供完整的配置项目,如连接超时、重试等。在配置文件中列出LoadBalancer(LB)后面的所有机器,Ribbon会自动帮你进行基于某种规则(随机,,权重)连接这些机器,从而实现Ribbon进行负载均衡。
- 集中式负载均衡
在消费者和提供者之间使用独立的负载均衡设备例如Nginx,该设备将访问通过某种策略转发至访问的提供方。
- 进程式负载均衡
将负载均衡集成到消费方,消费方从中获取那些提供者可以使用,自己选择合适自己的服务器。
导入Maven依赖
在新版的eureka-client中,已经集成包含了Ribbon,所以我们不需要进行对Ribbon的依赖导入。
<!--Eureka--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.1.4</version></dependency>
- 1
- 2
- 3
- 4
- 5
- 6
编写配置文件
进行对Eureka的配置编写。
server: port: 80eureka: client: register-with-eureka: false service-url: defaultZone: http://yume7001.com:7001/eureka,http://yume7002.com:7002/eureka,http://yume7003.com:7003/eureka
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
编写ConfigBean文件
添加@LoadBalanced注解,即可进行负载均衡。
@Configurationpublic class ConfigBean { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
修改Controller文件
我们将原来的固定路径进行修改。
private static final String REST_URL = "http://localhost:8001";
- 1
将其更新为我们需要使用的服务名称。
@Controllerpublic class BirdConsumer { @Resource private RestTemplate restTemplate; private static final String REST_URL = "http://springcloud-provider-bird"; @ResponseBody @RequestMapping("/consumer/bird/query") public List<Bird> getAllBird(){ return restTemplate.getForObject(REST_URL+"/bird/query",List.class); } @ResponseBody @RequestMapping("/consumer/bird/query/{id}") public Bird getBird(@PathVariable("id")int id){ return restTemplate.getForObject(REST_URL+"/bird/query/"+id,Bird.class); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19