Ribbon服务调用端负载均衡

/ 技术 / 0 条评论 / 110浏览

简介

Ribbon是Netflix发布的开源项目,主要功能是为REST客户端实现负载均衡

包含6个组件

  1. ServerList:负载均衡使用的服务器列表。这个列表会缓存在负载均衡器中,并定期更新。 当Ribbon与Eureka结合使用时, ServerList的实现类就是DiscoveryEnabledNIWSServerList, 它会保存Eureka Server中注册的服务实例表。
  2. ServerListFilter:服务器列表过滤器。这是一个接口,主要用于对Service Consumer获取到的服务器列表进行预过滤,过滤的结果也是ServerList。Ribbon提供了多种过滤器的实现。
  3. IPing:探测服务实例是否存活的策略。
  4. IRule:负载均衡策略,其实现类表述的策略包括:轮询、随机、根据响应时间加权等。
  5. ILoadBalancer:负载均衡器。这也是一个接口,Ribbon为其提供了多个实现,比如ZoneAwareLoadBalancer。 而上层代码通过调用其API进行服务调用的负载均衡选择。一般ILoadBalancer的实现类中会引用一个IRule。
  6. RestClient:服务调用器。顾名思义,这就是负载均衡后,Ribbon向Service Provider发起REST请求的工具。

Ribbon工作时会做四件事

  1. 优先选择在同一个Zone且负载较少的Eureka Server;
  2. 定期从Eureka更新并过滤服务实例列表;
  3. 根据用户指定的策略,在从Server取到的服务注册列表中选择一个实例的地址;
  4. 通过RestClient进行服务调用。