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.hqwc.cn/news/499456.html

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

相关文章

算法修炼-动态规划之斐波那契数列模型

一、动态规划的算法原理 这是本人动态规划的第一篇文章,所以先阐述一下动态规划的算法原理以及做题步骤。动态规划本人的理解就是通过题目所给的条件正确地填满dp表(一段数组)。首先要先确定好dp表每个位置的值所代表的含义是什么&#xff0c…

云桥通+IDC数据中心:SDWAN企业组网实现高效连接案例

一、需求和背景 云桥通曾服务的一家大型跨国企业C公司,C公司多个数据中心分布在全球各地。为了实现数据共享和协作,数据中心之间需要建立稳定高效的网络连接。然而,传统的MPLS专线网络存在昂贵的成本和漫长的开通周期,无法满足企…

接口自动化测试思路和实战 —— 编写线性测试脚本实战!

接口自动化测试框架目的 测试工程师应用自动化测试框架的目的: 增强测试脚本的可维护性、易用性(降低公司自动化培训成本,让公司的测试工程师都可以开展自动化测试)。 自动化测试框架根据思想理念和深度不同,渐进式的分为以下几种: 线性脚本框架 模块…

SpringBoot多数据源配置(MySql、Oracle)

一、依赖 <!-- dynamic-datasource 多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId></dependency><!--oracle驱动--><dependency><groupI…

初学JavaWeb开发总结

0 什么是Web开发 Web: 全球广域网&#xff0c;又称万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 Web开发&#xff0c;就是开发网站的&#xff0c;如&#xff1a;淘宝、京东等等。 1 网站的工作流程 流程&#xff1a; 浏览器先向前端服务器请求前端资…

了解iptables防火墙,这一篇就够了

目录 一、IPtables介绍 iptables工作原理 iptables工作流程 1. 什么是 iptables 2. 什么是表&#xff08;tables&#xff09; 3 什么是链&#xff08;chains&#xff09; 4 什么是规则&#xff08;Policy&#xff09; 三、iptables 表和链 1、四个表&#xff1a; 2、五…

JOISC2022 复制粘贴(区间DP,字符串hash)

题目描述 题面 分析 这道题考场没有任何头绪&#xff0c;赛后也是看了许多题解才明白状态设计和转移的一步步思考过程。 首先我们需要想到 无论是屏幕上的字符串&#xff0c;还是剪切板上的字符串&#xff0c;在任何时候都必须是目标串的子串。这个非常好像&#xff0c;如果不…

计算机网络原理--传输层

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 TCP/IP五层&#xff08;或四层&#xff09;模型 传输层 TCP和UDP的区别 UDP协议 校验和 如何…

黑马程序员——接口测试——day05——Request库、Cookie、Session、UnitTest框架

目录&#xff1a; Requests库 Requests库安装和简介设置http请求语法应用案例 案例1案例2案例3案例4Cookie Cookie简介CookieSession认证方式案例5-看演示&#xff0c;此代码不需实现Session Session简介Session自动管理Cookie案例6面试题Cookie和Session区别获取指定响应数据…

c#---简易程序 包括(登录+文本编译器+图片编译器+进制转换器)

目录 form1.cs namespace login_noteimage {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void label1_Click(object sender, EventArgs e){}private void login_Click(object sender, EventArgs e){String name Nametext.Text;String …

数据结构------栈(Stack)和队列(Queue)

也是好久没写博客了&#xff0c;那今天就回归一下&#xff0c;写一篇数据结构的博客吧。今天要写的是栈和队列&#xff0c;也是数据结构中比较基础的知识。那么下面开始今天要写的博客了。 目录 栈&#xff08;Stack&#xff09; 队列&#xff08;Queue&#xff09; 喜欢就点…

c++之旅——第一弹

本篇文章内容为C语言到C语言的过渡阶段第一篇&#xff0c;用来更好地过渡到c阶段&#xff0c;所以没有讲和C语言相同的知识点&#xff0c;着重于两者之间的区别之处来进行讲述c&#xff0c;创作不易&#xff0c;希望大家多多支持哦&#xff0c;如有知识性错误欢迎评论指正&…