SpringCloud负载均衡Ribbon

什么是Ribbon?

Ribbon是Netflin发布的负载均衡器,它有助于控制Http和TCP客户端行为。为Bibbon配置服务提供地址列表,Ribbon就是提供某种负载均衡算法,自动帮助服务消费者去请求。Ribbon为我们默认提供了很多负载均衡算法,比如轮询,随机等。我们也可以为Ribbon提供自定义负载均衡算法。

开启负载均衡

Eureka中已经集成了Ribbon,所以我们不需要引入新的依赖。
在RestTemplate的配置方法上添加@LoadBalanced注解:

@SpringBootApplication
@EnableDiscoveryClient
public class TestApplication{
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate(){
		return RestTemplate();
	}
}
	@RestController("")
	public class TestController{
		@Autowired
		private RestTemplate rTemplate;
		@RestController
		public Test queryTestById(@Param("id")Long id){
			//service-provider 服务名称
			String url = "http://service-provider/test/"+id;
			return this.rTemplate.getForObject(url,Test.class);
		}
	}

源码跟踪

 1. RestTemplate.getForObject()
 2. RestTemplate.execute()
 3. RestTemplate.doExecute()

SpringCloud负载均衡Ribbon_第1张图片
SpringCloud负载均衡Ribbon_第2张图片
SpringCloud负载均衡Ribbon_第3张图片SpringCloud负载均衡Ribbon_第4张图片SpringCloud负载均衡Ribbon_第5张图片![在这里插入图片描述](https://img-blog.csdnimg.cn/20200325110733395.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc4OTMwMQ==,size_16,color_FFFFFF,t_70#pic_center

负载均衡配置入口

server:
	port:80
spring:
	application:
		name:server-consumer
eureka:
	client:
		server-url:
			defaultZone:http://127.0.0.1:10086/eureka
service-provider:
	ribbon:
		NFLoadBalancerRuleClassName:com.netflix.loadbalance.RandomRule

格式:{服务名称}.ribbon.NFLoadBalancerRuleClassName,值为IRule实现类

你可能感兴趣的:(Spring,Cloud,ribbon)