Spirng Cloud Alibaba Nacos注册中心的使用 (环境隔离、服务分级存储模型、权重配置、临时实例与持久实例)

news2024/11/27 21:32:32

文章目录

  • 一、环境隔离
    • 1. Namespace(命名空间):
    • 2. Group(分组):
    • 3. Services(服务):
    • 4. DataId(数据ID):
    • 5. 实战演示:
      • 5.1 默认情况(public):
      • 5.2 Namespace的创建:
      • 5.3 微服务接入namespace:
  • 二、服务分级存储模型
    • 1. 服务级别:
    • 2. 集群级别:
    • 3. 区域级别:
  • 三、权重配置
    • 1. 服务升级:
    • 2. 服务选择:
  • 四、临时实例与持久实例
    • 1. 临时实例:
    • 2. 持久化实例:

一、环境隔离

在Nacos中,数据模型的相关概念包括namespace、group、services和dataId。

数据模型

1. Namespace(命名空间):

  • Namespace是Nacos的最高级别的隔离单位,用于隔离不同的应用或环境。
  • 每个Namespace都是相互隔离的,拥有独立的配置和服务注册表。
  • 通过Namespace可以实现不同环境的配置和服务管理,如开发环境、测试环境和生产环境可以使用不同的Namespace。

2. Group(分组):

  • Group是在同一个Namespace下对服务或配置进行逻辑上的分组。
  • 通过Group可以对服务或配置进行分类和管理,方便进行版本控制、灰度发布等操作。
  • 一个Group可以包含多个服务或配置。

3. Services(服务):

  • Services表示一组提供相同服务的实例集合。
  • 在Nacos中,服务注册中心用于将服务实例注册到服务列表中,并提供服务发现和负载均衡等功能。
  • 每个服务都有一个唯一的服务名(Service Name),可以根据服务名来查找和管理服务实例。

4. DataId(数据ID):

  • DataId是指在Nacos中唯一标识一个配置的字符串。
  • 对于配置管理来说,DataId对应于配置文件的文件名或者配置项的唯一标识符。
  • 对于服务注册和发现来说,DataId对应于服务的唯一标识符。通过DataId可以唯一定位到一个配置或服务。

这些概念在Nacos中的组织结构和管理方式,可以帮助用户更好地进行配置管理和服务注册与发现。

5. 实战演示:

5.1 默认情况(public):

在Nacos中,默认情况下,所有的服务(services)、配置(data)和分组(group)都在同一个Namespace中,该Namespace的名称为public。这意味着默认情况下,所有的服务和配置都在同一个命名空间下进行管理和隔离。

default

5.2 Namespace的创建:

找到命名空间菜单:

new
新建命名空间:
在这里插入图片描述

命名空间不填默认会自动生成,填写完,点击确定按钮。

deev

可以看到,页面里已经创建好了一个新的namespace。

5.3 微服务接入namespace:

这里可以先看下这篇文章:Spring Cloud Alibaba 整合 Nacos 实战

5.3.1 消费者 consumer 默认处于public命名空间:
public
5.3.2 provider修改yml配置:

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: c431c2a3-91bc-40ed-a99c-6fe856ac1e7d

5.3.3 启动provider 对应namespace如下:
provider
5.3.4 consumer向provider发起调用:

控制台报错如下:

在这里插入图片描述
因为namespace不同,会导致consumer找不到provider

二、服务分级存储模型

在分布式系统中,实例之间的关系可以分为以下几个级别:

1. 服务级别:

每个实例都属于同一个服务,即 consumer 服务。

2. 集群级别:

多个实例可以组成一个集群。

例如consumer-1、consumer-2和consumer-3 可以组成一个consumer-service集群。

127.0.0.1:8101  # 北京机房
127.0.0.1:8102  # 上海机房
127.0.0.1:8103  # 上海机房

3. 区域级别:

如果实例分布在不同的区域或数据中心,可以将它们划分为不同的区域级别。

例如,consumer-1和 consumer-2 部署在北京机房,而consumer-3 部署在上海。

服务分级模型如下:
分级模型
在微服务相互访问时,最好优先访问同一集群的实例,因为本地访问速度更快。仅当本集群不可用时,才考虑访问其他集群的实例。

例如:北京机房的consumer服务应该优先调用北京同机房的provider服务,在调不通的情况下才应该去访问上海机房的provider服务。
同机房
接下来,给consumer配置不通集群

在Nacos中,可以通过配置 cluster-name 属性 来指定集群的名称。可以将同一机房内的实例都配置相同的集群名称,这样它们就会被认为是同一个集群的成员。

修改yml如下:

spring:
  application:
    name: consumer  #微服务名称
  #配置nacos注册中心地址
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        cluster-name: SH   

此时启动,三个consumer对应实例,打开nacos控制台的服务列表:

detail

点击详情,可以看到consumer有两台在上海集群,一台在北京:

上海

三、权重配置

Nacos中的服务权重功能可以帮助解决一些问题,包括服务升级和服务选择。

1. 服务升级:

当系统需要进行服务升级或者版本迭代时,可以通过设置服务的权重来实现平滑的升级过程。例如,如果要升级一个服务的新版本,可以先将新版本的实例的权重设置为较低的值,然后逐步提高权重,同时降低旧版本实例的权重,实现新旧版本的平滑过渡。

2. 服务选择:

通过设置不同实例的权重,可以实现对不同实例的选择和分配。例如,可以将某些性能更好或者资源更充足的实例设置较高的权重,从而使得请求更有可能被路由到这些实例上。这样可以实现负载均衡和资源优化,提高系统的性能和可用性。

通过Nacos的权重功能,可以灵活地控制和调整服务的权重,以满足不同场景和需求。这为服务的管理和运维提供了更多的控制和灵活性。

在nacos控制台,找到 consumer 服务的实例列表,点击编辑,即可修改权重:

weight
这里我们将provider 权重修改为0:

在这里插入图片描述

通过consumer 调用 provider 则该实例永远不会被访问,报错如下:

providera

权重为 0 表示该实例的服务不可用或不参与负载均衡,因此请求不会被路由到该实例上。

四、临时实例与持久实例

1. 临时实例:

默认nacos就是临时实例,临时实例是指在服务注册后,当实例下线或者断开连接时,Nacos会立即将其从服务列表中删除。

这意味着临时实例在下线后不会被其他服务调用。

在这里插入图片描述

2. 持久化实例:

与之相对的是持久化实例,持久化实例在下线后仍然会保留在服务列表中,其他服务仍然可以调用它。

在Nacos中,可以通过配置来指定实例是临时实例还是持久化实例。

修改yml文件中ephemeral属性为false :

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false

consumer-prov

观察consumer的临时实例 已经变为了 false

consumer1
观察provider的临时实例 已经变为了 false

provider1

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

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

相关文章

SpringBoot终极讲义第二章笔记

01.关于Import 和 ImportResource Import注解用法(类上): 一般和Configuration一起使用,用来导入里面Bean方法返回的对象 ImportResource(类上):一般和Configuration一起使用,用来导入某个.XML文件里的bean 个人觉得这两个注解有点鸡肋 SpringBoot启动类默认扫描的是启动类…

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 (一)Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存(可选) (二)VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…

智慧公厕与传统公共厕所对比五大优势是什么?

随着科技的不断发展,智慧公厕成为城市建设的新亮点。与传统公共厕所相比,它具备许多独特优势和巨大的价值。本文将以智慧公厕领先厂家广州中期科技有限公司,大量精品案例项目实景实例实图,深入探讨智慧公厕的各个方面的特点&#…

PHP禁止单个用户多设备同时登陆,限制单个用户在多端重复登录

逻辑简单,主要是3点: 1.登录的时候写入一个最新的登录IP到user表其中一个last_login_ip字段 2.登录成功的时候,转入到index控制器或者index方法之前先进行查询: 1).当前IP 2).数据库字段当前用户存储的last_login_ip里面的IP 3.然后进行判断&#xff0…

前端面试题:在浏览器输入url回车后发生什么?浏览器渲染页面详细流程

❤️在浏览器输入url回车后 可以分为八步 解析url并且判断其合法性DNS解析url到指定的ip建立TCP连接(3次握手)发送HTTP请求(请求行/头/体)服务器处理收到的请求,将数据返回浏览器浏览器收到HTTP响应浏览器解析并渲染页…

Linux基本操作符(2)

W...Y的主页 😊 代码仓库分享 💕 关于Linux的操作符,在上篇博客中我们已经讲述了一些,都是Linux最基本的操作符。今天我们继续了解一些关于对文件及目录增删查改的操作符,话不多说我们直接上内容。 目录 rm指令的回…

RAID知识点总结

目录 RAID类型 RAID的数据组织及存取方式 RAID热备与重构 RAID逻辑卷 常见的RAID RAID0 RAID 1 RAID3 RAID 5 RAID 6 RAID组合 RAID 10 RAID 50 总结 RAID技术对比 RAID的应用场景 RAID2.0 使用RAID2.0的原因 RAID2.0的发展 RAID2.0技术:两层虚拟…

【C语言数据结构——————栈和队列4000字详解】

欢迎阅读新一期的c语言数据结构模块————栈和队列 ✒️个人主页:-_Joker_- 🏷️专栏:C语言 📜代码仓库:c_code 🌹🌹欢迎大佬们的阅读和三连关注,顺着评论回访🌹&#…

【Redis】简单动态字符串SDS

C语言字符串 char *str "redis"; // 可以不显式的添加\0,由编译器添加 char *str "redis\0"; // 也可以添加\0代表字符串结束C语言中使用char*字符数组表示字符串,‘\0’来标记一个字符串的结束,不过在使用的过程中我…

CAA DMU模块仿真

背景 本人由于项目原因,需要基于CATIA格式文件研究CAM的一些操作,其中就包括仿真功能,而CATIA中适合实现仿真功能的模块就是 DMU (Digital Mock-Up) 模块,本人研究了很长时间,尝试了很多方案,特地记录下来…

华为云云耀云服务器L实例评测|Docker部署及应用

文章目录 前言📣 1.前言概述📣 2.服务器攻击✨ 2.1 问题描述✨ 2.2 处理方法 📣 3.Docker简介📣 4.安装Docker✨ 4.1 卸载旧版docker✨ 4.2 安装依赖包✨ 4.3 安装GPG证书✨ 4.4 配置仓库✨ 4.5 正式安装Docker✨ 4.6 配置用户组✨…

Spring Boot的魔法:构建高性能Java应用

文章目录 Spring Boot:简化Java开发Spring Boot的性能优势1. 内嵌服务器2. 自动配置3. 起步依赖4. 缓存和优化5. 异步处理 实际示例:构建高性能的RESTful API总结 🎉欢迎来到架构设计专栏~Spring Boot的魔法:构建高性能Java应用 ☆…

洛谷P1102 A-B 数对题解

目录 题目A-B 数对题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示传送门 代码解释亲测 题目 A-B 数对 题目背景 出题是一件痛苦的事情! 相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 AB Problem,改用 …

Python与Scrapy:构建强大的网络爬虫

网络爬虫是一种用于自动化获取互联网信息的工具,在数据采集和处理方面具有重要的作用。Python语言和Scrapy框架是构建强大网络爬虫的理想选择。本文将分享使用Python和Scrapy构建强大的网络爬虫的方法和技巧,帮助您快速入门并实现实际操作价值。 一、Pyt…

“链圈”十年反思

2013 年 11 月,Vitalik Buterin 发表了以太坊白皮书的第一个版本。事后人们经常把这视为“区块链 2.0” 时代开启的标志,但在当时,其实是以太坊的出现才使得“区块链”作为一项单独的技术从“数字货币”当中分离出来。换句话说,比…

基于Java的大学生英语考试答题系统设计与实现(亮点:答题系统、报名系统、在线视频、在线聊天、附件下载)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

2023 年最佳多 GPU 深度学习系统指南

动动发财的小手,点个赞吧! 本文[1]提供了有关如何构建用于深度学习的多 GPU 系统的指南,并希望为您节省一些研究时间和实验时间。 1. GPU 让我们从有趣(且昂贵)的部分开始! 购买 GPU 时的主要考虑因素是&am…

flutter开发实战-webview插件flutter_inappwebview使用

flutter开发实战-webview插件flutter_inappwebview使用 在开发过程中,经常遇到需要使用WebView,Webview需要调用原生的插件来实现。常见的flutter的webview插件是webview_flutter,flutter_inappwebview。之前整理了一下webview_flutter&…

htb-cozyhosting

HTB-CozyHosting https://app.hackthebox.com/machines/CozyHosting ──(kwkl㉿kwkl)-[~] └─$ tail -l /etc/hosts …

凉鞋的 Unity 笔记 103. 检视器:GameObject 的微观编辑和查看

103. 检视器:GameObject 的微观编辑和查看 在上一篇,笔者简单介绍了场景层次 与 GameObject 的增删改查,如下所示: 在这一篇,我们接着往下学习。 我们知道在 场景层次 窗口,可以对 GameObject 进行增删改…