ribbon的负载均衡策略_f5负载均衡配置

ribbon的负载均衡策略_f5负载均衡配置在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!!不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是请求分发而不是承担并发,可以直接感知后台动态变化来指定分发策略。它一共提供了7种负载均衡策略:策略名策略声明策略描述实现说明

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

Jetbrains全系列IDE稳定放心使用

在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!!

不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是承担并发而不是请求分发,可以直接感知后台动态变化来指定分发策略。它一共提供了7种负载均衡策略:

策略名 策略声明 策略描述 实现说明
BestAvailableRule public class BestAvailableRule extends ClientConfigEnabledRoundRobinRule 选择一个最小的并发请求的server 逐个考察Server,如果Server被tripped了,则忽略,在选择其中ActiveRequestsCount最小的server
AvailabilityFilteringRule public class AvailabilityFilteringRule extends PredicateBasedRule 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) 使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个server的运行状态
WeightedResponseTimeRule public class WeightedResponseTimeRule extends RoundRobinRule 根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。 一个后台线程定期的从status里面读取评价响应时间,为每个server计算一个weight。Weight的计算也比较简单responsetime 减去每个server自己平均的responsetime是server的权重。当刚开始运行,没有形成status时,使用roubine策略选择server。
RetryRule public class RetryRule extends AbstractLoadBalancerRule 对选定的负载均衡策略机上重试机制。 在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server
RoundRobinRule public class RoundRobinRule extends AbstractLoadBalancerRule roundRobin方式轮询选择server 轮询index,选择index对应位置的server
RandomRule public class RandomRule extends AbstractLoadBalancerRule 随机选择一个server 在index上随机,选择index对应位置的server
ZoneAvoidanceRule public class ZoneAvoidanceRule extends PredicateBasedRule 复合判断server所在区域的性能和server的可用性选择server 使用ZoneAvoidancePredicate和AvailabilityPredicate来判断是否选择某个server,前一个判断判定一个zone的运行性能是否可用,剔除不可用的zone(的所有server),AvailabilityPredicate用于过滤掉连接数过多的Server。

这里以随机访问策略来举个栗子:

1、ribbon配置文件添加:

service-B.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

其中service-B是我注册到Eureka的serviceID,一共起了3个示例。

2、main类注册:

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public IRule ribbonRule() {
        return new RandomRule();//这里配置策略,和配置文件对应
    }

一定记得加第二个注册,很多文章没有。里面配具体的策略。

3、Controller:

@RestController
public class ConsumerController { 
   

    @Autowired
    private RestTemplate restTemplate;

    @Autowired  
    private LoadBalancerClient loadBalancerClient;  

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public String add(@RequestParam Integer a,@RequestParam Integer b) {
        this.loadBalancerClient.choose("service-B");//随机访问策略
        return restTemplate.getForEntity("http://service-B/add?a="+a+"&b="+b, String.class).getBody();

    }

}

好了,打完收工。

整个工程搭建,请访问我的github:https://github.com/Lovnx/micro-service

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TOF相机总结[通俗易懂]

    TOF相机总结[通俗易懂]转载也要顶! 关于tof相机很好的总结~  2013-05-1113:22:30|  分类:默认分类|  标签:|字号大中小 订阅1.1TOF初探   TOF是Timeofflight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感

    2022年5月26日
    29
  • 网络协议学习–SOAP协议(一)

    网络协议学习–SOAP协议(一)学习了soap协议,介绍了关键的组成部分,rpc,http协议,xml,wsdl文件,以及用postman模拟soap进行测试。

    2022年7月15日
    15
  • mac如何同时录制系统和麦克风声音或只录制系统声音

    mac如何同时录制系统和麦克风声音或只录制系统声音MAC录屏时的系统声音以及麦克风问题推荐直接appstore下载recordit,然后打开软件根据软件提示安装blackhole插件。之后就可以关掉该软件了,不用升级会员,以后我们录屏可以不再打开该软件了。到录屏的时候先调整好扬声器或耳机的音量大小,因为之后是不能调的。调好后选择recordit多输出设备,然后shift+command+5开始录屏,录屏选项选择recordit聚焦设备,就可以同时录制系统声音和麦克风声音了。选择blackhole16ch则是只录制系统声音。…

    2022年5月9日
    180
  • js中alert的用法_asp中验证控件怎么使用

    js中alert的用法_asp中验证控件怎么使用ASP.NET验证控件与Attributes.Add脚本并存现在在ASP.NET中,我们也要实现这样的方式就不那么简单了,因为页面验证我们可以采用ASP.NET中的validator控件,同时只要把button的causeValidator设为true就可以了

    2022年9月26日
    3
  • lspci 指令_plsr指令

    lspci 指令_plsr指令1.指令名称lspci2.指令简介lspci是一个用于显示系统中所有PCI/PCIe总线及设备信息的工具。默认情况下,它只显示设备的最简要信息。通过传入指定参数,可以输出更详细的信息,或者可以按照特定格式输出,以便于用其他程序进行解析。有些PCI/PCIe的设备信息需要在root权限下才能获取到。3.参数先来看看不加任何参数时输出的结果。bryan@bryan-pc:~$lspci00:00.0Hostbridge:IntelCorporation8.

    2025年10月14日
    3
  • c语言malloc函数的用法和意义

    c语言malloc函数的用法和意义当我们需要做一个成绩管理系统,人数可能为全校学生,也可能为一个班的学生,当我们开辟一个班的数组大小时,如果要存储整个学校的人数时,会出现内存不够用的情况;当我们开辟全校人数大小的数组时,输入一个班人数的大小时,会出现内存浪费的情况。为了应对上述问题,我们引入malloc函数。malloc时动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址mallo…

    2022年4月29日
    212

发表回复

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

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