Ribbon--负载均衡、IRule、自定义Ribbon

如何在Spring Cloud中实现自定义的负载均衡策略? 本文介绍了在Spring Cloud中实现自定义负载均衡策略的方法。首先分析了客户端和服务端两种负载均衡类型,以及Spring Cloud的核心组件Ribbon和LoadBalancer。然后详细讲解了两种实现方式:基于Ribbon通过实现IRule接口实现元数据加权随机策略,以及基于LoadBalancer通过ReactorServiceInstanceLoadBalancer接口实现路径路由策略。文章包含具体代码示例,展示了如何从服务实例元数据获取权重信息,以及根据请求路径进行实例选择的实现逻辑,为开发 阅读详情

Ribbon负载均衡

在这里插入图片描述

Ribbon在工作时分成两步:

  • 第一步先选择EurekaServer,它优先选择在同一个区域内负载较少的server。
  • 第二部再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。

其中Ribbon提供了多种策略:比如轮询,随机和根据相应时间加权。

参考microservicecloud-provider-dept-8001,新建两份,分别命名为8002,8003

新建8002/8003数据库,各自微服务分别连各自的数据库

修改8002/8003各自YML:

server:
port: 8002
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径
type-aliases-package: com.atguigu.springcloud.entities #entity别名类
mapper-locations:
  - classpath:mybatis/mapper/**/*.xml #mapper映射文件
spring:
application:
name: microservicecloud-dept 
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB02
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
eureka:
client: #客户端注册进eureka服务列表内
service-url: 
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8002   #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
server:
port: 8003
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径
type-aliases-package: com.atguigu.springcloud.entities #entity别名类
mapper-locations:
  - classpath:mybatis/mapper/**/*.xml #mapper映射文件
spring:
application:
name: microservicecloud-dept 
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB03
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
eureka:
client: #客户端注册进eureka服务列表内
service-url: 
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8003   #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$

启动3个eureka集群配置

启动3个Dept微服务

启动microservicecloud-consumer-dept-80

客户端通过Ribbo完成负载均衡并访问上一步的Dept微服务

访问:http://localhost/consumer/dept/list

第一次:
在这里插入图片描述

第二次:
在这里插入图片描述

第三次:
在这里插入图片描述

默认采用轮询策略。

Ribbon核心组件IRule

IRule:根据特定算法中从服务列表中选取一个要访问的服务

  • RoundRobinRule :轮询
  • RandomRule :随机
  • AvailabilityFilteringRule :会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
  • WeightedResponseTimeRule :根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule
  • RetryRule :先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务
  • BestAvailableRule :会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
  • ZoneAvoidanceRule :默认规则,复合判断server所在区域的性能和server的可用性选择服务器

自定义Ribbon

修改microservicecloud-consumer-dept-80:

主启动类添加@RibbonClient:

在启动该微服务的时候就能去加载我么您的自定义Ribbon配置类,从而使配置生效,

@RibbonClient(name="MICROSERVICECLOUD-DEPT", configuration=MySelfRule.class)

在这里插入图片描述

Spring Cloud 进阶--Ribbon核心组件IRule的使用及自定义负载均衡算法 《Ribbon核心组件IRule的使用及自定义负载均衡算法 》 前言 在上一篇文章中,主要完成了 《 zuul微服务网关的代理、路由、过滤及访问映射规则配置 》,本篇将带领读者一步一步认识Ribbon的核心插件 “ IRule ”的常用 API 以及自定义算法规则详细说明,本篇博文涉及的服务模块包括: 修改消费者模块 “... 阅读详情

相关推荐

7天跟我学F5 负载均衡 iRules

7天跟我学F5 负载均衡 iRules F5 irules基本配置

Ribbon自定义配置--RibbonClientSpecification

ribbon自定义配置

xyjy11的博客 1597

负载均衡Irules编程宝典

iRules是基于F5 TMOS操作系统的开放脚本语言,为F5设备提供灵活强大的定制功能,基于TCL语法的iRules可以方便的加入到F5设备内部,处理通过F5设备的网络流量,控制各种协议和应用数据。每个iRules必须包含事件、命令和逻辑三部分才可以有效运行,通过这三个部分的灵活组合和排序可以定制IP层面以上的数据流量处理功能,提高和增强F5设备的灵活性和功能性。同时,高效的使用iRules定制某些应用功能,可以大大降低应用系统的研发成本,简化研发复杂程度,提高应用系统性能,减少计划内外当机时间。 在开始使用iRules之前,需要了解F5设备的基本功能及配置;同时,根据要实现的不同功能,需要对该功能涉及的相关知识有所了解,比如TCP协议、UDP协议、DNS原理、SSL证书原理、HTTP协议、安全攻击及防护、Cache、XML等。 那什么时候需要用到iRules语言呢?F5设备支持绝大多数应用交付的标准功能,可以满足绝大部分IT系统对这方面的功能及部署要求,但某些应用系统对数据控制有着更加精细的定制要求,或者对标准协议的功能支持有更高的要求,这些时候需要使用iRules来增强F5设备的功能,实现这些功能要求。比如,F5的LTM设备支持基于源地址、COOKIE、目的地址、SSL ID等模式的会话保持方式,可以满足大多数应用交付系统对会话保持的要求。但大多数JAVA开发人员希望使用中间件的SESSION ID作为会话保持的依据,这样可以更加方便和准确的控制应用数据的后台走向,这时候,使用iRules编写一段简单的代码并输入到F5设备中,即可高效的实现这一功能,满足应用程序的功能需求。

ribbon自定义负载均衡ip自定义代码实例

转载ribbon自定义负载均衡 public class IpUserHashRule extends AbstractLoadBalancerRule { private static Logger log = LoggerFactory.getLogger(IpUserHashRule.class); public Server choose(ILoadBalancer lb, O...

weixin_43416858的博客 1057

从零到一:3D Slicer与MONAI在医学影像中的AI革命

本文探讨了3D Slicer与MONAI在医学影像分析中的革命性应用,展示了如何通过开源工具实现高效的三维影像处理和AI增强分析。结合临床案例,详细介绍了从数据准备到AI分析的全流程,显著提升诊断效率和精度,推动医学影像技术迈向新纪元。

tcp8optimizer的博客 341

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4624

【微服务 SpringCloud】实用篇 · Ribbon负载均衡

本文主要讲解Ribbon组件的负载均衡策略IRule,原理(查看部分源码);以及饥饿加载!

Carefree_State的博客 5323

scGPT-spatial 复现

文章摘要:Spatial scGPT项目复现流程 本文详细介绍了复现Spatial scGPT项目的完整流程,包含数据预处理、模型训练等关键步骤。首先需要使用scanpy加载H5AD文件并进行归一化、对数变换等预处理。然后构建基因词汇表(vocab),提取基因表达值和空间坐标信息。接着使用DataCollator进行数据分箱、掩码和填充处理。最后搭建TransformerModel进行训练。文章特别指出了需要自行补全的缺失部分,包括基因词汇表构建、空间坐标提取、数据集类定义和训练主循环脚本等。作者还提供了详

victory0431的博客 1683

自定义Ribbon的IRule实现服务之间的灰度发布

Bean。

qq_41001737的博客 532

使用C++实现DNS欺骗攻击

其中,domain_name表示需要欺骗的域名,dns_server_ip表示实际DNS服务器的IP地址,fake_ip表示需要重定向到的IP地址。在DNS查询过程中,当客户端向DNS服务器请求解析某个域名时,DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式,通过篡改DNS响应数据,使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序,使得当客户端请求解析特定的域名时,我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。

TechGlide的博客 411

Python爬虫实战:爬取携程旅游平台数据,我拆解了动态反爬+Cookie续命(附完整可运行代码)

反爬类型表现形式应对思路sign参数返回403/空数据逆向JS还原加密逻辑Cookie时效登录后1小时Cookie失效定时刷新Cookie/保存登录态行为检测爬取过快触发验证码模拟真人延时/随机点击IP封禁单IP爬取超50条数据被封付费代理池/降低请求频率爬取携程旅游平台数据的核心,不是“简单的HTTP请求”,而是“理解平台的反爬逻辑并合规适配”——从sign参数破解到Cookie维护,再到行为模拟,每一步都是对HTTP协议、前端加密、用户行为的深度理解。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1713

Ribbon IRule接口与自定义负载均衡算法

Ribbon中的内置的负载均衡算法,都实现了IRule接口。因此如果我们要自定时负载均衡算法也要实现IRule接口。 IRule接口: public interface IRule { Server choose(Object var1); //选择哪个服务处理请求 void setLoadBalancer(ILoadBalancer var1); //设置IL...

zhoushimiao1990的博客 4180

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

Spring Cloud 之Ribbon核心组件IRule的使用及自定义负载均衡算法

一、IRule 常见的API Ribbon核心组件IRule中常见的几个算法API,一般情况下,这几个API已经可以满足实际的业务需求了,如下: API 说明 RoundRobinRule 广为人知和最基本的负载平衡策略,即轮询算法。(是Ribbon默认的负载均衡机制) RandomRule 一种随机分配现有流量的负载平衡策略,即随机访问算法 RetryRule 先按照 R...

灵越启航 2565

创建 Qt Quick 项目

来看看如何使用 Qt Creator 创建 Qt Quick 项目!

青春不老,奋斗不止! 1万+

使用Simulink对固定翼无人机的自动起飞与降落进行仿真

本文介绍了基于Simulink的固定翼无人机自动起飞与降落控制系统设计方法。系统包含飞行器动力学模型、控制系统、环境模拟等模块,通过简化动力学方程描述无人机运动特性。详细说明了从创建模型、设置动力学方程、设计PID控制器(包括自动起飞和降落控制策略)到添加环境模拟的完整仿真流程。重点阐述了升降舵和发动机推力的控制律设计,以及性能评估要点。本方法可有效验证控制系统设计,优化飞行稳定性和安全性参数,为无人机自主控制提供仿真支持。

amy_mhd的博客 223

Ribbon(负载均衡)核心组件IRule与自定义Ribbo的策略

一:Ribbon核心组件IRule1、根据特定的算法中从服务列表中选取一个要访问的服务 2、SpringCloud结合Ribbon默认的自带有七种算法 3、可用在RitHup上查询源码 https://github.com/Netflix/ribbon1、RoundRobinRule1、轮询,依次执行每个执行一次(默认)2、RandomRule1、随机 2、在客户端(80)的配置类上(Config...

weixin_34218890的博客 4716

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringCloud ---(四)Ribbon负载均衡《2》(核心组件IRule及自定义Ribbon负载均衡策略)

目录一、Ribbon核心组件IRule1、解析IRule自带的7中算法2、选择随机算法代替默认的轮询二、自定义Ribbon负载均衡策略 一、Ribbon核心组件IRule 1、解析IRule自带的7中算法 IRule:根据特定算法从服务列表中选取一个要访问的服务。 IRule实现类如下: RandomRule:随机,使用Random对象从服务列表中随机选择一个服务 RoundRobin...

weixin_43240792的博客 542

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Ribbon负载均衡多种策略及自定义IRule

简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供 客户端的复杂算法和服务调用。Ribbon 客户端组件提供一系列完善的配置项如超时、重试等。简单的说,就是配置文件中列出 load Balancer (简称 LB)后面所有的机器,Ribbon 会自动的帮助你基于某种规则(如简单轮询,随机链接等)去链接这些机器。我们很容易使用 Ribbon 自定义的负载均衡算法。 LB(...

TOP__ONE的博客 1311

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IRule 自定义Ribbon负载均衡

RoundRobinRule 轮询,依次执行每个执行一次(默认) RandomRule 随机执行服务 AvailabilityFilteringRule 会先过滤掉多次访问故障而处于断路器跳闸状态的服务 和过滤并发的连接数量超过阀值得服务,然后对剩余的服务列表安装轮询策略进行访问 WeightedResponseTimeRule 根据平均响应时间计算所有的服务的权重,响应时间越快服务权重越大,容易被选中的概率就越高。 刚启动时,如果统计信息不中,则使用RoundRobin...

xinlus的博客 361

SpringCloud(四)Ribbon负载均衡《2》(核心组件IRule及自定义Ribbon负载均衡策略)

1、Ribbon核心组件IRule 1.1、解析IRule自带的7种算法 IRule:根据特定算法从服务列表中选取一个要访问的服务。 IRule实现类如下: RandomRule:随机,使用Random对象从服务列表中随机选择一个服务 RoundRobinRule:轮训策略。默认策略,同时也是更高级rules的回退策略 RetryRule: 轮询 + 重试。 先使用RoundRob...

myroncham的博客 956

Ribbon负载均衡服务调用

Ribbon是 Netflflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。

梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记 1665

6、Ribbon核心组件IRule的使用及自定义负载均衡算法

Ribbon在工作时分为两步: 第一步:先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server; 第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址; 其中Ribbon提供了多种策略,比如轮询、随机、根据响应时间加权。 一、Ribbon算法的介绍 Ribbon的源码地址:https://github.com/Netflix/ri...

转身那一瞬 576

springcloud之ribbon自定义负载均衡规则

1、在springcloud中,使用的是ribbon来解决负载均很的问题,而常见的负载均衡策略包括有    1)轮询    2)随机    3)一致性哈希    4)哈希    5)加权2、在ribbon中提供了ILoadBalance接口用来代表负责均衡的操作,它提供了增加服务器,选择服务器,标记服务器状态为down,获得可用服务器以及获得所有服务器的操作public interface ILo...

有梦想的咸鱼的博客 1万+

【SpringCloud】Ribbon介绍、负载均衡演示、组件IRule、负载均衡算法

Ribbon简介、负载均衡演示、组件IRule、如何选择负载均衡规则、负载均衡算法。

See_Star的博客 804

SpringCloud03_Ribbon的概述、核心组件IRule、负载均衡算法底层原理、手写Ribbon轮询算法

Ribbon的概述、核心组件IRule、负载均衡算法底层原理、手写Ribbon轮询算法

所得皆惊喜 819
上一篇: Ribbon--初步配置
下一篇: Feign--概述、初步使用
吴声子夜歌
博客等级 码龄9年 2688粉丝 2268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值