Ribbon负载均衡策略

article/2025/10/28 16:17:05

 

目录

1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,

2. @LoadBalanced


1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,

对于SpringCloud Alibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示:


在这里插入图片描述

 

当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略.

Ribbon 是什么?

(Netflix公司提供的负载均衡客户端,一般应用于服务的消费方法)

Ribbon 可以解决什么问题?

(基于负载均衡策略进行服务调用, 所有策略都会实现IRule接口)


Ribbon 内置的负载策略都有哪些?

(8种,可以通过查看IRule接口的实现类进行分析)


@LoadBalanced的作用是什么?(描述RestTemplate对象,用于告诉Spring框架,在使用RestTempalte进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后在拦截器内部,启动负载均衡策略。)


我们可以自己定义负载均衡策略吗?(可以,基于IRule接口进行策略定义,也可以参考NacosRule进行实现)
 

 

 

2. @LoadBalanced


1.当使用RestTemplate进行远程服务调用时,假如需要负载均衡,还可以在RestTemplate对象构建时,使用@LoadBalanced对构建RestTemplate的方法进行修饰,例如在ConsumerApplication中构建名字为loadBalancedRestTemplate的RestTemplate对象:
 

@Bean
@LoadBalanced
public RestTemplate loadBalancedRestTemplate(){return new RestTemplate();
}

 

2.在需要RestTemplate实现负载均衡调用的地方进行依赖注入.例如在ConsumerController类中添加loadBalancedRestTemplate属性 

@Autowired
private RestTemplate loadBalancedRestTemplate;

 

3. 接下来,可以在对应的服务端调用方的方法内,基于RestTemplate借助服务名进行服务调用, 例如:

@GetMapping("/consumer/doRestEcho3")
public String doRestEcho03(){String url=String.format("http://%s/provider/echo/%s","sca-provider",appName);//向服务提供方发起http请求,获取响应数据return loadBalancedRestTemplate.getForObject(url,//要请求的服务的地址String.class);//String.class为请求服务的响应结果类型
}

 

 4.RestTemplate在发送请求的时候会被LoadBalancerInterceptor拦截,它的作用就是用于RestTemplate的负载均衡,LoadBalancerInterceptor将负载均衡的核心逻辑交给了loadBalancer,核心代码如下所示(了解):

public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) throws IOException {final URI originalUri = request.getURI();String serviceName = originalUri.getHost();return this.loadBalancer.execute(serviceName, requestFactory.createRequest(request, body, execution));
}

总结:@LoadBalanced注解是属于Spring,而不是Ribbon的,Spring在初始化容器的时候,如果检测到Bean被@LoadBalanced注解,Spring会为其设置LoadBalancerInterceptor的拦截器。


http://chatgpt.dhexx.cn/article/vDv898ba.shtml

相关文章

nginx - 负载均衡配置-负载均衡策略

目录 知识点1:网站流量分析指标 什么是pv? 什么是uv? 什么是IP? 知识点2:正向代理和反向代理 知识点3:负载均衡实验 什么是负载均衡? IP地址规划: 实验拓扑图 知识点4&…

负载均衡

流量负载均衡介绍 1 负载均衡产生的背景 LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路&a…

Ribbon七种负载均衡策略详解

Ribbon是什么? 主要负责请求分发,例如一个服务节点集群:六台服务器部署着订单服务,用户请求过来了就要根据不同的负载策略分发请求到不同机器上,起到一个缓解请求压力的作用。其自身不会发起请求,这个在源…

负载均衡有哪些常见策略?

分析&回答 轮循 Round Robin 这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量 以及负载相同的应用程序。如果所有的服务器有相同或者相近的性能那么选…

负载均衡策略-七种策略

LoadBalancer LoadBalancer下面更底层的7种内置的负载均衡策略 RandomRule - 随性而为 RoundRobinRule - 按部就班 RandomRule是随性而为挑选节点,RobinRule却按部就班从一个节点一步一步地向后选取节点,既不会跳过一个,也不会原地踏步&am…

【Nginx】Nginx服务器之负载均衡策略(6种)

一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模块…

负载均衡策略图文详解

一、「负载均衡」是什么 正如题图所示的这样,由一个独立的统一入口来收敛流量,再做二次分发的过程就是「负载均衡」,它的本质和「分布式系统」一样,是「分治」。 如果大家习惯了开车的时候用一些导航软件,我们会发现…

常用负载均衡及策略图解

文章目录 一、负载均衡二、负载均衡模型分类三、CDN负载均衡四、LVS负载均衡4.1 LVS 支持的三种模式4.1.1 DR 模式4.1.2 TUN 模式4.1.3 NAT 模式 4.2 LVS 基于 Netfilter 的框架实现 五、负载均衡策略是什么六、常用负载均衡策略图解6.1 轮询6.2 加权轮询6.3 最少连接数6.4 最快…

关于0范数、1范数和无穷范数

若 则p范数 p取0时对应0范数,p取1时对应1范数,p取无穷大时对应无穷范数 //LaTeX真的好用 【注意理解】当p取无穷大时,最终只与元素中绝对值最大的元素有关,证明如下:

向量和矩阵的 1范数、2范数

1.向量的范数:0范数,向量中非零元素的个数。 1范数,为绝对值之和。 2范数,就是通常意义上的模。 无穷范数,就是取向量的最大值。 但是向量的范数和矩阵的范数关系不大,百度了好久也没看到狠心的东西&…

向量的范数norm:1范数、2范数、无穷范数;矩阵的行范数、列范数

0范数: 向量中非零元素的个数。1范数: 为绝对值之和。2范数: 通常意义上的模。无穷范数:取向量的最大值。 转自:范数对于数学的意义?1范数、2范数、无穷范数

向量的1范数,2范数,无穷范数,KNN中的Lp距离

L-0范数:用来统计向量中非零元素的个数。 L-1范数:向量中所有元素的绝对值之和。 L-2范数:欧式距离。 L-∞范数:计算向量中的最大值。 你也可以这样理解 1-范数: ║ x ║ 1 │ x 1 │ │ x 2 │ … │ x n │ ║…

范数与模

复数的模 向量的范数 范数,在机器学习中通常用于衡量一个向量的大小,范数的定义如下: P>1 比如如下常见的范数 1-范数:║x║1│x1││x2│…│xn│ (曼哈顿距离) 2-范数&…

求矩阵的1,和2范数

1.向量的范数:0范数,向量中非零元素的个数。 1范数,为绝对值之和。 2范数,就是通常意义上的模。 无穷范数,就是取向量的最大值。 但是向量的范数和矩阵的范数关系不大,百度了好久也没看到狠心的东西&…

矩阵L2,1范数及矩阵L2,p范数的求导

常见的矩阵范数有L1,L2, ∞ 范数,F范数和引申出的L2,1范数。而在机器学习的特征选择中,利用选择矩阵的范数对选择矩阵进行约束,即是正则化技术,是一种稀疏学习。 L0 , L1 向量范数 L0 范数 L0 …

计算方法 | 范数(向量:1范数、2范数、无穷范数;矩阵:行范数、列范数)

0范数: 向量中非零元素的个数。1范数: 为绝对值之和。2范数: 通常意义上的模。无穷范数:取向量的最大值。 行范数:矩阵中每行绝对值之和的最大值列范数:矩阵中每列绝对值之和的最大值 详细研究请访问&#…

到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?

其实我的专业不是数学专业,只不过在阅读paper时,我们会经常看到0范数或者1范数这些范数问题。本文就来分析看看到时什么是范数?什么是0范数、1范数、2范数?它们的区别又是什么?为了方便某些着急的people,先…

向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)

一、向量的范数 首先定义一个向量(一般用列向量表示)为: 1.1 向量的1范数 向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1&am…

未为python配置解释器_Python环境安装,解释器配置

下载安装完Pycharm后,创建一个py文件编写代码会提示No Python interpreter configured for the project,这是提示要配置解释器,可以去官网下载安装。 从官网下载https://www.python.org/downloads/windows/ 以我的电脑为例,选择64…