Nacos注册中心一些配置说明

news2024/11/20 19:34:54

未安装Nacos的可以参考以下的安装教程

Nacos 安装教程(史上最详细保姆级教程)_nacos安装_大三的土狗的博客-CSDN博客

注意: Nacos默认是集群部署,如果想单机启动需要在对应Nacos的bin目录执行下面的命令

因为以后不可能只有一个Nacos注册中心,所以就默认集群部署很合理(😄

startup.cmd -m standalone

Nacos注册中心一些配置说明

现在有两个服务一个是user-service(提供者) 一个是order-service (消费者)

从四个方面说明:

  1. 服务注册的配置
  2. Nacos服务分级的配置(集群配置)
  3. 服务权重的配置
  4. 环境隔离的配置

一 基本服务配置

1 导入依赖

在消费者(user-service)和提供者(order-service )的pom中导入注册的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<!-- 像这种通用的版本配置我们一般交给父工程管理,这里我先加上 -->
    <version>2.2.6.RELEASE</version>  
</dependency>

注意:如果有eureka等注册中心的依赖,需要注释掉,因为二者冲突> 亲测冲突🐶

2 地址配置

在微服务的配置文件中配置, 即消费者和提供者的配置文件

spring:
  cloud:
    nacos:
      server-addr: localhost:8848  # 自己Nacos的地址及端口

此时当前服务就可以知道注册中心的位置,也可以向注册中心注册自己的服务

二 服务分级存储模型

首先说明一下为什么分级,因为在分布式系统中,一个服务可能有多个实例, 那么实例和实例之间的关系,又可以进一步的划分,就比如这里的user-service服务,假设有如下三个实例(忽略模拟地址)

  • 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-service服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

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

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

1. 给user-service配置集群

修改user-service的application.yml文件,添加集群配置:

此时有三个实例,对实例依次配置所属集群

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

配置之后重启进入Nacos中刷新就可以看到,如下配置

在这里插入图片描述

现在就实现了三台user-service服务两台在HZ集群,一台在SH集群

下面对order-service也进行集群的配置,把其放入到HZ集群中

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称
2. 同集群优先的负载均衡

配置之后此时的集群分布图如下:

红色框框是我们已经配置的四台服务, 此时对于order-service来说有三台user-service服务可以选择,那么应该怎么选择呢?

按照默认的负载均衡规则使用的是ZoneAvoidanceRule,他的规则是什么呢?如下

ZoneAvoidanceRule
以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。

可见该规则并不能实现根据同集群优先来实现负载均衡。

因此Nacos中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。我们一般也就使用NacosRule规则, 具体的配置如下

userservice:  # 顶格
  ribbon:     # 这里的ribbon是springCloud底层使用的负载均衡组件
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

对于底层Ribbon具体做了什么可以参考下面文章的下半部分

Eureka注册中心及Ribbon的源码跟踪_yfs1024的博客-CSDN博客

如果此时杭州的两台服务都挂了此时就会根据Nacosrule拉取到上海集群中的对应的服务,但是此时order-service会报如下异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RxyLa7s8-1683265483964)(C:\Users\57589\AppData\Roaming\Typora\typora-user-images\image-20230505115935558.png)]

三 权重配置

如果了解nginx的配置,其实这个和nginx中权重的一次基本一样.

权重的出现为我们解决了一些问题; 比如服务升级,服务的选择

在之前的项目中,对于服务的升级为了不影响服务正常的使用一般选择在访问较小的时间进行升级,即服务升级和时间挂钩, 但是有了权重就可以通过设置权重值来设置当前的服务的访问比.

服务选择.实际部署中还会出现这样的场景:服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。但默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。因此,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。在nacos控制台,找到user-service的实例列表,点击编辑,即可修改权重:

在这里插入图片描述在弹出的编辑窗口,修改权重:

在这里插入图片描述

注意:如果权重修改为0,则该实例永远不会被访问, 此时我们就可以升级系统

由此就通过去那种解决了服务升级,服务的选择这两问题

四 环境隔离

Nacos提供了namespace来实现环境隔离功能。

  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见

我们可以通过将当前实例配置到不同的namespace中来实现服务之间的隔离

那么我们为什么要隔离? 比如现在我们想测试, 但是不想被开发的一些实例影响就可以使用namespace将测试与开发环境隔离开来

对于下面的理解可以忽略组的概念

1. 创建namespace

默认情况下,所有service、data、group都在同一个namespace,名为public

在这里插入图片描述

我们可以点击页面新增按钮,添加一个namespace:

然后,填写表单:这里的命令空间的名称 默认是使用UUID生成

就能在页面看到一个新的namespace:

2. 给微服务配置namespace

修改order-service的application.yml文件:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID

重启order-service后,访问控制台,可以看到下面的结果:

此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错:

此时就实现了不同服务环境的隔离,这也是Nacos提供的Namespace的用处之一

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

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

相关文章

BERT+TextCNN实现医疗意图识别项目

BERTTextCNN实现医疗意图识别项目 一、说明 本项目采用医疗意图识别数据集CMID传送门 数据集示例&#xff1a; {"originalText": "间质性肺炎的症状?", "entities": [{"label_type": "疾病和诊断", "start_pos&quo…

Qt-数据库开发-用户登录、后台管理用户

Qt-数据库开发-用户登录、后台管理用户 [1] Qt-数据库开发-用户登录、后台管理用户1、概述2、实现效果 [2] Qt使用SqlLite实现权限管理初始化数据库创建数据表插入数据可使用结构体对数据信息进行封装数据库查询函数为数据库更新数据函数为删除数据函数为 [3] 测试效果 [1] Qt-…

最详细的静态路由的原理和配置

第四章&#xff1a;静态路由 转发数据包是路由器的最主要功能。路由器转发数据包时需要查找路由表&#xff0c;管理员可以通过手工的方法在路由器中直接配置路由表&#xff0c;这就是静态路由。虽然静态路由不适合于在大的网络中使用&#xff0c;但是由于静态路由简单、路由器…

亚马逊云科技让数十亿的数据清洗、转移和查询只需要10分钟

随着数字经济对经济社会的发展贡献愈渐增多&#xff0c;数字金融作为数字经济的有机组成部分和重要支撑&#xff0c;也正成为金融领域竞争与合作的制高点。但在数据要素推动数字金融高速发展的同时&#xff0c;逐渐复杂的互联网环境与日益增强的金融监管力度&#xff0c;对数字…

FL Studio21最新中文版本下载及详细安装教程

FL Studio21最新中文版本是一款专业的音乐制作软件&#xff0c;软件支持录音、音频剪辑、混音、编曲等众多实用功能&#xff0c;可以让你的电脑化身为专业的录音室&#xff0c;进行音乐的录制和剪辑工作&#xff0c;帮助用户轻松创作出各种优秀的音乐作品。 FL Studio21中文版…

亚马逊云科技携手普华永道,推出健康及生命科学行业出海合规指南

自2022年起&#xff0c;国内医疗健康行业的投融资热度略有降低。但医疗行业投资结构正面临转型&#xff0c;投资逐步呈现全球化布局的趋势&#xff0c;在跨境合作领域仍持续释放活力。同时&#xff0c;随着药品集采、医保谈判持续推进&#xff0c;越来越多的中国健康及生命科学…

基于RK3588+TensorFlow的人工智能跨模态行人重识别方法及应用

摘要&#xff1a; 跨模态行人重识别技术&#xff08;cm-ReID&#xff09;旨在可见光、红外等不同模态图像中识别出同一个人&#xff0c;其在人 机协同、万物互联、跨界融合、万物智能的智能系统与装备中有重要应用。提出一种数据增强的跨模态行人 重识别方法&#xff0c;在波长…

【Vue 基础】尚品汇项目-10-Search模块中商品分类与过渡动画

一、商品导航的显示与隐藏 打开“src/componetnts/TypeNav/index.vue”&#xff0c;让商品导航默认为显示 在TypeNav组件挂载完毕时&#xff0c;判断当前的路由是否是“/home”&#xff0c;如果不是“/home”&#xff0c;就将分类导航隐藏 当鼠标移入时 移入时让商品导航显示 …

如何在Windows上轻松安全的将数据从HDD迁移到SSD?

当你打算升级硬盘时&#xff0c;如何将数据从HDD迁移到SSD&#xff1f;你可以使用一款免费的软件将所有数据从一个硬盘克隆到另一个硬盘。 为什么要将数据从HDD迁移到SSD&#xff1f; HDD&#xff08;机械硬盘&#xff09;和SSD&#xff08;固态硬盘&#xff09;是目前常用…

java 学习日记

今天先搞题目 给你一个points 数组&#xff0c;表示 2D 平面上的一些点&#xff0c;其中 points[i] [xi, yi] 。 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 &#xff1a;|xi - xj| |yi - yj| &#xff0c;其中 |val| 表示 val 的绝对值。 请你返回将所…

DS1302芯片介绍

低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时&#xff0c;且具有闰年补偿等多种功能。 DS1302的性能特性&#xff1a; 实时时钟&#xff0c;可对秒、分、时、日、周、月以及带闰年补偿的年进行计数&#xff1b; 用于高速数据暂存的318位RAM&#xff1b; 最少引脚…

Redis --- 持久化、主从

一、Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化 AOF持久化 1.1、RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故…

第 5 章 HBase 优化

5.1 RowKey 设计 一条数据的唯一标识就是 rowkey&#xff0c;那么这条数据存储于哪个分区&#xff0c;取决于 rowkey 处于 哪个一个预分区的区间内&#xff0c;设计 rowkey的主要目的 &#xff0c;就是让数据均匀的分布于所有的 region 中&#xff0c;在一定程度上防止数据倾斜…

年前无情被裁,我面试大厂的这3个月....

春招接近尾声&#xff0c;即将远去的“金三银四”今年也变成了“铜三铁四”。 大厂不断缩招&#xff0c;不容忽视的疫情影响&#xff0c;加上不断攀升的毕业生人数&#xff0c;各种需要应对的现实问题让整个求职季难上加难。 在这个异常残酷的求职季&#xff0c;很多人的困惑…

阿里系App抓包详细分析

InnerMtopInitTask OpenMtopInitTask ProductMtopInitTask 三个实现分别对应的instanceId为&#xff1a;OPEN、INNER、PRODUCT&#xff0c;咱们主要看InnerMtopInitTask这个实现&#xff0c;分析里面重要的初始化步骤&#xff0c;最后再使用Charles完成抓包。 IMtopInitTas…

发帖引蜘蛛:让你的网站在搜索引擎中的曝光率翻倍!

在当今的数字时代&#xff0c;SEO已成为提高网站曝光率和流量的重要手段。发帖引蜘蛛是一种有效的SEO技术&#xff0c;它可以让您的网站在搜索引擎中的曝光率翻倍&#xff0c;从而为您的业务带来更多的流量和潜在客户。 发帖引蜘蛛是一种简单易学的技术&#xff0c;它需要您在…

SPSS如何进行信度分析之案例实训?

文章目录 0.引言1.信度分析2.多维刻度分析 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对信度分析进行阐述。 1.信度分析 &#…

【ROS】如何让ROS中节点实现数据交换Ⅰ--ROS话题通信

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 目录 0.ROS文件系统及常用指令1.话题通信概念2.利用标准消息类型实现话题通信实现(python)2.1发布方实现2.2订阅方实现 3.利用自定义消息类…

[Dubbo] 重要接口与类

文章目录 1.dubbo的整体调用链路2.dubbo的源码整体设计3.重要接口和类 1.dubbo的整体调用链路 消费者通过Interface进行方法调用&#xff0c;统一交由消费者的Proxy处理&#xff08;Proxy通过ProxyFactory来进行代理对象的创建&#xff09; Proxy调用Filter模块&#xff0c;做…

搞懂 API ,API 分类全知道

API&#xff0c;即应用程序编程接口&#xff0c;是为了方便应用程序之间的数据和功能交互而设计的一些标准方法。API 的分类可以从多个维度进行&#xff0c;我会对 API 的分类维度进行简单的介绍。 根据使用方式的不同 通常情况下&#xff0c;API 可以分为两种使用方式&#…