Ribbon主要功能是提供客户端的软件负载均衡算法,提供一系列完整的配置项,例如连接超时、重试等。
在Eureka的自动配置依赖模块spring-cloud-starter-eureka中,已经集成了Ribbon,可以直接使用Ribbon来实现客户端的负载均衡
在Eureka中使用Ribbon十分简单,只需要在实例化RestTemplate的方法上添加@LoadBalanced注解,并在其执行方法中使用服务实例的名称即可。
<1>添加@LoadBalanced注解。
<2>使用服务实例的名称。
详细:
<1>添加@LoadBalanced注解。在microservice-eureka-user工程的引导类中
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
被注解后,就具有了负载均衡的能力。
<2>使用服务实例的名称。
@Getmapping("findOrdersByUser/{id}")
public String findOrdersByUser(@PathVariable String id){
//假设用户只有一个订单,并且订单id为132
int oid = 123;
return this.restTemplate.getForObject("http://microservice-eureka-order/"+id,String.class);
}
不使用“主机地址+端口号”的形式,而使用的是注册中心的订单服务实例名称。
其实Ribbon在工作时主要分为两步:第一步选择Eureka Server,它会优先选择在同一区域且负载较少的Sever;第二步会根据用户指定的策略(如轮询、随机等)从server取到的服务注册列表中选择一个地址。
Feign集成了Ribbon
<
使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模板化的调用方法.但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用.所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义.在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(以前是Dao接口上标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量
作者:Shaw_Young
链接:https://www.jianshu.com/p/94177e224ef8
来源:简书
>
具体过程:
https://blog.csdn.net/forezp/article/details/69808079