SpringCloudNacos注册中心服务分级存储模型

文章目录

  • 服务分级存储模型概述
  • 配置集群
    • 同集群优先的负载均衡
  • 权重配置
  • 总结


在这里插入图片描述

之前对 Nacos注册中心入门 已经做了演示. 这篇文章对 Nacos 的服务分级存储模型做理论与实践.



服务分级存储模型概述

一个服务可以有多个实例,例如我们的 user-server,可以有:

  • 127.0.0.1:8081
  • 127.0.0.1:8082
  • 127.0.0.1:8083

假如这些实例分布于全国各地的不同机房,例如:

  • 127.0.0.1:8081,在上海机房
  • 127.0.0.1:8082,在杭州机房
  • 127.0.0.1:8083,在杭州机房

Nacos 就将同一机房内的实例 划分为一个集群

也就是说,user-server 是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

在这里插入图片描述

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:

在这里插入图片描述

杭州机房内的 order-server应该优先访问同机房的 user-server。


配置集群

user-server 配置集群.

user-server 服务打包成三份. 三份配置文件做如下改动:

配置1:

server:port: 20242
spring:cloud:nacos:# 注册中心地址server-addr: ip:8848discovery:cluster-name: HZ # 集群名称application:name: user-server

配置2:

server:port: 20243
spring:cloud:nacos:# 注册中心地址server-addr: ip:8848discovery:cluster-name: HZ # 集群名称application:name: user-server

配置3:

server:port: 20244
spring:cloud:nacos:# 注册中心地址server-addr: ip:8848discovery:cluster-name: SH # 集群名称application:name: user-server

依次启动上面3个项目,启动成功后观察 http://ip:8848/nacos

在这里插入图片描述

看到有两个集群,三个实例…这两个集群分别是 HZ 和 SH .其中 HZ 下有连个实例,集群 SH 下有一个实例.

点击下图的详情:
在这里插入图片描述

会看到该服务的详情:

在这里插入图片描述


同集群优先的负载均衡

默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。

因此 Nacos 中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。

1)给 消费者服务 配置集群信息

修改 消费者服务application.yml 文件,添加集群配置:

spring:cloud:nacos:server-addr: ip:8848discovery:cluster-name: HZ # 集群名称

2)修改负载均衡规则

修改 消费者服务application.yml 文件,修改负载均衡规则:

userservice:ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

权重配置

实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。

但默认情况下 NacosRule 是同集群内随机挑选,不会考虑机器的性能问题。

因此,Nacos 提供了权重配置来控制访问频率,权重越大则访问频率越高。

Nacos 控制台,找到 user-server 的实例列表,点击编辑,即可修改权重:

在这里插入图片描述

在弹出的编辑窗口,修改权重

在这里插入图片描述


注意如果权重修改为 0,则该实例永远不会被访问


总结

在 Nacos 中,服务注册中心的服务分级存储模型是指将注册的服务信息按照不同的环境或命名空间进行分级存储,以实现服务的多环境隔离和管理。

Nacos 的服务分级存储模型主要包括以下几个概念和特点:

  • 命名空间(Namespace):命名空间是 Nacos 中的一个重要概念,可以用来隔离不同环境或不同应用的服务数据。通过命名空间,用户可以在不同的环境中管理不同的服务信息,比如在开发、测试和生产环境中分别注册和管理服务。

  • 集群(Cluster):Nacos 支持将服务信息分布在不同的集群中进行存储和管理,每个集群可以包含多个节点,提供高可用性和扩展性。

  • 分组(Group):在每个集群中,服务可以根据实际需求分成不同的分组进行管理,以达到更细粒度的服务隔离和控制。

  • 服务存储结构:Nacos 将各级别的服务信息按照命名空间、集群和分组的层次结构进行存储,通过这种分级存储结构,可以实现服务信息的多级管理和隔离。

通过 Nacos 的服务分级存储模型,用户可以更加灵活地管理和控制不同环境下的服务注册信息,实现服务的隔离和管理,从而提升系统的稳定性和可维护性。这种分级存储模型为企业级应用架构提供了更好的管理和控制手段,支持多租户、多环境的服务注册与管理,是 Nacos 注册中心的重要特性之一。

在这里插入图片描述



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

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

相关文章

C#使用iText7给PDF文档添加书签

上一篇文章将SqlSugar官网文档中每个链接对应的网页生成独立PDF文档再合并为单个PDF文档,但是没有书签,八百多页的内容查找和跳转都不方便,本文学习和使用iText7给PDF文档添加多级书签。   添加多级书签分为两大步骤:1&#xff…

VR全景HDR拍摄教程

什么是HDR? HDR可以用在哪里? 书面解释:HDR(高动态范围 High Dynamic Range)摄影,是摄影领域广泛使用的一种技术。 是不是有点懵? 我们来看一个实际的拍摄现场环境,你就懂了 我们…

使用 Gradle 版本目录进行依赖管理 - Android

/ 前言 / 在软件开发中,依赖管理是一个至关重要的方面。合理的依赖版本控制有助于确保项目的稳定性、安全性和可维护性。 Gradle版本目录(Version Catalogs)是 Gradle 构建工具的一个强大功能,它为项目提供了一种集中管理依赖…

定时任务框架

定时任务的框架有哪些 ● Timer,JDK自带的,比较简单,使用的时候,定义一个TimerTask,实现run方法,然后定义一个Timer类,调用timer.schedule(timerTask,1000,3000); ○ 缺点:单线程、…

附加Numpy数组

参考:Append Numpy Array 引言 在数据科学和机器学习领域,处理大规模数据集是一项重要且常见的任务。为了高效地处理数据,numpy是一个非常强大的Python库。本文将详细介绍numpy中的一个重要操作,即如何附加(append&a…

LeetCode:2867. 统计树中的合法路径数目(筛质数+ DFS Java)

目录 2867. 统计树中的合法路径数目 题目描述: 实现代码与思路: 筛质数 DFS 原理思路: 2867. 统计树中的合法路径数目 题目描述: 给你一棵 n 个节点的无向树,节点编号为 1 到 n 。给你一个整数 n 和一个长度为 …

西软云XMS operate XXE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

Jquery操作DOM对象

文章目录 目录 文章目录 本章目标 一.DOM操作分类 二.JQuery中的DOM操作 内容操作 属性值操作 节点操作 节点属性操作 节点遍历 总结 本章目标 使用Jquery操作网页元素使用JQuery操作文本与属性值内容使用JQuery操作DOM节点使用Jquery遍历DOM节点使用JQuery操作CSS-DOM 一…

WebServer -- 日志系统(下)

目录 🌼整体思路 🎂基础API fputs 可变参数宏 __VA_ARGS__ fflush 🚩流程图与日志类定义 流程图 日志类定义 🌼功能实现 生成日志文件 && 判断写入方式 日志分级与分文件 🌼整体思路 日志系统分两部…

无法调试MFC源码

VS无法调试MFC源码 起初 有时候就是这么无奈,MFC源码各种问题没有办法调试,可是又想看下代码如何调用,里面做了些什么,从哪儿调出,学习一下大神的思路什么的。整理一下有可能的原因。 检查生成代码设置 需要设置正…

04 Opencv图像操作

文章目录 读写像素修改像素值Vec3b与Vec3F灰度图像增强获取图像通道bitwise_not 算子对图像非操作 读写像素 读一个GRAY像素点的像素值(CV_8UC1) Scalar intensity img.at(y, x); 或者 Scalar intensity img.at(Point(x, y)); 读一个RGB像素点的像素值…

虚拟机看不到共享文件夹

johnjohn-virtual-machine:/mnt/hgfs$ cat /etc/issue Ubuntu 20.04.6 LTS \n \l 看下是否挂载 johnjohn-virtual-machine:/mnt/hgfs$ vmware-hgfsclient FPGAs_AdaptiveSoCs_Unified_2023.2_1013_2256 xilinx 取消挂载 johnjohn-virtual-machine:/mnt/hgfs$ sudo umount /mn…

kvm虚拟机修改网络模式

kvm修改网络模式可以直接使用virsh命令进行修改 一、查看主机 virsh list --all 二、查看需要修改主机的网络模式 virsh domiflist mysql 三、vim进行修改 cd /etc/libvirt/qemu/ vim mysql.xml 四、找到要修改的网卡部分 五、重新定义虚拟机 virsh define mysql_install.xml…

java工具类之解析地址

输出 代码实现 import java.util.regex.Matcher; import java.util.regex.Pattern;public class AddressResolutionUtil {/*** 解析地址* author ys* param address* return*/public static String addressResolution(String address){String regex"(?<province>…

Java的编程之旅32——继承与多态的联合使用

模拟USB设备接入电脑 1.首先建立一个名为“USB”的抽象类 public abstract class USB {public abstract void On();public abstract void Off(); }这是一个抽象类USB&#xff0c;表示一个USB设备。 该类有两个抽象方法On()和Off()&#xff0c;分别表示打开和关闭USB设备。 由…

javaee教程郑阿奇,一线互联网架构师筑基必备技能之Java篇

一、什么情况下会发生栈内存溢出&#xff1f; 1、栈是线程私有的&#xff0c;栈的生命周期和线程一样&#xff0c;每个方法在执行的时候就会创建一个栈帧&#xff0c;它包含局部变量表、操作数栈、动态链接、方法出口等信息&#xff0c;局部变量表又包括基本数据类型和对象的引…

【GameFramework框架内置模块】6、实体(Entity)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

K 个一组翻转链表 力扣

【玩转校招算法面试】第三天&#xff1a;链表中的节点每k个一组翻转&#xff08;动画演示、手写 Java 代码、详细注释、LeetCode 高频算法题&#xff09;_哔哩哔哩_bilibili 初始状态&#xff1a;1 -> 2 -> 3&#xff0c;pre null, cur 1保存当前节点的下一个节点&…

并查集基础,死去的回忆突然攻击我

并查集普及【模板】并查集 - 洛谷 #include<iostream> #include<cstring> #include<queue> #include<vector> #include<algorithm> using namespace std; #define int long long typedef pair<int,int> PII; #define xx first #define y…

TypeScript 中类的理解及应用场景

&#x1f469; 个人主页&#xff1a;不爱吃糖的程序媛 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、CSDN内容合伙人&#xff0c;专注于前端各领域技术&#xff0c;成长的路上共同学习共同进步&#xff0c;一起加油呀&#xff01; ✨系列专栏&#xff1a;前端…