SpringCloud-学习笔记(四)nacos基本使用

2023-11-11

什么是nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,使用java语言进行开发。Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

nacos的安装

nacos有window和linux版本的,这里使用windos版本进行安装。
GitHub的Release下载页

下载完成后解压即可使用。

默认使用端口是8848,也可以自己修改conf中的配置文件进行修改端口。
在这里插入图片描述
使用命令startup.cmd -m standalone进行启动
在这里插入图片描述
访问打印出来的地址即可,用户名密码均是nacos。
登录之后页面如下
在这里插入图片描述
无论是eureka还是nacos都实现了springcloud中约定的接口
在这里插入图片描述

nacos的使用

首先需要在父工程中引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

然后在子工程中引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置nacos的地址

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

nacos服务分级存储模型

  • 第一级是服务
  • 第二级是集群
  • 第三级是实例

我们可以配置服务所属的集群,这样我们就可以通过配置实现同一个集群里的服务间的调用就会首先调用同一个集群的服务,缩短响应的时间。

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

修改负载均衡的规则,实现同一个集群里的服务间的调用首先调用同一个集群的服务。

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 ,优先本地集群,本地集群的多个服务之间随机,本地集群找不到就会去其他集群寻找

尽管如此,但是有的时候同一个集群中的服务器也有性能的差异,因此我们想要同一个集群中的服务器中性能好的服务器实例接收请求的次数多一些,其他的服务器接收请求的次数少一些,这就需要nacos服务实例的权重了。我们可以直接在nacos的控制台配置即可。

macos命名空间namespace

namespace可以用来做环境隔离, nacos默认会有一个public的命名空间,我们也可以在控制台新建命名空间,这个时候命名空间中是没有任何服务的,如果我们想要将publlic中的服务移动到新创建的命名空间中,就需要将服务中的配置文件进行修改,服务中的application.yml文件需要添加nacos的namespace,这个namespace的值就是我们新创建的命名空间的id。然后重新启动项目即可。

不同命名空间中的服务不能进行相互间的调用。

nacos注册中心的原理

服务提供者会想nacos注册中心注册自己,服务消费者会定时从注册中心拉取服务并进行缓存。
对于服务提供者中的临时实例会向注册中心发送心跳包,nacos会采用心跳检测的方式检测,如果不存在了就会直接将这个实例从注册中心中剔除。
对于服务提供者中的非临时实例,nacos会主动检测实例是否存活,如果不存活,并不会从实例列表中剔除,而是标记为不健康,等待它恢复健康。

nacos注册中心会主动推送注册中心中服务实例的变更,不像eureka中只是定时拉去注册中心中的服务列表。

我们可以修改配置文件的方式选择注册实例是临时实例或非临时实例。方式如下

spring:
  cloud:
      nacos:
            discovery:
                   ephemeral: false # 设置为非临时实例,临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会

Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式.

Ncoa的统一配置管理

微服务通过读取注册中心的配置管理服务获取向配置的参数,并且可以实现服务的热更新。

我们可以直接在nacos的控制台实现配置文件的管理。

我们服务启动的时候会读取nacos的配置文件没然后才会读取本地的application,yaml,然后创建spring容器,加载bean。
因此我们首先需要知道nacos配置文件的地址,这个就需要在bootstrap.yaml中进行配置,因为这个配置文件的读取是比application.yaml更早。

实现步骤:

  • 首先在nacos管理界面创建一个配置
  • 在服务中引入nacos的配置管理客户端的依赖
<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  • 在微服务的resource目录下创建一个bootstrap.yml文件,引导文件,优先级高于application.yaml文件。这里的服务名称,开发环境和文件后缀就是我们心增加配置文件的时候选择的配置文件的DataID:userservice-dev.yaml,这样加上nacos的地址我们就可以找到配置文件的地址了。
spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev #开发环境,这里是dev 
  cloud:
    nacos:
      server-addr: localhost:8848 # Nacos地址
      config:
        file-extension: yaml # 文件后缀名

如果想要实现配置的热更新,只需要在Controller层上加上注解@RefreshScope即可。
如果使用了@ConfiguractionProperties注解获取配置文件的内容,就不用使用上面的注解,自动就实现了自动刷新。

使用nacos实现多个微服务的统一配置管理。微服务会从nacos读取的配置文件:

  • [服务名]-[spring.profile.active].yaml,环境配置
  • [服务名].yaml,默认配置,多环境共享

因此想要实现共享,我们只需要在共享的配置写在服务吗.yaml里面即可。

如果我们多个环境中配置了互相冲突的属性,以哪个配置文件为标准呢?

优先级:
[服务名]-[环境].yaml >[服务名].yaml > 本地配置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud-学习笔记(四)nacos基本使用 的相关文章

随机推荐

  • 【Logback】<appender>标签详解

    文章目录 一 Appender是什么 1 1 Appender定义 1 2 Appender类图说明 二 Appender概述 三 ConsoleAppender使用 四 FileAppender使用 4 1 FileAppender使用
  • 2024年王道数据结构【考研全套笔记】

    22年 23年数据结构大纲一致 24年大纲 gt 目前和23年大纲保持一致 该博客怎么食用 大部分考408的友友 只是买了书 书上配置的免费视频是滞后2年的 非常不友好 建议在某鱼上or大学慕课正规购买 还是最新的视频香 看完视频必须做笔记
  • 深入学习java源码之Byte.decode()与Byte.toUnsignedInt()

    深入学习java源码之Byte decode 与Byte toUnsignedInt 异常 异常就是有异于常态 和正常情况不一样 有错误出错 在java中 阻止当前方法或作用域的情况 称之为异常 其中Error类中包括虚拟机错误和线程死锁
  • SpringBoot本地磁盘映射

    出于安全性考虑 SpringBoot无法直接访问本地磁盘的文件 在某些应用场景下 需要访问例如本地的图片等一些内容 这时候 我们可以通过创建一个虚拟路径来指向本地磁盘文件 重写WEB配置类 添加新的静态资源路径配置 代码如下 Configu
  • 力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。

    力扣 LeetCode 给定一个非负整数数组 你最初位于数组的第一个位置 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个位置 示例 1 输入 2 3 1 1 4
  • 数据仓库主题十-(周期快照事实表)

    综述 当我们在实际工作过程中涉及到一些指标的计算比如账户余额 买卖家星级 商品库存 卖家累积交易额等计算中 则需要聚集与之相关的事务才能进行识别计 或者聚集事务无法识别 比如 温度等 对于这些状态度量 事务事实表是无效率的 而这些度量也和度
  • 前端框架React Js入门教程【转】

    现在最热门的前端框架有AngularJS React Bootstrap等 自从接触了ReactJS ReactJs的虚拟DOM Virtual DOM 和组件化的开发深深的吸引了我 下面来跟我一起领略 ReactJS的风采吧 章有点长 耐
  • Redis集群搭建

    Redis集群搭建 1 主从模式部署 1 1 环境准备 IP 主机名 角色 192 168 54 200 master master 192 168 54 201 slave1 slave1 192 168 54 202 slave2 sl
  • Hive集群部署实验

    目录 一 实验介绍 1 1 实验内容 1 2 实验知识点 1 3 实验环境 1 4 实验资源 1 5 实验步骤清单 二 实训架构 三 实验环境准备 四 实验步骤 4 1 Hive部署 4 1 1 安装Hive 4 1 3 修改hive配置文
  • url地址输入到页面的经过

    简单理解如下 1 域名解析 2 缓存检查 强缓存跟协商缓存 强缓存 协商缓存 DNS 解析 解析有两种 递归查询跟迭代查询 先走递归 看本地 3 1递归查询 没有再去服务器上面去看 3 2 迭代查询 4 三次握手 这个是建立好TCP通道了
  • stl中set的并、交、差集

    set的键是自动排序的 对应的求并集差集交集都可以用到这个有序的特性 时间复杂度都为O m n m n分别为两个容器的大小 1 set union可以用来求两个集合的并集 它是一种稳定的操作 因为元素间的相对位置不会改变 源码如下 temp
  • Unity动画系统(Animation与Animator的区别)

    老版本Unity使用的是Legacy动画系统 在Unity4 0后引入了一套全新的动画系统 即为Mecanim动画系统 Legacy动画系统使用的是Animation组件 直接对动画片段进行操作 而Mecanim动画系统使用的是Animat
  • 常用的DML语句

    DML 数据操纵语言 Data Manipulation Language DML 是用于数据库操作 对数据库其中的对象和数据运行访问工作的编程语句 通常是数据库专用编程语言之中的一个子集 例如在信息软件产业通行标准的SQL语言中 以INS
  • jenkins学习笔记第十二篇 解决邮件报告中错误接口信息

    修改jmeter results detail report 21 xs样式 只展示统计运行的案例数 和出错的接口信息
  • 【教程】 .Net环境和开发工具Visual Studio的安装

    文章目录 前言 1 NET环境的安装 2 Visual Studio工具的安装 总结 前言 NET 是一个免费的跨平台开放源代码开发人员平台 用于生成多种类型的应用程序 NET 基于许多大规模应用在生产中使用的高性能运行时构建而来 Visu
  • springboot连接mysql8.0问题解决

    原配置如下 spring datasource url jdbc mysql 47 112 103 249 3306 management useSSL true allowMultiQueries true
  • idea 案例:学生信息查询系统学生信息查询系统

    实现功能 1 多条件查询 当用户输入的学生姓名不为空时 则只根据学生姓名进行学生信息的查询 当用户输入的学生姓名为空而学生专业不为空时 则只根据学生专业进行学生信息的查询 当用户输入的学生姓名和专业都为空 则要求查询出所有学号不为空的学生信
  • 华硕电脑bios设置虚拟机_【雷电说明书】华硕电脑与华硕笔记本开VT的BIOS设置方法...

    本文主要讲的是华硕电脑与华硕笔记本开VT的BIOS设置方法 按照大体市面上常用的电脑型号分类 大致分为三个步骤 开VT的用处 或者说开VT的好处就是安卓模拟器能够得到更多的资源来运行游戏 为了游戏玩的爽 可以认为安卓模拟器是必须开VT的 这
  • 猿如意中的【Wireshark】网络包分析工具详情介绍

    一 工具名称 Wireshark win64 3 6 5 二 下载安装渠道 Wireshark win64 3 6 5 通过CSDN官方开发的 猿如意 客户端进行下载安装 对 你没有看错 就是来自CSDN官方 这次 CSDN果然没有辜负广大
  • SpringCloud-学习笔记(四)nacos基本使用

    什么是nacos Nacos n k s 是 Dynamic Naming and Configuration Service的首字母简称 一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 使用java语言进行开发 Nacos