Ribbon负载均衡

负载均衡Ribbon 什么是Ribbon 目前主流的负载均衡分为两种: 集中式负载均衡在消费者和服务提供方中间使用独立的代理方式进行负载,比如硬件有F5,软件如nginx 客户端根据自己的请求情况做负载均衡,Ribbon 就属于客户端自己做负载均衡 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,比如超时、重试等 通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询、随机)去. 阅读详情

前言

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

1.LB负载均衡(Load Balanced)是什么?

简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。常见的负载均衡有软件 Nginx,LVS ,硬件 F5等。

2.Ribbon本地负载均衡客户端VS Nginx服务端负载均衡区别?

Nginx是服务器负载均衡,客户端所有请求都会交给Nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。

Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

3.Ribbon在工作时分成二步?

第一步先选择Eureka Server ,它优先选择在同一个区域负载较少的server。
第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权重。

jar包依赖

  <!-- 引入Eureka Client -->
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>

如果使用了Eureka最新的jar包则不在需要引入Ribbon的jar包如果没有需要引入Ribbon的jar包(依赖如下)

  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
  </dependency>

Ribbon核心组件Irule接口(通提供了7种常用的方式)

根据特定算法中从服务列表中选取一个要访问的服务
1.com.netflix.loadbalancer.RoundRobinRule ----轮询
2.com.netflix.loadbalancer.RandomRule ----随机
3.com.netflix.loadbalancer.RetryRule ----先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务。
4.WeightedResponseTimeRule ----- 对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择
5.BestAvailableRule ----会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。
6.AvailabilityFilteringRul — 先过滤掉故障实例,在选择并发较小的实例
7.ZoneAvoidanceRule ---- 默认规则,复合判断Server所在区域的性能和server的可用性选择服务器。

替换负载规则:轮询改成随机

我们在Eureka注册与发现的例子上稍作修改https://blog.youkuaiyun.com/javaasd/article/details/108791307

在客户端:cloud-consumer-order80中。
1.新建一个包,包的位置要放在启动类的上一级。
2.在新建的包中创建一个实体类

@Configuration
public class MyselfRule {
    @Bean
    public IRule myRule(){
        //定义为随机
        return new RandomRule();
    }
}

3.然后在启动类上加上注解

//轮询变成随机
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MyselfRule.class)

重新启动项目,之前的8001端口和8002端口轮着替换将会被随机替换代替。

负载均衡算法(轮询)

rest接口第几次请求数 % 服务器集群总数量 = 实际调用服务器位置下标。(如果每次服务器重启后,rest接口计数从1开始)

如:用户第 3次请求,我们一共有2台服务器。
则:5 % 2 = 1
然后对应的下标是1,所以获取的服务地址位下标是1的服务器

九、Ribbon负载均衡 使用Ribbon做负载均衡,并配置轮询策略,默认为轮询 阅读详情

相关推荐

SpringCloud(八) -- 负载均衡 Ribbon之 负载策略

Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接口为:com.netflix.loadbalancer.IRule ,实现方式如下 : com.netflix.loadbalancer.RandomRule :随机选择一个server com.netflix.loadbalancer.RetryRule :对选定的负载均衡策略机上重试机制。 com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡 com.netflix.loadbalance

erainm 384

ribbon的7种负载均衡算法和替换方法

ribbon的7中负载均衡算法和替换方法

tigerhhzz的博客 1564

架构设计之架构治理

架构治理的本质是“用规则约束复杂性,用流程保障落地,用数据驱动优化”先定目标:明确量化的治理目标,避免盲目行动;立标准:建立覆盖分层、选型、接口、拆分的统一规范,奠定治理基础;强评审:通过架构评审把控设计环节,提前规避风险;全流程:将治理规则贯穿设计、开发、测试、部署、运维全生命周期;重保障:通过组织、流程、工具确保治理落地,而非“纸上谈兵”;持续迭代:随业务与技术演进优化治理规则,避免“一劳永逸”。

xiaolyuh的专栏 810

springCloud ribbon-12 ribbon 负载均衡策略

一,概述 Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接口为 com.netflix.loadbalancer.IRule ,实现方式如下 com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡。 com.netflix.loadbalancer.RandomRule :随机策略 com.netflix.loadbalancer.RetryRule :重试策略。 com.netflix.loadbalan.

阿涩的博客 879

1、Ovirt 开源虚拟化平台安装

Ovirt虚拟化Node和Engine安装

大鱼 6266

华为项目TR5评审后发现了重大缺陷的应急处理经验

华为TR5评审后发现重大缺陷时,启动分级应急机制:1)缺陷分级:按严重性(致命/严重/一般)评估影响;2)应急响应:跨部门会议制定方案,冻结生产并调配资源;3)根因修复:通过RCA定位问题,设计变更后回归测试;4)变更管理:评审修复影响,调整发布策略;5)持续改进:记录缺陷闭环,优化流程。案例显示,软件闪退问题通过热修复补丁和代码重构解决。关键工具包括Jira、FMEA等,确保缺陷在量产前拦截,降低风险。

从技术实践立足,从项目管理方法论延伸思考 1069

Netflix中的负载均衡策略

SpringCloud的负载均衡策略可以通过配置Ribbon搞定,也就是注入实现com.netflix.loadbalancer.IRule的类,当前包含的策略包括 1.RandomRule随机策略 在while循环内,如果服务地址不为空会不停的循环直到随机出一个可用的服务。 @SuppressWarnings({"RCN_REDUNDANT_NULLCHECK_OF_N...

weixin_30438813的博客 640

Cursor Cloud Agent:云原生编程工作流的底层重构

编程工作流正从本地计算范式转向云原生执行范式。Cloud Agent 本质是将代码理解、生成、执行与调试等核心能力下沉至隔离、可控、按需分配的云端虚拟机,通过 Firecracker 微虚拟机实现亚秒级启动,并依托上下文快照、环境镜像化和内核级沙箱保障一致性、算力弹性与数据安全。这一范式突破了传统本地 AI 编程助手在环境依赖、调试能力与企业合规上的根本局限,使 IDE 从编辑工具升维为分布式开发指挥中心。本文深入解析其运行机制与工程落地实践。

weixin_34354173的博客 337

SpringCloud(四)Ribbon负载均衡服务调用

无

agululu的博客 948

VASP能带计算避坑指南:从CHGCAR读取失败到成功解决的全过程

本文深度解析VASP能带计算中常见的“CHGCAR读取失败”报错,并提供从静态自洽到非自洽计算的全流程避坑指南。核心解决方案包括使用CONTCAR替代POSCAR、调整SYMPREC参数以处理对称性判定问题,并推荐利用vaspkit工具自动化生成输入文件,确保计算流程稳健高效。

weixin_29245767的博客 770

sas协议(SAS PL-3)之Zoning功能

1 Zoning overview SAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统. The zoning expander devices control whether a phy is permitted to participate in

sinat_37817094的博客 1530

【SpringCloud】Ribbon负载均衡

在Eureka注册中心中我们在添加完@LoadBalanced注解,即可实现负载均衡功能,现在一起探索一下负载均衡的原理(Ribbon)。通过定义IRule实现可以修改负载均衡规则,有两种方式:@Beanuserservice: # 给某个微服务配置负载均衡规则,这里是userservice服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则以上就是关于Ribbon负载均衡的讲解。

浩泽学编程的博客 5997

【数据集】全球大气空气柱平均甲烷(XCH₄)和一氧化碳(XCO)浓度数据集 TROPOMI/WFMD

全球大气空气柱平均甲烷(XCH₄)和一氧化碳(XCO)浓度数据集 TROPOMI/WFMD

WW、forever的博客 387

Ribbon七种负载均衡策略详解

Ribbon是什么? 主要负责请求分发,例如一个服务节点集群:六台服务器部署着订单服务,用户请求过来了就要根据不同的负载策略分发请求到不同机器上,起到一个缓解请求压力的作用。其自身不会发起请求,这个在源码中可以到,它起到一个“选择”的角色。真正发起请求的还是Feign / OpenFeign 。 Ribbon与Nginx的区别? 看到上诉的描述跟nginx非常接近,两者都是做轮询,做负载分发请求。那么区别是什么?看图 可以看到,Nginx是属于服务器端的负载均衡,Ribbon是属于客户端的负载均衡,简而言

whiteBearClimb的博客 2万+

Debian Buster 软件源失效问题

摘要:基于Debian Buster的ARM64设备因系统版本结束支持(EOL)导致apt update报错404。解决方案包括:1)改用Debian官方存档源(需禁用安全检查);2)升级至受支持的Debian 11/12版本(推荐);3)临时使用第三方镜像源(不推荐)。操作步骤涉及修改sources.list、处理NTP同步问题及清理残留配置。建议优先采用版本升级方案以获得持续安全更新,避免使用过时系统带来的安全隐患。文中提供了完整命令示例和操作记录供参考。

yy_xzz的博客 2178

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Ribbon负载均衡原理,Feign是如何整合Ribbon的?

文章目录1. 什么是负载均衡?2. Ribbon的使用2. Ribbon的负载均衡原理①:收集带有@LoadBalanced注解的RestTemplate,并为其添加一个拦截器②:选择负载均衡器,执行负载均衡算法(默认轮询) 1. 什么是负载均衡?        负载均衡是从多个服务中根据某个策略选择一个进行访问,常见的负载均衡分为两种 客户端负载均衡:即在客户端就进行负载均衡算法分配。例如spring cloud中的ribbon,客户

qq_1149513559的博客 4789

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

客户端负载均衡(Ribbon)

目录 服务器端负载均衡 客户端负载均衡 Ribbon负载均衡示例搭建 创建服务提供者 引入依赖 添加配置 服务提供者 创建启动类 启动服务 服务消费者 引入Ribbon依赖 添加配置 使用Ribbon客户端 切换Ribbon负载均衡策略 自定义Ribbon客户端 自定义Ribbon客户端的默认配置 通过配置属性自定义Ribbon客户端 脱离Eureka使用Rib...

pengjunlee的博客 4万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ribbon负载均衡

简介 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个S...

Django的博客 1万+

SpringCloud-Ribbon负载均衡

Ribbon是一个客户端负载均衡器,类似于nginx的负载均衡模块功能,负载均衡(Load Balance)是用于解决一台机器无法解决所有请求而产生的一种算法,像nginx使用负载均衡分配流量,ribbon为客户端提供负载均衡,dubbo服务调用里的负载均衡、openfeign等很多地方使用到了负载均衡。 ......

知足上进,不负野心。 8984

Ribbon实现负载均衡

Ribbon目前已经进入了维护模式,但是目前主流还是使用RibbonSpring Cloud想通过LoadBalancer用于替换Ribbon。

weixin_72525373的博客 805
上一篇: Consul注册与发现
下一篇: OpenFeign服务调用
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值