SpringCloud中LoadBalancer负载均衡器配置

SpringCloud中LoadBalancer负载均衡器配置

依赖

<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
</dependencies>

服务提供者

@RestController
public class TestController {@Value("${server.port}")private int port;@GetMapping("/service")public String test(){return "服务端口:" + port;}
}

服务启动

启动服务user第一个实例,端口8080

启动服务user第二个实例,端口8081

网关配置


server:port: 888
spring:profiles:active: devapplication:name: gatewaycloud:nacos:server-addr: 127.0.0.1:8848discovery:namespace: devconfig:namespace: devfile-extension: ymlextension-configs:- data-id: all-dev.yml## 网关公共配置gateway:routes: # 路由集合[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: user # 当前路由的标识, 要求唯一uri: lb://user-server # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略predicates:  #匹配规则,全部满足才行- Path=/api/user/**

访问

连续4次请求 http://127.0.0.1:888/api/user/service

服务端口:8080
服务端口:8081
服务端口:8080
服务端口:8081
服务端口:8080
服务端口:8081

说明: 默认情况下,负载均衡为轮训

Load Balancer提供的策略

RoundRobin: 轮询策略,意思循环往复的的服务进行选取。(Load Balancer的默认负载策略)
Random: 随机策略,随机对服务选取一个节点

替换默认的负载策略,使用随机策略模式

  • 新建RandomLoadBalanceConfiguration配置
public class RandomLoadBalanceConfiguration {@Beanpublic ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);}
}

注意: 此处不要加**@Configuration**,因为这个配置类生效会在@LoadBalancerClients配置

  • 在启动或者某个能被扫描到的配置类上加上@LoadBalancerClients

  • 配置策略(全局配置和针对某个服务配置)

    package com.cdn.shopgateway;import com.cdn.shopgateway.config.RandomLoadBalancerConfig;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
    import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;@EnableDiscoveryClient  
    @SpringBootApplication
    @LoadBalancerClients(defaultConfiguration = RandomLoadBalancerConfig.class) // 全局修改loadBanance默认的负载策略,默认是轮训
    // @LoadBalancerClients({
    //         @LoadBalancerClient(name = "user", configuration = RandomLoadBalancerConfig.class)
    // })  // 正对loadbalance-provider-service服务修改loadBanance默认的负载策略,默认是轮训
    public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);System.out.println("===========网关启动成功============");}}
    

    再次访问

    连续6次请求 http://127.0.0.1:888/api/user/service

    服务端口:8081
    服务端口:8080
    服务端口:8080
    服务端口:8081
    服务端口:8081
    服务端口:8081
    

    说明: 此时,负载策略变为随机

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

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

相关文章

探索Spring中的StandardCharsets:字符编码的艺术与实践

1. 概述 在Java编程中&#xff0c;StandardCharsets是一个静态类&#xff0c;它提供了一组标准的字符集&#xff08;Charset&#xff09;常量&#xff0c;用于在字节和字符之间进行转换。虽然StandardCharsets并不直接属于Spring框架的一部分&#xff0c;但它在Spring和Java应…

[oeasy]python0016_在vim中直接运行python程序

回忆上次内容 上次 置换 esc 和 caps lock 任何操作 都可以在不移动 手腕的状态下完成了 每次都要 退出vim编辑器&#x1f634; 才能 在shell中 运行python程序有点麻烦 想要 不退出vim 直接在 vim应用 中运行 py程序可能吗&#xff1f;&#x1f914; 运行程序 以前都是 先退…

Unity 性能优化之UI和模型优化(九)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、选择UI二、UGUI的优化1.Raycast Target2.UI控件的重叠3.TextMeshPro 二、模型优化1.Model选项卡Mesh CompressionRead/Write Enabled设置Optimize Ga…

C语言怎样从/向数据⽂件读/写结构?

一、问题 从数据⽂件读结构或者向数据⽂件写结构&#xff0c;都可以很轻松地使⽤⽂件读写函数实现&#xff0c; 如使⽤ fwrite( ) 函数写⼀个结构&#xff0c;使⽤ fread( ) 函数读⼀个结构&#xff0c;但是这样读写出的⽂件却不能移植。怎么从/向数据⽂件读/写结构才能更好呢&…

MySQL分区与分片:深入解析原理与应用

在大数据和高并发的应用场景中&#xff0c;MySQL的单一表可能会遇到性能瓶颈或存储限制。为了解决这个问题&#xff0c;MySQL提供了分区&#xff08;Partitioning&#xff09;和分片&#xff08;Sharding&#xff09;两种技术。虽然它们的目的都是为了提升性能&#xff0c;但实…

【python数据分析基础】—pandas透视表和交叉表

目录 前言一、pivot_table 透视表二、crosstab 交叉表三、实际应用 前言 透视表是excel和其他数据分析软件中一种常见的数据汇总工具。它是根据一个或多个键对数据进行聚合&#xff0c;并根据行和列上的分组键将数据分配到各个矩形区域中。 一、pivot_table 透视表 pivot_tabl…

【MySQL】MySQL基本知识点

目录 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 4.DDL-表操作-查询 5.DDL-表操作-数据类型 6.DDL-表操作-修改 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 注意&#xff1a;里面的符号全部要切换为英文状态 4.DDL-表操作-查询 5.DDL…

车路云一体化简介

车路云一体化 车路云一体化融合控制系统&#xff08; System of Coordinated Control by Vehicle-Road-Cloud Integration&#xff0c;SCCVRCI&#xff09;&#xff0c;是利用新一代信息与通信技术&#xff0c; 将人、车、路、云的物理层、信息层、应用层连为一体&#xff0c;…

Linux网络编程(三)IO复用二 poll系统调用

二、poll系统调用 2.1、API poll系统调用和select类似&#xff0c;也是在指定时间内轮询一定数量的文件描述符&#xff0c;以测试其中是否有就绪者。 #include <poll.h>int poll(struct pollfd* fds, nfds_t nfds, int timeout);fds参数是一个pollfd结构类型的数组&am…

切实有效的提高VMWARE游戏性能-各版本通杀 vm17pro

这里的游戏性能&#xff0c;当然了&#xff0c;特别指出的是3D性能&#xff0c;毕竟现在2D也很少了。 因为平时没啥事&#xff0c;所以&#xff0c;无聊就跟朋友挂挂游戏&#xff0c;没事写点代码折腾下。所以&#xff0c;免不了跟VMWARE搭上边。走了很多的弯路&#xff0c;中…

使用动态种子的DGA:DNS流量中的意外行为

Akamai研究人员最近在域名系统&#xff08;DNS&#xff09;流量数据中观察到&#xff1a;使用动态种子的域名生成算法&#xff08;Domain Generation Algorithm&#xff0c;DGA&#xff09;的实际行为&#xff0c;与对算法进行逆向工程推测的预期行为之间存在一些差异。也就是说…

Android 系统启动流程源码分析

一、Init进程启动 是一个由内核启动的用户级进程。内核自行启动之后&#xff0c;就通过启动一个用户级程序init的方式&#xff0c;完成引导进程。 启动的代码init.c中的main函数执行过程&#xff1a;system\core\init.c中&#xff1a; 主要下面两个重要的过程&#xff1a; 1…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论&#xff08;Gene Ontology&#xff0c;GO&#xff0c;https://www.geneontology.org&#xff09;是一个广泛应用于生物信息学领域的知识库&#xff0c;它提供了一套标准化的词汇和分类体系&#xff0c;用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

无人机+垂直起降:微型共轴双旋翼无人机技术详解

微型共轴双旋翼无人机技术是一种独特的无人机设计&#xff0c;它结合了垂直起降&#xff08;VTOL&#xff09;能力和微型无人机的灵活性。这种设计允许无人机在无需跑道的情况下垂直起降&#xff0c;并具备在空中悬停和执行各种飞行动作的能力。 适用于集群控制&#xff0c;荷载…

自动选择图表类型:基于数据特征智能决策

前言 在数据可视化的世界中&#xff0c;选择正确的图表类型对于有效地传达信息至关重要。图表类型的选择不仅影响数据的呈现方式&#xff0c;而且直接影响观众对数据的理解。自动选择图表类型可以大大简化数据分析的流程&#xff0c;尤其是在处理动态源或大量数据集时。本文将…

NXP i.MX8系列平台开发讲解 - 1.1 导读前言

专栏文章目录传送门&#xff1a;返回专栏目录 文章目录 目录 1. 本专辑介绍 2. 学习本专辑作用 3.关于作者 1. 本专辑介绍 本专辑将会介绍Linux 驱动开发&#xff0c;Android BSP 驱动涉及HAL层调试&#xff0c;适用于嵌入式软件开发人员&#xff0c;和有兴趣向该方向发展…

基于单片机的无线数据传输系统设计

摘要:基于单片机的无线数据传输系统的设计,实现了温度和湿度的自动采集、无线通讯和报警功能。该系统包括了LCD1602显示电路、DHT11温湿度采集电路等,完成了基于无线数据传输的方法来实现温湿度的采集。 关键词:温湿度检测;N RF 24 L 01;单片机 0 引言 随着科技水平的提高,…

五一 大项目

Docker 中的 Nginx 服务为什么要启用 HTTPS 一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos…

前端实现导入Excel进行数据展示、导出

需求 一个 excel 文档 需要对文档里面的数据进行筛选拆分重组 由于数据量巨大 后端又抽不出来手 于是使用纯前端解决方案 解决思路 前端导入excel 把 excel 的数据解析为 json 格式 对数据进行相应操作后 重新导出为新 excel 虽笨但有效 第一步 导入excel 该方案需引…

Promise魔鬼面试题

文章目录 题目解析难点分析分析输出step1step2step3step4step5step6 参考/致谢&#xff1a;渡一袁老师 题目 Promise.resolve().then(() > {console.log(0);return Promise.resolve(4);}).then((res) > {console.log(res);});Promise.resolve().then(() > {console.l…