SpringCloud 之 Ribbon (三)

一、Ribbon 简介 

       Ribbon是Netflix发布的开源项目,主要提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon会基于某种规则(如简单轮询,随机连接,根据响应时间加权等)去连接这些机器。我们也可以使用Ribbon实现自定义的负载均衡算法。

二、Ribbon 原理

       将Load Balancer逻辑集成到consumer,consumer从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择一个合适的服务器。

三、常见负载均衡策略

1.随机负载均衡 (Random)

   随机选择状态为UP的Server

2.加权响应时间负载均衡 (WeightedResponseTime)

   根据响应时间分配一个weight,响应的时间越长,weight越小,被选中的可能性越低。

四、集成Eureka使用

1.eureka-consumer项目中添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

2.获取RestTemplate方法上增加注解@LoadBalanced

@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder) {
	return builder.build();
}

3.使用服务名称作为请求 URL

       URL中的eureka-provider为eureka-provider项目中的应用名,多个provider的应用名要一致,ribbon会根据负载均衡策略去选择调用哪一台的服务。

      Ribbon 默认使用负载均衡的策略是轮询,对服务进行调用。

扫描二维码关注公众号,回复: 2877024 查看本文章
@RestController
@RequestMapping("/user")
public class UserController {

	@Autowired
	private RestTemplate restTemplate;

	@RequestMapping("get/{id}")
	public User get(@PathVariable("id") Integer id) throws Exception {
		return restTemplate.getForObject("http://eureka-provider/provider/user/get/" + id, User.class);
	}

}

4.其他负载均衡策略使用,比如创建个随机策略。

@Bean
public IRule randomRule() {
    return new RandomRule();
}

五、注意事项

     Eureka + Ribbon 集成后,使用服务名称作为请求 URL,服务名称中不要有下划线(_)。

     eureka-provider不要写成eureka_provider

猜你喜欢

转载自blog.csdn.net/zzz127333092/article/details/81812492