04.Ribbon负载均衡

04.Ribbon负载均衡

SpringCloud Ribbon是基于Netfilx Ribbon实现的服务器负载均衡工具。

Ribbon的

客户端组件提供完整的配置项目,如连接超时、重试等。在配置文件中列出LoadBalancer(LB)后面的所有机器,Ribbon会自动帮你进行基于某种规则(随机,轮询,权重)连接这些机器,从而实现Ribbon进行负载均衡。

  • 集中式负载均衡

在消费者和提供者之间使用独立的负载均衡设备例如Nginx,该设备将访问通过某种策略转发至访问的提供方。

  • 进程式负载均衡

将负载均衡集成到消费方,消费方从注册中心中获取那些提供者可以使用,自己选择合适自己的服务器。

导入Maven依赖

在新版的eureka-client中,已经集成包含了Ribbon,所以我们不需要进行对Ribbon的依赖导入。


<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    <version>3.1.4version>
dependency>

编写配置文件

进行对Eureka的配置编写。

server:
  port: 80

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://yume7001.com:7001/eureka,http://yume7002.com:7002/eureka,http://yume7003.com:7003/eureka

编写ConfigBean文件

添加@LoadBalanced注解,即可进行负载均衡。

@Configuration
public class ConfigBean {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

修改Controller文件

我们将原来的固定路径进行修改。

private static final String REST_URL = "http://localhost:8001";

将其更新为我们需要使用的服务名称。

@Controller
public 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);
    }
}

你可能感兴趣的:(Eureka,ribbon,负载均衡,eureka)