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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux内核源码下载地址[通俗易懂]

    linux内核源码下载地址[通俗易懂]官网链接:https://www.kernel.org/HTTP https://www.kernel.org/pub/ GIT https://git.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/可以根据需要,下…

  • stream流带下标foreach循环[通俗易懂]

    stream流带下标foreach循环[通俗易懂]stream流带下标foreach循环

  • 用matlab绘制二元函数图像_心形函数表达式

    用matlab绘制二元函数图像_心形函数表达式文章目录Matlab二元函数图像绘制plot3函数的基本用法fplot3函数基本用法进阶用法绘制二元函数图像Matlab二元函数图像绘制在讲二元函数图像绘制之前,先讲解plot3与fplot3的实际用法,之后再讲解二元函数图像绘制,有需要的同学可直接跳转查看。plot3函数的基本用法本节通过循序渐进的方法,先介绍简单的plot3用法,接着再一步一步进阶难度,并且在代码中给出每块代码的功能以及使用方法,以帮助大家更快的学习使用。实例1:绘制三维直线%给定x、y、z的数值x=[1,2,3];

  • stm32编程入门教程_零基础编程入门书籍

    stm32编程入门教程_零基础编程入门书籍前言在中国,熟悉单片机的人士大多会听说过STM32。这是意法半导体(STMicroelectronics,简称ST)的32位微控制器(MCU)家族,基于ARMCortex-M内核。2007年,STM32F1诞生。这是业界首款搭载ARMCortex-M3内核的32位MCU,采用180nm闪存工艺,配有128KB闪存和20KBRAM,运行主频为72MHz,在当时属于相当高的配置。随后的10年内,STM32产品线相继加入了基于ARMCortex-M0、Cortex-M4和Cortex-M7…

  • 如何解决高并发,秒杀问题[通俗易懂]

    如何解决高并发,秒杀问题[通俗易懂]相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你!一、秒杀业务为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万…

  • 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

发表回复

您的电子邮箱地址不会被公开。

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