当前位置: 首页 > news >正文

Spring Cloud LoadBalancer详解

一、介绍

Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon(已经停更),

二、Ribbon和Loadbalance 对比

组件 组件提供的负载策略 支持负载的客户端
Ribbon 随机 RandomRule
轮询 RoundRobinRule
重试 RetryRule
最低并发 BestAvailableRule
可用过滤 AvailabilityFilteringRule
响应时间加权重 ResponseTimeWeightedRule
区域权重 ZoneAvoidanceRule
Feign或openfeign、RestTemplate
Spring Cloud Loadbalancer RandomLoadBalancer 随机(高版本有,此版本没有RoundRobinLoadBalancer 轮询(默认) Ribbon 所支持的、WebClient

LoadBalancer 的优势主要是,支持响应式编程的方式异步访问客户端,依赖 Spring Web Flux 实现客户端负载均衡调用。

三、整合LoadBlance

注意如果是Hoxton之前的版本,默认负载均衡器为Ribbon,需要移除Ribbon引用和增加配置spring.cloud.loadbalancer.ribbon.enabled: false。

1、升级版本

Spring Cloud Alibaba Spring cloud Spring Boot
2.2.6.RELEASE Spring Cloud Hoxton.SR9 2.3.2.RELEASE

2、移除ribbon依赖,增加loadBalance依赖

<!--nacos-服务注册发现-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<exclusions>
		<!--将ribbon排除-->
		<exclusion>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</exclusion>
	</exclusions>
</dependency>


<!--添加loadbalanncer依赖, 添加spring-cloud的依赖-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

四、自定定义负载均衡器

package com.msb.order.loadbalance;

import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.reactive.DefaultResponse;
import org.springframework.cloud.client.loadbalancer.reactive.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.reactive.Request;
http://www.dtcms.com/a/46367.html

相关文章:

  • Raspberry Pi边缘计算网关设计与LoRa通信实现
  • 使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图
  • 【网络安全 | 扫描子域+发现真实IP】CloakQuest3r安装使用详细教程
  • Python 如何实现烟花效果的完整代码
  • Ollama 的庐山真面目
  • check 单元测试框架
  • 【vue-echarts】——01.认识echarts
  • SVN 简介
  • Java中的CyclicBarrier是什么?
  • 什么是 jQuery
  • 慢sql治理
  • 天锐绿盘 | 文档安全管理系统
  • 【构建企业级Spring Boot应用:从基础到高级的全面指南】
  • 同步类型对比
  • 【每日学点HarmonyOS Next知识】全局调整字体、h5选择框无法取消选中、margin不生效、Length转换为具体值、Prop和link比较
  • 聊一聊 IM 如何优化数据库
  • 16.4 LangChain LCEL 接口全解析:同步、异步与批处理的正确打开方式
  • 算法刷题-2025年03月01日
  • C语言复习2:键盘录入,字符串变量定义,流程控制语句
  • Redis 实战篇 ——《黑马点评》(下)
  • 【硬核拆解】DeepSeek开源周五连击:中国AI底层技术的“破壁之战”
  • Transformer 代码剖析7 - 词元嵌入(TokenEmbedding) (pytorch实现)
  • 【wordpress】服务器已有LNMP环境(已运行WordPress),如何配置文档访问功能?
  • 【笔记】用大预言模型构建专家系统
  • DeepSeek模型本地部署与应用构建
  • C++ Primer Plus第九章课后习题总结
  • 全星研发项目管理APQP软件系统:铸造芯片集成电路产业研发体系化建设平台
  • C++中的“结界”机制:作用域与变量可见性探秘
  • 【前端面试】如何不通过正则:验证IP地址合法性
  • PartitionFinder2 安装与使用-bioinfomatics tools 051