导读
Ribbon做负载均衡,RestTemplate和Feign发起远程过程调用,整个服务的调用过程可描述为:Eureka Client从Eureka Server获取服务列表保存在本地,Ribbon做负载均衡,RestTemplate或Feign发起远程过程调用。
Feign是RestTemplate的进一步包装,它的底层就是RestTemplate;
RestTemplate集成了Ribbon;
Ribbon集成了Eureka Client;
Ribbon
Ribbon客户端的负载均衡实现,它内部提供了许多的负载均衡策略,当我们做远程服务的调用时它做客户端的负载均衡。
切换负载均衡策略
1.注解方式:
@Bean
public IRule myRule(){
//return new RoundRobinRule();
//return new RandomRule();
return new RetryRule();
2.配置文件
#针对服务定负载均衡策略 下面的provider为服务名
provider.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
#给所有服务配置
ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
注:配置文件优先级高
Ribbon脱离Eureka
Ribbon可以和服务注册中心Eureka一起工作,从服务注册中心获取服务端的地址信息,也可以在配置文件中使用listOfServers字段来设置服务端地址。
配置文件配置
ribbon.eureka.enabled=false
ribbon.listOfServers=localhost:80,localhost:81
RestTemplate
简单使用
1依赖注入
@Bean
// 开启负载均衡
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
2.发起调用
//provider为服务名,RestTemplate可根据服务名做对应的地址URL映射(ip+port)
String url ="http://provider/getservice"