1.现有RestTemplate方式通信存在问题?
@GetMapping("user")
public String invokeDemo(){
log.info("user demo......");
//1.调用订单服务服务地址: http://localhost:9999/order接收返回值
RestTemplate restTemplate = new RestTemplate();
String orderResult = restTemplate.getForObject("http://localhost:9999/order", String.class);
log.info("调用订单服务成功{}",orderResult);
return "调用order服务成功,结果为:"+orderResult;
}
2.现有RestTemplate在进行服务间通信时?
a.调用服务的路径主机和服务端口直接写死在url中无法实现服务集群时请求负载均衡
b.调用服务的请求路径写死在代码中,日后提供服务服务路径发生变化时不利于后续维护工作
3.解决restTempalte鱼载均衡问题?
a.自定义负载均衡解决策略
问题: 1.无法实现服务健康检查2.负载均衡策略过于单—(随机)
b.使用springcloud提供组件ribbon解决负载均衡调用推荐
4.Ribbon springc loud-netflix-ribbon
作用:鱼载均衡客户端组件 就是用来x现请求调用时鱼载均衡
5 .Ribbon鱼载均衡原理
6 .使用Ribbon+RestTemplate实现请求鱼载均衡
a.使用用户调用订单服务用户服务中引入ribbon依赖
注意:consul client依赖中已经存在ribbon相关依赖无需项目中显示引入