纷纭教育
您的当前位置:首页Ribbon(负载均衡器)--SpringCloud的组件

Ribbon(负载均衡器)--SpringCloud的组件

来源:纷纭教育


目前主流的负载方案分为以下两种:

  • 集中式负载均衡,在消费者和服务提供者中间使用的代理方式进行负载,有硬件的(比如 交换机,F5),也有软件的(比如 Nginx)。
  • 客户端根据自己的请求情况做负载均衡,Ribbon 就属于客户端自己做负载均衡。

一、Ribbon是什么?

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

二、Ribbon的主要功能

主要功能是提供客户端(服务消费者)的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer(简称LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则、算法去调用这些服务。Ribbon默认提供 很多种负载均衡算法(负载均衡策略),例如轮询、随机 等等。

  • Load Balancer(简称LB):简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。

 三、Ribbon负载均衡策略

负载均衡接口:com.netflix.loadbalancer.IRule

  •  这里只说两个负载均衡策略:轮询策略、随机策略。
  • 轮询策略com.netflix.loadbalancer.RoundRobinRule:该策略实现按照线性轮询的方式依次选择实例的功能。具体实现如下,在循环中增加了一个count计数变量,该变量会在每次轮询之后累加并求余服务总数。

  • 随机策略com.netflix.loadbalancer.RandomRule:该策略实现了从服务清单中随机选择一个服务实例的功能。

  •  如果上面看着费劲,那来个简单的:
  • 随机策略:

  • 轮询策略:  

 四、实现

  • 使用技术:Ribbon + RestTemplate。

4.1、pom.xml

  • nacos里面已经集成了ribbon的依赖,我们这里直接用的nacos的依赖,所以不用在引入ribbon依赖。

 4.2、写个配置类,注入RestTemplate,并加注解@LoadBalanced,表示拦截所有RestTemplate发出的请求。

 4.3、Ribbon会自动根据指定的算法来实现负载均衡。

因篇幅问题不能全部显示,请点此查看更多更全内容