【全栈之路】微服务课程8_Ribbon初识

简介

  • nginx:服务器端负载均衡
  • ribbon: 客户端负载均衡
  • Ribbon是Netflix发布的负载均衡器,它可以帮我们控制HTTP和TCP客户端的行为。只需为Ribbon配置服务提供者地址列表,Ribbon就可基于负载均衡算法计算出要请求的目标服务地址。
  • Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机、响应时间加权等——当然,为Ribbon自定义负载均衡算法也非常容易,只需实现IRule 接口即可。

图解

Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,选择其中一个服务提供者实例。下图展示了Ribbon与Eureka配合使用时的大致架构。

客服端配置

   以shop-consumer-movie服务为例
  • 修改MovieApplication.java

  • 修改调用方式

目标服务改成了http://shop-provider-user/users/{id} ,也就是http://{目标服务名称}/{目标服务端点} 的形式,Ribbon会自动在实际调用时,将目标服务名替换为该服务的IP和端口。

@RequestMapping("/movies")
@RestController
public class MovieController {
  @Autowired
  private RestTemplate restTemplate;

  @GetMapping("/users/{id}")
  public User findById(@PathVariable Long id) {
    // 这里用到了RestTemplate的占位符能力
//    User user = this.restTemplate.getForObject("http://localhost:8000/users/{id}", User.class, id);
    User user = this.restTemplate.getForObject("http://shop-provider-user/users/{id}", User.class, id);
    // ...电影微服务的业务...
    return user;
  }
}

服务端多端口启动

访问http://localhost:8010/movies/users/1 多次,会发现两个user服务实例都会打印日志。

你可能感兴趣的:(springboot,springcloud)