SpringCloud之Ribbon基础认识-服务负载均衡

news2025/5/13 4:07:32

0、Ribbon基本认识

  1. Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。

  2. Ribbon 主要功能是提供客户端负载均衡算法和服务调用

  3. Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。

  4. Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务

  5. 程序员很容易使用 Ribbon 的负载均衡算法实现负载均衡

  6. 一句话: Ribbon: 负载均衡+RestTemplate 调用

官网地址: https://github.com/Netflix/ribbon

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

 1、LB(Load Balance)

  1. 集中式 LB
    • 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方;
    • LB(Load Balance 负载均衡)
  2. 进程内 LB
    • 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再从这些地址中选择出一个合适的服务地址。
    • Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址
    • 取出来的服务存入jvm并且​定时更新​​:默认每30秒(可配置)重新拉取列表,保证数据新鲜度,如果取出来的服务地址有不能用的也会自动选择其他的能够使用的

 2、Ribbon机制和架构

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

 3、Ribbon常见负载算法

策略名描述特点
BestAvailableRule选择一个最小的并发请求的server。逐个考察Server,如果Server被tripped(跳闸)不能用了,则忽略,再选择其中ActiveRequestsCount最小的server。​低延迟优先​​,适合对响应速度敏感的场景。但是一个一个的看,对服务方来说有一点的资源开销。
AvailabilityFilteringRule过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections超过配置的阈值)。​高可用性​​,自动排除故障或过载节点。
WeightedResponseTimeRule根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。​动态权重​​,优先选择响应快的节点。
RetryRule对选定的负载均衡策略机上重试机制。在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server,达到一定阈值则不再尝试。​容错性强​​,适合临时性故障恢复。
RoundRobinRule轮询index,选择index对应位置的server。​公平分配​​,按顺序轮询,简单均衡但无视节点状态。Ribbon默认是这个
RandomRule随机选择一个server。在index上随机,选择index对应位置的server。​无状态随机​​,适合低复杂度场景。
ZoneAvoidanceRule复合判断server所在区域的性能和server的可用性选择性server。​区域感知​​,兼顾性能和跨区域容灾,各方面综合考量。

举例配置(Config)如下 :

@Configuration
public class RibbonRule {
    //配置注入自己的负载均衡算法
    @Bean
    public IRule myRibbonRule() {
        //这里返回的是RandomRule,当然也可以自己指定
        return new RandomRule();
    }
}

在启动类上加如下注解:

//指定Ribbon的负载均衡算法
@RibbonClient(name = "MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重生之我在2024学Fine-tuning

一、Fine-tuning(微调)概述 Fine-tuning(微调)是机器学习和深度学习中的一个重要概念,特别是在预训练模型的应用上。它指的是在模型已经通过大量数据训练得到一个通用的预训练模型后,再针对特定的任务或数据…

Selenium Web自动化测试学习笔记(一)

自动化测试 技术手段模拟人工,执行重复性任务,准确率100%,高于人工 selenium 可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以&#x…

2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证

2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业​​认证 立刻预约吧 文章目录 2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业​​认证立刻预约吧🔍 探索 AI 向量搜索的强大功能!🎯 学习路径目标&#x1f6e…

EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展

一、引言 在数字化浪潮下,智能硬件蓬勃发展,从智能家居到工业物联网,深刻改变人们的生活与工作。音视频通讯作为智能硬件交互与协同的核心,重要性不言而喻。但嵌入式设备硬件资源受限,传统音视频方案集成困难。EasyRT…

Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio

Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio 前置条件 已经成功安装 kubesphere v4.3.1 参考教程: https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio 1. 安装基础依赖 # ubuntu安装基础依赖 apt insta…

1.短信登录

1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时,后端会创建一个新的 token 并存入 Redis,但之前登录的 token 还没有过期。这可能会导致以下问题: 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …

Linux-Ubuntu安装Stable Diffusion Forge

SD Forge在Win上配置起来相对简单且教程丰富,而在Linux平台的配置则稍有门槛且教程较少。本文提供一个基于Ubuntu24.04发行版(对其他Linux以及SD分支亦有参考价值)的Stable Diffusion ForgeUI安装配置教程,希望有所帮助 本教程以N…

MixTeX - 支持CPU推理的多模态LaTeX OCR

文章目录 一、项目概览相关资源核心特性技术特点 二、安装三、使用说明环境要求 四、版本更新五、当前限制 一、项目概览 MixTeX是一款创新的多模态LaTeX识别小程序,支持本地离线环境下的高效CPU推理。 无论是LaTeX公式、表格还是混合文本,MixTeX都能轻…

23、DeepSeek-V2论文笔记

DeepSeek-V2 1、背景2、KV缓存优化2.0 KV缓存(Cache)的核心原理2.1 KV缓存优化2.2 性能对比2.3 架构2.4多头注意力 (MHA)2.5 多头潜在注意力 (MLA)2.5.1 低秩键值联合压缩 (Low-Rank Key-Value …

【算法专题十一】字符串

文章目录 1. leetcode.14.最长公共前缀1.1 题目1.2 思路1.3 代码 2. leetcode.5.最长回文字串2.1 题目2.2 思路2.3 代码 3. leetcode.67.二进制求和3.1 题目3.2 思路3.3 代码 4. leetcode.43.字符串相乘4.1 题目4.2 思路4.3 代码 1. leetcode.14.最长公共前缀 1.1 题目 题目链…

美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进

打开 Settings 界面,依次选择 Editor -> Code Style -> Java,选择 Code Generation, 取消 Line comment at first column 和 Block comment at first column 的勾选即可, 1、Line comment at first column (行注释在第一列…

赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG

XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一,集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU,并结合了 653,100 个逻辑单元与丰富的片上存储资源,可满足高性能计算、A…

Android Camera HAL v3 and Video4Linux 2

《小驰行动派的知识星球》 ———————————————— 推荐阅读: 关于博主 《小驰Camera私房菜》小册目录 采用v4l2loopback来实现 虚拟Camera Camera基础及一些基本概念 Android Camera 学习路线 | 个人推荐 Android Camera开发系列(干货满满&a…

基于pyqt的上位机开发

目录 安装依赖 功能包含 运行结果 安装依赖 pip install pyqt5 pyqtgraph pyserial 功能包含 自动检测串口设备,波特率选择/连接断开控制,数据发送/接收基础框架,实时绘图区域(需配合数据解析) ""&q…

CentOS 7 系统下安装 OpenSSL 1.0.2k 依赖问题的处理

前面有提到过这个openssl的版本冲突问题,也是在这次恢复服务器时遇到的问题,我整理如下,供大家参考。小小一个软件的安装,挺坑的。 一、问题 项目运行环境需要,指定PHP7.0.9这个版本,但是‌系统版本与软件…

vue修改了node_modules中的包,打补丁

1、安装patch npm i patch-package 安装完成后,会在package.json中显示版本号 2、在package.json的scripts中增加配置 "postinstall": "patch-package" 3、执行命令 npx patch-package 修改的node_modules中的包的名称 像这样 npx patch-packag…

[matlab]private和+等特殊目录在新版本matlab中不允许添加搜索路径解决方法

当我们目录包含有private,或者时候matlab搜索目录不让添加,比如截图: 在matlab2018以前这些都可以加进去后面版本都不行了。但是有时候我们必须要加进去才能兼容旧版本matlab库,比如mexopencv库就是这种情况。因此我们必须找到一个办法加进去…

OpenTelemetry 介绍

文章目录 1. 概述什么是OpenTelemetry发展历史与背景主要特点与优势2. 核心概念追踪(Tracing)指标(Metrics)日志(Logs)行李(Baggage)3. 主要组件API层SDK层数据收集器(Collector)导出器(Exporters)OTLP(OpenTelemetry Protocol)4. 集成方式语言支持(SDK)自动与手动插桩常见框…

【连载14】基础智能体的进展与挑战综述-多智能体系统设计

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 在基于大语言模型的多智能体系统(LLM-MAS)中,合作目标和合…

blender云渲染指南2025版

一、云渲染核心概念 Blender云渲染是将本地渲染任务迁移到云端服务器集群的技术,通过分布式计算实现效率提升100倍以上的解决方案,其核心逻辑是:用户上传Blender项目文件至【渲染101】等云平台,云端调用高性能服务器(…