我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringCloudLoadBalancer自定义负载均衡器使用解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringCloudLoadBalancer自定义负载均衡器使用解析

由于原有的负载均衡组件Ribbon停止维护,而完美的Spring生态怎能允许缺少负载均衡组件呢?Spring Cloud官方自己造出了Spring Cloud LoadBalancer来代替原有的Ribbon。由于是官方自己写的组件,所以并没有像eureka、Feign那样抽出一个单独的组件包出来。而放入到Spring Cloud Commons规范包中。

正文

Spring Cloud LoadBalancer 帮开发者已经实现了RoundRobinLoadBalancer、RandomLoadBalancer,分别是轮训和随机,默认实现为轮训。

即让是负载均衡组件,那必然有默认实现,也必然有扩展接口暴露给开发者。所以第一步肯定是介绍抽象接口。

// 负载均衡的标志性接口,继承ReactorLoadBalancer接口
// 本接口无任何接口增强,仅仅作为一个标志性接口。
public interface ReactorServiceInstanceLoadBalancer extends ReactorLoadBalancer<ServiceInstance> 
// 在Spring Cloud高版本中大部分组件采用了Reacotr框架(有一说一,阅读性极差!!)
// 这里定义了一个选择的抽象方法。
public interface ReactorLoadBalancer<T> extends ReactiveLoadBalancer<T> {
	Mono<Response<T>> choose(Request request);
	default Mono<Response<T>> choose() {
		return choose(REQUEST);
	}
}

这里有涉及到Reactor框架,不过完全可以当黑盒使用。接口非常的简单就一个choose方法,所以接下来我们只需要实现此接口。

@LoadBalancerClient(value = "deptmanagecloud-provider", configuration = MyConfig.class)
public class MyConfig {
    // 配置负载均衡策略
    @Bean
    public ReactorLoadBalancer<ServiceInstance> myLB(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new MyLB(
                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class));
    }
}

这里有部分逻辑,读者完全可以当作黑盒暂时不需要去理解。只需要明白从注册中心拿到注册表以后会执行getInstanceResponse方法,只需要实现自定义负载均衡策略的逻辑即可,好比我这里的逻辑是永远只调用一个服务(当然,这完全扯淡,仅仅是Demo无须太关心)

既然我们把自定义负载均衡策略写好了,那么,怎么告诉Spring呢?肯定需要注入给Spring。

@LoadBalancerClient(value = "deptmanagecloud-provider", configuration = MyConfig.class)
public class MyConfig {
    // 配置负载均衡策略
    @Bean
    public ReactorLoadBalancer<ServiceInstance> myLB(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new MyLB(
                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class));
    }
}

这里需要➕上@LoadBalancerClient注解,value为调用方的服务名,configuration为配置类

总结

相比以前的Ribbon的IRule方式这个要复杂一些,不过大部分都是造轮子,开发者只需要关心自定义的负载均衡逻辑即可~!

到此这篇关于SpringCloud LoadBalancer自定义负载均衡器使用解析的文章就介绍到这了,更多相关SpringCloud LoadBalancer内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringCloudLoadBalancer自定义负载均衡器使用解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringCloudLoadBalancer自定义负载均衡器使用解析

LoadBalancerClient是SpringCloud提供的一种负载均衡客户端,Ribbon负载均衡组件内部也是集成了LoadBalancerClient来实现负载均衡,本文给大家深入解析LoadBalancerClient接口源码,感兴趣的朋友跟随小编一起看看吧
2023-05-16

详解SpringCloudLoadBalancer新一代负载均衡器

这篇文章主要为大家介绍了SpringCloudLoadBalancer新一代负载均衡器详解使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-16

SpringCloud LoadBalancer自定义负载均衡器怎么使用

本文小编为大家详细介绍“SpringCloud LoadBalancer自定义负载均衡器怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud LoadBalancer自定义负载均衡器怎么使用”文章能帮助大家解决疑惑
2023-07-06

Spring Cloud中如何自定义Ribbon负载均衡策略

小编给大家分享一下Spring Cloud中如何自定义Ribbon负载均衡策略,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 主启动类处理还是使用上一节的客户
2023-06-04

k8s使用ingress-nginx负载均衡的示例分析

本篇文章给大家分享的是有关k8s使用ingress-nginx负载均衡的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ingress-nginx负载均衡调用顺序:用户-
2023-06-04

同时使用@LoadBalanced @RefreshScope注解负载均衡失效分析

这篇文章主要为大家介绍了同时使用@LoadBalanced @RefreshScope负载均衡失效问题分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-10

怎么使用dns服务器实现负载均衡

要使用DNS服务器实现负载均衡,可以按照以下步骤操作:1. 购买或设置多个服务器:首先需要购买或设置多台服务器,并利用负载均衡软件或硬件将它们组合成一个服务器集群。2. 配置服务器集群:确保所有服务器都能够相互通信,并且在同一网络中。每台服
2023-09-07

HDFS Balancer负载均衡器及语法怎么使用

这篇文章主要介绍了HDFS Balancer负载均衡器及语法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HDFS Balancer负载均衡器及语法怎么使用文章都会有所收获,下面我们一起来看看吧。1、背
2023-07-05

Spring Cloud Ribbon 负载均衡使用策略示例详解

Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡工具,Ribbon客户端组件提供了一系列的完善的配置,如超时,重试等,这篇文章主要介绍了Spring Cloud Ribbon 负载均衡使用策略示例详解,需要的朋友可以参考下
2023-03-13

Linux上搭载Nginx负载均衡配置使用案例详解

目录1,这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢?2, 负载均衡的种类3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档)4, 创建两台Nginx服务器5, 搭建Nginx搭建Keepalived:(Keep
2022-06-04

架构解密:剖析 PHP 负载均衡的妙用与本质

PHP 负载均衡助力高并发应用轻松应对流量激增,实现资源合理分配,确保应用稳定高效运行。 PHP 负载均衡、高并发、资源合理分配、应用稳定性 PHP 负载均衡是一种通过将 Web 请求分配给多台 Web 服务器来实现负载均衡的技术。这使得 Web 应用程序能够在更高的负载下运行,并且提高了它的可用性。
架构解密:剖析 PHP 负载均衡的妙用与本质
2024-02-03

使用负载均衡器在DDoS防御中有什么作用

负载均衡器在DDoS防御中起着重要作用,主要有以下几点:分散攻击流量:负载均衡器可以将来自不同来源的流量分发到多台服务器上,从而分散攻击流量,减轻单台服务器的压力,提高系统的抗压能力。防止单点故障:通过负载均衡器将流量分发到多台服务器上,即
使用负载均衡器在DDoS防御中有什么作用
2024-04-15

PHP 负载均衡的定制:为您的应用程序量身定制解决方案

PHP 负载均衡的定制允许您根据应用程序的需求微调服务器配置,最大程度地提高性能和可靠性。
PHP 负载均衡的定制:为您的应用程序量身定制解决方案
2024-03-01

多台主机使用DNS服务器怎么实现网络负载均衡

这篇文章主要介绍“多台主机使用DNS服务器怎么实现网络负载均衡”,在日常操作中,相信很多人在多台主机使用DNS服务器怎么实现网络负载均衡问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”多台主机使用DNS服务器怎
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录