Spring Cloud之注册中心之Nacos负载均衡

目录

负载均衡

服务下线

权重配置

配置权重

解决办法

常见问题

同集群优先访问

给实例配置集群名称

开启Nacos负载均衡策略


负载均衡

⽣产环境相对是⽐较恶劣的, 我们需要对服务的流量进⾏更加精细的控制. Nacos⽀持多种负载均衡策略, 包括权重, 同机房, 同地域, 同环境等.

服务下线
当某⼀个节点上接⼝的性能较差时, 我们可以第⼀时间对该节点进⾏下线.
操作步骤: 服务详情 -> 下线
点击下线后, 再次请求接⼝, 会发现该服务没有请求进来了。
再次单击上线, 该节点会继续收到请求。
下线之前

下线端口号为9091的服务进程之后:

权重配置

除了下线之外, 我们也可以配置这个节点的流量权重。

配置权重

操作步骤: 找到对应节点 ->编辑 -> 在弹出的窗⼝修改权重值。

下面修改端口号为9091的服务进程的权重为0.1

观察结果:
我们可以看到,三个服务实例接收到的请求次数几乎一样多,这是为什么呢?明明我们已经配置了权重且比例稍微比较大,按理说应该能看到现象。
是因为我们使用了LoadBalance,它本来就是负责负载均衡的,此时就不会使用Nacos的权重属性进行负载均衡。
我们可以参考一下文章:
解决办法
开启Nacos负载均衡策略
application.properties
spring.cloud.loadbalancer.nacos.enabled=true

application.yml 

spring:cloud:loadbalancer:nacos:enabled: true
观察结果:
由此我们可以看到,我们设置的权重生效了。
常见问题
修改权重时, 可能会报错:

报错信息为:

caused: errCode: 500, errMsg: do metadata operation failed ;caused:
com.alibaba.nacos.consistency.exception.ConsistencyException: The Raft Group
[naming_instance_metadata] did not find the Leader node;caused: The Raft Group
[naming_instance_metadata] did not find the Leader node; 

原因: Nacos 采⽤ raft 算法来计算 Leader, 并且会记录前⼀次启动的集群地址, 当服务器 IP 改变时会导致 raft 记录的集群地址失效, 导致选 Leader 出现问题. (⽹络环境发⽣变化时, IP地址也会发⽣变化)
解决办法: 删除 Nacos 根⽬录下 data ⽂件夹下的 protocol ⽂件夹即可。
同集群优先访问
Nacos把同⼀个机房内的实例, 划分为⼀个集群. 所以同集群优先访问, 在⼀定程度上也可以理解为同房优先访问.
微服务架构中, ⼀个服务通常有多个实例共同提供服务, 这些实例可以部署在不同的机器上, 这些机器可以分布在不同的机房, ⽐如product-service:
实例1: 分布在上海机房
实例2: 分布在上海机房
实例3: 分布在北京机房
实例4: 分布在北京机房
微服务访问时, 应尽量访问同机房的实例. 当本机房内实例不可⽤时, 才访问其他机房的实例。
⽐如order-service 在上海机房, product-service 在北京和上海机房都有实例, 那我们希望可以优先访问上海机房, 如果上海机房没有实例, 或者实例不可⽤, 再访问北京机房的实例. 通常情况下, 因为同⼀个机房的机器属于⼀个局域⽹, 局域⽹访问速度更快⼀点.
给实例配置集群名称
1. 配置集群名称
给order-service和端口号为9090的product-service配置 SH 集群名称。
spring:cloud:nacos:discovery:server-addr: 110.41.51.65:10020cluster-name: SH #集群名称: 上海集群

端口号为9091的product-service 和 端口号为9092的product-service配置 BJ 集群名称。

开启Nacos负载均衡策略
同权重配置
spring:cloud:nacos:loadbalancer:nacos:enabled: true
多次访问“http://127.0.0.1:8080/order/1”
观察结果:
我们前面配置order-service集群为 SH,配置端口号为9090的product-service集群为 SH,配置端口号为9091的product-service集群为 BJ,配置端口号为9092的product-service集群为 BJ。
上面的结果可以看到,请求都发送到了端口号为9090的product-service集群,与预期符合。

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

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

相关文章

音视频入门基础:RTP专题(16)——RTP封装音频时,音频的有效载荷结构

一、引言 《RFC 3640》和《RFC 6416》分别定义了两种对MPEG-4流的RTP封包方式,这两个文档都可以从RFC官网下载: RFC Editor 本文主要对《RFC 3640》中的音频打包方式进行简介。《RFC 3640》总共有43页,本文下面所说的“页数”是指在pdf阅读…

操作系统控制台-健康守护我们的系统

引言基本准备体验功能健康守护系统诊断 收获提升结语 引言 阿里云操作系统控制平台作为新一代云端服务器中枢平台,通过创新交互模式重构主机管理体验。操作系统控制台提供了一系列管理功能,包括运维监控、智能助手、扩展插件管理以及订阅服务等。用户可以…

ASP.NET Core 6 MVC 文件上传

概述 应用程序中的文件上传是一项功能,用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件,然后根据需要对文件进行一些验证,最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…

JVM之Arthas的dashboard命令以及CPU飙高场景

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

JSAR 基础 1.2.1 基础概念_空间小程序

JSAR 基础 1.2.1 基础概念_空间小程序 空间空间自由度可嵌入空间空间小程序 最新的技术进展表明,官网之前的文档准备废除了,基于xsml的开发将退出历史舞台,three.js和普通web结合的技术将成为主导。所以后续学习请移步three.js学习路径&#…

蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码

文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言:STM32G431RBT6实现嵌入式组第七届题目解析源码&…

Java之IO流

什么是IO流 存储和读取数据的解决方案 I:input:输入 O:output:输出 流:像水流一样传输数据 IO流的作用 用于读取数据(本地文件,网络) IO流的分类 流的方向: 输入流&#xff…

Python入门———条件、循环

目录 语句 顺序语句 条件语句 缩进和代码块 判断年份是否是闰年 空语句 pass 循环 while 循环 求5的阶乘: 求1!2!3!4!5! for循环 打印1-10 打印2,4,6,8&#x…

JWT的学习

1、HTTP无状态及解决方案 HTTP一种是无状态的协议,每次请求都是一次独立的请求,一次交互之后就是陌生人。 以CSDN为例,先登录一次,然后浏览器退出,这个时候在进入CSDN,按理说服务器是不知道你已经登陆了&…

【接口负载】✈️整合 Resilience4j 指定接口负载,避免过载

目录 👋前言 🍸一、应用场景 🍻二、 代码实现 🍹三、扩展 🍸四、章末 👋前言 小伙伴们大家好,上次本地实操了下针对百万级数据量如何快速排序、指定条件获取等,文章内容包括&am…

CSS—网格布局Grid

网格布局grid 提供了带有行和列的基于网格的布局系统,无需使用浮动和定位。 当 HTML 元素的 display 属性设置为 grid 或 inline-grid 时,它就会成为网格容器。 更多布局模式可以参考之前的博客: ​​​​​​CSS—flex布局、过渡transit…

表格columns拼接两个后端返回的字段(以umi框架为例)

在用组件对前端项目进行开发时,我们会遇到以下情况:项目原型中有取值范围这个表字段,需要存放最小取值到最大取值。 而后端返回给我们的数据是返回了一个最小值和一个最大值, 在columns中我们需要对这两个字段进行拼接&#xff0…

Git系列之git tag和ReleaseMilestone

以下是关于 Git Tag、Release 和 Milestone 的深度融合内容,并补充了关于 Git Tag 的所有命令、详细解释和指令实例,条理清晰,结合实际使用场景和案例。 1. Git Tag 1.1 定义 • Tag 是 Git 中用于标记特定提交(commit&#xf…

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面,简化了数据库的创建、编辑、查询和维护,适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括: 免费开源,可…

VMware workstation 17安装过程详细指南

VMware 17安装过程详细指南 一、准备工作 在开始安装 VMware 之前,你需要确保你的计算机满足以下条件: 操作系统:VMware Workstation 支持多种 Windows 和 Linux 操作系统。确保你的操作系统版本在 VMware 支持的范围内。 硬件要求&#…

【从零开始学习计算机科学】计算机组成原理(六)异常事件处理

【从零开始学习计算机科学】计算机组成原理(六)异常事件处理 异常事件处理异常处理的数据通路异常事件入口地址 异常事件处理 异常和中断事件改变处理机正常指令的执行顺序。异常指令执行过程中,由于操作非法和指令非法引起的事件。陷阱指陷…

基于DeepSeek的智慧医药系统(源码+部署教程)

运行环境 智慧医药系统运行环境如下: 前端: HTMLCSS后端:Java AIGCDeepseekIDE工具:IDEA技术栈:Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…

WinUI 3 支持的三种窗口 及 受限的窗口透明

我的目标 希望能够熟悉 WinUI 3 窗口的基本使用方式,了解可能出现的问题 。 WinUI 3 支持三种窗口模式,分别为:常规窗口模式、画中画模式、全屏模式。 窗口模式:常规 即我们最常见的普通窗口。 支持:显示最大化按钮…

《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》

PrometheusGrafana部署配置 Prometheus安装 下载Prometheus服务端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案1

目的,判断是否主键重复,不重复则登录新数据,重复则不登录。 定义类型: DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下: 模拟数据库的登录过程。假设…