Spring Cloud Ribbon理解与简单使用

Ribbon:提供客户端侧负载均衡算法,默认轮询(Feign中自带ribbon,不需导入依赖)
工作流程:
1、选择Eureka Server(优先选择在同一个Zone且负载较少的Server)
2、根据用户指定的策略(Ribbon提供),从Server取到的服务注册列表中选择一个地址

region:可以简单理解为地理上的分区
zone:可以简单理解为region内的具体机房

@LoadBalanced注解:在主程序中的RestTemplate添加注解即可实现负载均衡
eg:

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

控制器controller:

return this.restTemplate.getForObject("http://生产者yml的applicationname+接口名", 接受的类型.class); 

配置config类:(config类不能在@ComponentScan和@SpringBootApplication扫描目录中)
开始类中:

@RibbonClient(value = "指定微服务名",configuration = 指定配置文件.class)
config类:
@Configuration
public class RibbonConfig {
    @Bean
    public IRule iRule() {
        return new RandomRule();//创建一个随机的规则,用于负载均衡时的随机算法
    }
}

或yml配置:

微服务名: 
	ribbon:
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #默认规则类
WeightedResponseTimeRule

获取指定服务:

@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/test")
public String test() {
	ServiceInstance serviceInstance =
this.loadBalancerClient.choose("microservice-provider-user");//获取microserviceprovider-user的一个实例
	return "1";
}

禁用rabbon:

ribbon:
    eureka:
        enabled: false #禁用rabbion
microservice-provider-user: #给当前的微服务指定具体的地址,将不再有负载均衡
    ribbon:
        listOfServers: localhost:7900

你可能感兴趣的:(日常学习记录,资料)