4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明

@

目录
  • 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • 前言
  • 1. Ribbon 介绍
    • 1.1 LB(Load Balance 负载均衡)
  • 2. Ribbon 原理
    • 2.2 Ribbon 机制
  • 3. Spring Cloud Ribbon 实现负载均衡算法-应用实例
  • 4. 总结:
  • 5. 最后:


前言

  • 对应上一篇学习内容:🌟🌟🌟ChinaRainbowSea-CSDN博客
  • 对应下一篇学习内容:🌟🌟🌟

1. Ribbon 介绍

Ribbon 是什么 ?

1.Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端,负载均衡的工具
2.Ribbon 主要功能是提供客户端负载均衡算法和服务调用
3.Ribbon 客户端组件提供一系列完善的配置项如“连接超时,重试”
4.Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务
5.程序员很容易是由 Ribbon 的负载均衡算法实现负载均衡
6.一句话: Ribbon: 负载均衡 + RestTemplate 调用
Ribbon 的官网地址: https://github.com/Netflix/ribbon

在这里插入图片描述

Ribbon 进入维护状态?

在这里插入图片描述

在这里插入图片描述

Ribbon 目前进入维护模式, 未来替换方案 是 Spring Cloud LoadBalancer

1.1 LB(Load Balance 负载均衡)

LB 分类

  1. 集中式: LB

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如 Nginx)
由该设施负责把访问请求通过某种策略转发至服务的提供方。

在这里插入图片描述

  1. 进程内 LB

将 LB逻辑集成到消费方,消费方服务注册中心获知有哪些地址可用,然后再从这些地址中选择
一个合适的服务地址

Ribbon 就属于进程内 L B,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

在这里插入图片描述

特别说明:在上一篇的学习内容上:实例-前面 member-consumer 轮询负载访问 10000/10002 底层就是 Ribbon 默认的轮询负载算法。

2. Ribbon 原理

Ribbon 架构图&机制

在这里插入图片描述

在这里插入图片描述

2.2 Ribbon 机制

Ribbon 机制:

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

Ribbon 常见负载算法

在这里插入图片描述

3. Spring Cloud Ribbon 实现负载均衡算法-应用实例

需求分析/图解

  1. 需求: 将默认的轮询算法改成随机算法 RandomRule
  2. 浏览器输入 : http://localhost/member/consumer/get/1
  3. 要求 访问的 10000/10002 端口的服务是随机的,也就是设置为:RandomRule 随机负载均衡

其实:所谓的随机是在少量数据上是随机的,但是在大量数据的基础上,随机的结果基本上和平均 差不多。

  1. 首先:创建 member-service-consumer-80 com/rainbowsea/springcloud/config/RibbonRule.java,随机负载均衡的算法的配置类,进行配置随机负载均衡

在这里插入图片描述

package com.rainbowsea.springcloud.config;import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RibbonRule {@Bean // 配置注入自己的负载均衡算法public IRule myRibbonRule() {// 这里老师返回的是 RandomRule,大家也可以指定其他的内容。//return new WeightedResponseTimeRule();return new RandomRule();  // 随机算法}
}

注意:同时还需要在对应的Eureka Client 客户端当中的 RestTemplate Http模板 的位置开启, 加入 @LoadBalanced 开启负载均衡

在这里插入图片描述

以及同时还需要在对应的Eureka Client 客户端 的场景启动器的位置开启,当中加入@RibbonClient 注解标明:使用的是 Ribbon 下的负载均衡上的哪个算法。

在这里插入图片描述

@RibbonClient(name = "MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class) // 指定 Ribbon 的负载均衡算法
package com.rainbowsea.springcloud;import com.rainbowsea.springcloud.config.RibbonRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;// 如果错误: 加入排除 DataSourceAutoConfiguration 自动配置
//@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
//@EnableEurekaClient 表示将项目/模块/程序 标注作为 Eureka Client
@EnableEurekaClient
@SpringBootApplication
@EnableDiscoveryClient // 启用服务发现
@RibbonClient(name = "MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class) // 指定 Ribbon 的负载均衡算法
public class MemberConsumerApplication80 {public static void main(String[] args) {SpringApplication.run(MemberConsumerApplication80.class, args);}
}

测试

  1. 浏览器输入 : http://localhost/member/consumer/get/1
  2. 观察访问的 10000/10002 端口的服务是随机的。

在这里插入图片描述

4. 总结:

  1. Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端,负载均衡的工具。
  2. LB(Load Balance 负载均衡) 两种分类:
    1. 集中式: LB
    2. 进程内 LB
  3. Ribbon 原理和机制
  1. 先选择 EurekaServer,它优先 选择在同一个区域内负载较少的 Server 服务。
  2. 再根据用户指定的策略,在从 Server 取到的服务注册列表中选择一个地址
  3. Ribbon 提供了多种策略:比如:轮询,随机和根据响应时间加权等等
  1. Ribbon 常见的负载均衡算法。
  2. 配置 Spring Cloud Ribbon 的三点:
  1. 创建配置对应 Ribbon 下的负载均衡的算法的配置类(注意标注配置类注解@Configuration 和对应的方法处加入'@Bean加入 ioc 容器管理' ),进行配置负载均衡 ,直接 new 对应的 Ribbon 下的 负载均衡算法即可,比如: RandomRule,RoundRobinRule
  2. 还需要在对应的Eureka Client 客户端当中的 RestTemplate Http模板 的位置开启, 加入 @LoadBalanced 开启负载均衡@LoadBalanced 注解标注负载均衡
  3. 同时还需要在对应的Eureka Client 客户端 的场景启动器的类上 位置开启,当中加入@RibbonClient 注解标明:使用的是 Ribbon 下的负载均衡上的哪个算法。
@RibbonClient(name = "MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class) // 指定 Ribbon 的负载均衡算法

5. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834054.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WSL2的介绍和使用

WSL2的介绍和使用 一、什么是WSL2? WSL是Windows Subsystem for Linux的简称,它是微软为Win10和Win11引入的一项功能。WSL允许用户在Windows上运行Linux操作系统及其相关命令和应用程序,而无需使用虚拟机或安装双系统。 1.1 WSL2与WSL1、传统虚拟机比较WSL1:没有完整的Linu…

插件大总结

加注释插件搜索接口插件mybatis-plus插件

Windows系统日志报错:生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。TLS协议所定义的严重错误代码是10。Windows SChannel错误状态是1203是怎么回事?

当我们检查Windows系统日志发现有一个报错:生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。TLS协议所定义的严重错误代码是10。Windows SChannel错误状态是1203。导致报错的原因是什么?该如何处理?驰网飞飞和你分享当我们检查Windows系统日志发现有一个报错:…

Windows三种提权实验

以win7为例手动提权 上线 将一句话木马上传到win7当中,本地使用蚁剑进行链接。信息收集 systeminfo查询杀软信息 wmic process list briefWindows杀软在线查询无匹配杀软进程。 根据系统信息和杀软信息查询提权EXP Windows 提权辅助 | 在线安全工具以列出的微软编号MS17-017为…

量化训练及精度调优经验分享

本文提纲:fx 和 eager 两种量化训练方式介绍 量化训练的流程介绍:以 mmdet 的 yolov3 为例 常用的精度调优 debug 工具介绍 案例分析:模型精度调优经验分享第一部分:fx 和 eager 两种量化训练方式介绍 首先介绍一下量化训练的原理。上图为单个神经元的计算,计算形式是加权…

Tomcat Windows 服务 JVM 内存参数设置

Tomcat 在 Windows 平台上启动服务的方式是 Commons Daemon,JVM 的启动参数可以有多种设置方法。本文介绍 Commons Daemon 的大致组成和参数设置方法。 Commons Daemon 由两部分组成。 一是由 C 语言开发负责和操作系统交互的平台相关程序,在 Windows 上平台相关部分是 procr…

FileZilla的安装配置和使用教程

一、FileZilla简介 FileZilla是一款免费开源的FTP软件,有以下优点:非常易于使用,且跨平台(Linux、Windows、MacOs等) 支持FTP、FTPS、SFTP等多种文件传输协议 支持断点续传 支持建立多个标签(标签为一个FTP连接界面)同时工作 支持远程查找文件 自带功能强大的站点管理和…

云行 | 金陵古都焕发数智活力,天翼云为南京创新发展注入新动能!

10月29日,以“国云智算聚金陵 自主可控铸新基”为主题的天翼云中国行江苏南京站活动圆满举办。南京市数据局领导、中国电信江苏分公司领导、客户及合作伙伴代表莅临现场,共商转型发展新机遇,共创智慧江苏新未来。会上举行了天翼云全栈自主可控能力升级计划、南京城市算力调度…

10月回顾 | Apache SeaTunnel社区动态与进展一览

各位热爱 Apache SeaTunnel 的小伙伴们,社区10月份月报来啦,请查收! 这里将记录Apache SeaTunne社区每月动态和进展,欢迎关注。 月度Merge之星 感谢以下小伙伴上个月为 Apache SeaTunnel 所做的精彩贡献(排名不分先后):@Hisoka-X,@prclin,@JohnTeslaa,@happyboy1024,@ji…

微短剧出海新攻略:多语言翻译提效,窄带高清降本,合规之下畅享极致播放

短剧出海「 全能力解锁 」快速轻装,一站出海。 短剧出海作为近两年的蓝海赛道,发展潜力惊人,据机构报告数据显示,2023国内短剧市场规模达53亿美元,而海外短剧市场规模高达650亿美元,全球市场发展潜力巨大。 想要在规模激增的全球内容市场中稳健出海,技术可以提效降本,…

井底车场人员进入识别智慧矿山一体机罐笼乘坐人员超限识别重塑矿山作业模式,提升管理效能

在矿山行业,安全始终是最重要的议题之一。随着科技的进步,智能化设备的应用已经成为提升矿山安全管理水平的关键。智慧矿山一体机,作为新一代的智能化解决方案,正是在这样的背景下应运而生。它不仅是一款设备,更是一个全面整合的安全管理系统,旨在通过前沿的人工智能技术…

使用 JuiceFS 快照功能实现数据库发布与端到端测试

今天的博客来自 JuiceFS 云服务用户 Jerry,他们通过使用 JuiceFS snapshot 功能,创新性地实现了数据的版本控制。Jerry,是一家位于北美的科技公司,利用人工智能和机器学习技术,简化用户购买汽车和家庭保险的比较及购买流程。在软件开发领域,严格的测试和受控发布已经成为…