微服务学习笔记--(Ribbon)

news/2024/10/23 7:31:17/

Ribbon负载均衡

  • 负载均衡策略
  • 懒加载

Ribbon-负载均衡策略

Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则:

IRule
AbstractLoadBalancerRule
RetryRuleClientConfigEnabledRoundRobinRuleRoundRobinRuleRandomRule
BestAvailableRulePredicateBaseRuleWeightedResponseTimeRule
AvailabilityFilteringRuleZoneAvoidanceRule

内置负载均衡规则类规则描述
RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule对以下两种服务器进行忽略:(1)在默认情况下,这台服务器如果3次连接失败,这台服务器将会被设置为"短路"状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会集合级地增加。(2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule 规则的客户端也会将其忽略。并发连接数的上限,可有客户端的、、ActiveConnectionsLimit属性进行配置。
WeightedResponseTimeRule为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
ZoneAvoidanceRule以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
BestAvailableRule忽略哪些短路的服务器,并选择并发数较低的服务器
RandomRule随机选择一个可用的服务器
RetryRule重试机制的选择逻辑

通过定义IRule实现可以修改负载军哈规则,有两种方式:
1.代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:

这种是全局的,配置之后,order-service以后不管是调用user-service还是别的服务,都是这样。

@Bean
public IRule randomRule() {return new RandomRule();
}

2.配置文件方式:在order-service的applicaiton.yml文件中,添加新的配置也可以修改规则:

这种在针对某个微服务而已,只针对调用userservice而言。

userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则

Ribbon饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时记载,降低第一次访问的耗时,通过下面配置开启借加载:

ribbon:eager-load:enabled: true #开启饥饿加载clients: userservice # 指定对userservice这个服务饥饿加载

总结:

1.Ribbon负载均衡规则

  • 规则接口是IRule
  • 默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询

2.负载均衡自定义方式

  • 代码方式:配置灵活,但修改时需要重新打包发布
  • 配置方式:直观、方便,无需重新打包发布,但是无法做全局配置

3.饥饿加载

  • 开启饥饿加载
  • 指定饥饿加载的微服务名称

http://www.ppmy.cn/news/63103.html

相关文章

【1419. 数青蛙】

来源:力扣(LeetCode) 描述: 给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrog…

windeployqt工具打包C++ QT项目

目录 前言方法TIP 前言 使用VS编写好QT项目后,有时需要发送给他人进行测试。在此情况下,发送所有项目文件显然不可取,因为exe文件不能独立运行,故在测试前需要先配置项目环境,以确保运行所需的库文件能够完全。 因此&…

PAT A1042 Shuffling Machine

1042 Shuffling Machine 分数 20 作者 CHEN, Yue 单位 浙江大学 Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "inside jobs" where employees collab…

golang的os包用法简介

文章目录 简述os 包中的常用函数HostnameEnvironGetenvSetenvExitGetuidGetgidGetpidGetwdMkdirMkdirAllRemove os/exec 执行外部命令LookPath os/user 获取当前用户信息Current os/signal 信号处理NotifyStop 简述 Go语言的 os 包中提供了操作系统函数的接口,是一个…

数据导向下制造业的生产效率、交易效率提升办法

在智能制造和工业4.0成为趋势的今天,大部分制造业企业,均已在企业内部通过实施PLM系统(Product Lifecycle Management,产品生命周期管理系统),实现了对组织内产品研发过程和产品研发数据的管理,…

初级算法-动态规划

主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-动态规划 一、斐波那契数二、爬楼梯三、使用最小花费爬楼梯四、不同路径五、不同路径二六、整数拆分七、不同的二叉搜索树八、0-1背包九、分割等和子集十、最后一块石头的重量十一、目标和…

Word控件Spire.Doc 【打印】教程(2):保打印word文档不显示打印处理对话框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

webp格式转换成jpg,webp转jpg方法步骤

webp格式转换成jpg,webp转jpg方法步骤。办公室工作集科学性、规范性于一体,仅凭过去的一些经验和习惯,很难提升工作的质量和水平。因此,作为办公室工作人员来说,必须要以科学的理念,运用现代办公管理软件来…