Ribbon
1.服务调用
eureka内裤继承了ribbon
在创建RestTemplate的时候声明 @LoadBalanced
使用RestTemplate调用远程微服务;不需要拼接微服务的url,以待请求的服务名替换为IP地址
2.负载均衡
Ribbon是一个典型的负载均衡器,ribbon会获取服务的所有地址,根据内部的负载均衡算法,获取本次请求的有效地址
举一个栗子:
注意哦Value引用的包: import org.springframework.beans.factory.annotation.Value;
@Value("${spring.cloud.client.ip-address}")
private String IP;
@Value("${server.port}")
private String port;
/**
* 根据id查询商品信息
* @param id
* @return
*/
@GetMapping("/{id}")
public ProductPo findById (@PathVariable Long id){
ProductPo product = productService.findById(id);
product.setProductName("访问的地址==== " + IP + ":" + port);
System.out.println("-------------->" + product);
return product;
开两个微服务,做法就是copy,记得修改端口号,不会的看上一篇哦
结果展示:
第一次;
刷新:
在刷新:
其他负载均衡策略:
在服务消费者的application.yml配置文件中修改负载均衡策略
#修改ribbon的负载均衡策略--->服务名 - ribbon - NFLoadBalancerRuleClassName
service-product:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机策略
启动之后,展示:
Ribbon的重试机制设置
#设置ribbon的 重试机制
ConnectTimeout: 250 #Ribbon的连接超时时间
ReadTimeout: 1000 #Ribbon的数据读取超时时间
OkToRetryOnAllOperations: true #是否对所有操作进行重试
MaxAutoRetriesNextServer: 1 #切换实例的重试次数
MaxAutoRetries: 1 #对当前实例的重试次数