ribbon负载均衡策略有哪几种_负载均衡策略的是

ribbon负载均衡策略有哪几种_负载均衡策略的是目录1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,2.@LoadBalanced1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,对于SpringCloudAlibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示:当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略.Ribbon是什么?(Netflix公司提供的负载均衡…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 

目录

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的拦截器。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182354.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月13日 下午6:00
下一篇 2022年10月13日 下午6:16


相关推荐

  • 关于ICache和DCache

    关于ICache和DCache从不同地方总结摘录而来 附上原文链接原文 https blog csdn net article details nbsp nbsp ICache 和 DCache 是一种内存 虽然目前接触了好几种内存 寄存器 DDR 等 它们在物理上的工作原理虽然不同 但是访问属性却很像 在速度上 nbsp CPU gt 寄存器 gt Cache gt DDR nbsp 在容量上 nbsp C

    2026年3月26日
    4
  • python 删除文件中的空行

    python 删除文件中的空行#!/usr/bin/python3#-*-coding:UTF-8-*-defDel_line(file_path):withopen(file_path,”r”)asf:res=f.readlines()#res为列表res=[xforxinresifx.split()]#将空行从res中去掉…

    2022年5月30日
    48
  • 企业级智能体怎么用?金智维Ki-AgentS三大场景演示一看就懂

    企业级智能体怎么用?金智维Ki-AgentS三大场景演示一看就懂

    2026年3月15日
    2
  • 迭代器Python_python迭代器使用

    迭代器Python_python迭代器使用迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。可迭代对象我们已经知道可以对l

    2022年7月31日
    11
  • burpsuite 越权_挖洞经验 | 用BurpSuite实现越权漏洞(IDOR)的自动发现识别

    burpsuite 越权_挖洞经验 | 用BurpSuite实现越权漏洞(IDOR)的自动发现识别这里分享一个自动化发现IDOR(越权)漏洞的方法,那就是在BurpSuite中利用Autozie和Autorepeater插件实现IDOR漏洞的探测识别,而无需针对每个请求手动去变化参数或请求。IDOR(越权)漏洞:也称“不安全的直接对象引用”,场景发生于当用户对内部资源的访问请求,或基于用户提供的输入对象进行访问时,服务端未进行合理的权限验证,导致当前用户可以未经授权访问获取到不属于自己账户权限…

    2022年6月4日
    73
  • 完美解决Tensorflow不支持AVX2指令集问题|指令集加速

    完美解决Tensorflow不支持AVX2指令集问题|指令集加速在pycharm中安装tensorflow后运行如下测试代码:importtensorflowastfx=tf.Variable(3,name=”x”)y=tf.Variable(4,name=”y”)f=x*x*y+y+2print(f)发现会报一行错误YourCPUsupportsinstructionsthatthisTensorFlowbinarywasnotcompiledtouse:AVX2大概意思是安装的tensorf

    2022年5月29日
    90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号