目录
目前主流的负载方案分为以下两种:
一、Ribbon是什么?
二、Ribbon的主要功能
三、Ribbon负载均衡策略
四、实现
4.1、pom.xml
4.2、写个配置类,注入RestTemplate,并加注解@LoadBalanced,表示拦截所有RestTemplate发出的请求。
4.3、Ribbon会自动根据指定的算法来实现负载均衡。
目前主流的负载方案分为以下两种:
- 集中式负载均衡,在消费者和服务提供者中间使用独立的代理方式进行负载,有硬件的(比如 交换机,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依赖。