欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud 之 Ribbon (三)

程序员文章站 2022-06-22 16:17:24
...

一、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 默认使用负载均衡的策略是轮询,对服务进行调用。

@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

SpringCloud 之 Ribbon (三)

SpringCloud 之 Ribbon (三)

 

相关标签: Soring Cloud ribbon