Nacos使用指南

Nacos使用指南

1.认识Nacos

Nacos是SpringCloudAlibaba的一个组件,遵循SpringCloud规范

2.Nacos的优势

1.支持服务端主动检测服务提供者状态。临时实例采用心跳检测,非临时实例采用主动检测

2.Nacos支持服务列表变更消息推送,消息更加及时

3.拥有服务分级存储、权重配置、环境隔离等友好配置,优化了服务提供和获取的各种方式

3.Nacos使用快速入门

3.1 安装Nacos

3.1.1 Windows安装

3.1.1.1 下载安装包

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:

GitHub主页:https://github.com/alibaba/nacos

GitHub的Release下载页:https://github.com/alibaba/nacos/releases

windows版本使用nacos-server-xxx.zip包即可。

3.1.1.2 解压

将这个包解压到任意非中文目录下,如图:
在这里插入图片描述

目录说明:

  • bin:启动脚本
  • conf:配置文件
3.1.1.3 端口配置

Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。

如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改配置文件中的端口:

在这里插入图片描述

修改其中的内容:

在这里插入图片描述

3.1.1.1.4 启动

启动非常简单,进入bin目录,结构如下:

在这里插入图片描述

然后执行命令即可:

  • windows命令:

    startup.cmd -m standalone
    

执行后的效果如图:
在这里插入图片描述

3.1.1.5 访问

在浏览器输入地址:http://127.0.0.1:8848/nacos即可:默认的账号和密码都是nacos:

在这里插入图片描述

3.1.2 Linux安装

Linux或者Mac安装方式与Windows类似。

3.1.2.1 安装JDK

Nacos依赖于JDK运行,所以Linux上也需要安装JDK才行。

下载jdk安装包:

在这里插入图片描述

然后解压缩:

tar -xvf jdk-8u144-linux-x64.tar.gz

然后重命名为java

配置环境变量:

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

设置环境变量:

source /etc/profile
3.1.2.2 下载安装包

Linux版本使用nacos-server-xxx.tar.gz包即可。nacos-server-1.4.1.tar.gz

3.1.2.3 解压

命令解压缩安装包:

tar -xvf nacos-server-1.4.1.tar.gz

然后删除安装包:

rm -rf nacos-server-1.4.1.tar.gz
3.1.2.4 端口配置

与windows中类似

3.1.2.5 启动

在nacos/bin目录中,输入命令启动Nacos:

sh startup.sh -m standalone

3.2 Nacos注册与发现

3.2.1 服务注册到Nacos

3.2.1.1 引入依赖

在需要注册到Nacos的服务的pom.xml文件中引入Nacos的客户端依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2.1.2 修改配置文件

在需要注册到Nacos的服务的配置文件中添加Nacos地址,默认端口是8848

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
3.2.1.3 启动服务

找到需要注册到Nacos的服务的启动类,进行启动,启动成功后,登录到Nacos控制台,可以看到出现新的服务
在这里插入图片描述

启动后查看nacos控制台

在这里插入图片描述

3.2.2 服务分级模型

Nacos采用服务、集群、实例的分级模型,一个服务下可以有多个集群,一个集群下可以有多个实例。例如:一个orderService服务有三个不同实例:实例1、实例2、实例2,三个不同实例分布在不同的机房,一个机房中的实例就称为一个集群。微服务互相访问时,应该优先同一集群实例进行访问,当同一集群的实例不可访问时,才去访问其它集群的实例

3.2.2.1 给服务配置集群

修改服务的application.yml,添加 cluster-name

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

在这里插入图片描述

查看nacos控制台服务详情,可以看到出现集群信息

在这里插入图片描述

3.2.2.2 同集群优先访问策略设定

默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡,Nacos提供了一个NacosRule的实现,可以优先从同集群中挑选实例

  1. 给服务配置集群信息

    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
          discovery:
            cluster-name: BJ # 集群名称
    
  2. 在服务的application.yml修改负载均衡的规则

    例如给:orderService进行配置

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

3.2.3 权重配置

实际使用场景中,不同的机器设备的性能也不同,最理想的场景是性能好的机器多承担一些请求,性能差的机器少承担一些请求,但是默认情况NacosRule是在集群内随机挑选,不会考虑机器性能情况。因此Nacos提供了控制台修改权重配置,权重越大,访问频率越高

在Nacos控制台,找到服务实例列表,点击编辑即可修改权重
在这里插入图片描述

注意:如果权重修改为0,则该实例永远不会被访问,可以用于服务升级和维护

3.2.4 环境隔离

Nacos提供了namespace来实现环境隔离功能,nacos中可以有多个namespace,每个namespace下有多个group和service,不同的namespace的服务之间是不可见的。Nacos中默认所有group和service都在一个namespace下,名称为public

3.2.4.1 namespace创建
  1. 在Nacos控制台点击页面新增按钮,添加一个namespace:

    在这里插入图片描述

  2. 填写表单,填写空间名和描述,点击确定,生成新的命名空间

    在这里插入图片描述
    在这里插入图片描述

3.2.4.2 配置文件配置namespace
spring:
  application:
    name: userservice
  cloud:
    nacos:
      server-addr: 192.168.1.109:8848
      discovery:
        cluster-name: BJ
        namespace: 348c7a78-0b69-43ff-9987-9fc4cafec67c #命名空间ID,创建命名空间时自动生成,复制即可

在这里插入图片描述

在这里插入图片描述

3.3 Nacos配置管理

Nacos除了用做注册中心以外,它的另一大功能是配置管理,当微服务的数理越来越多时,微服务的配置文件难以进行管理,Nacos提供了配置管理,当配置文件变动时,及时通知对应的微服务,实现热更新

3.3.1 配置管理

3.3.1.1 Nacos添加配置文件

在Nacos控制台左侧找到“配置管理”下的“配置列表”选项,点击右侧“+“,填写配置表单

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.1.2 拉取配置文件

微服务要拉取Nacos里的配置,而且需要和本地配置文件application.yml中内容合并,才能完成项目启动

但是会有个问题,如果不先读取本地的application.yml文件,怎么会知道Nacos的地址?为了解决此问题,Spring引入了一种新的配置文件bootstrap.yaml,它会在application.yml文件被读取之前进行读取
在这里插入图片描述

3.3.1.2.1 引入nacos-config依赖

在微服务中引入nacos-config依赖和nacos-discovery依赖

 <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
 <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
3.3.1.2.2 添加bootstrap.yaml文件

在userservice微服务中新建bootstrap.yaml文件,并添加Nacos相关配置内容

在这里插入图片描述

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: pro # 环境名称
  cloud:
    nacos:
      server-addr: 123.57.241.172:8848 #Nacos地址
      config:
        file-extension: yaml # 文件后缀名

会根据server-addr的值来获取Nacos地址,然后通过服务名称-环境名称-文件后缀名来获取配置文件,也就是上述配置文件中的:userservice-pro.yaml

3.3.1.2.3 读取nacos的配置文件

可以在Nacos中添加配置文件,并使用java代码进行读取配置

:一般项目的核心配置或者需要热更新的配置可以放到Nacos管理的配置文件中,一般变动不太大或者属于微服务特有的配置还是放在微服务本地的配置文件中

3.3.2 配置热更新

在Nacos进行配置文件修改后,最理想的状态就是微服务不需要重启就能立即生效,也就是平常所说的配置热更新。Java中实现配置热更新,有两种方式

3.3.2.1 添加注解@RefreshScope
3.3.2.1.1 在nacos中新建配置

在这里插入图片描述

3.3.2.1.2 在@Value注入变量的类上添加注解@RefreshScope

在这里插入图片描述
在这里插入图片描述

3.3.2.2 使用@ConfigurationProperties注解

使用@ConfigurationProperties代替@Value注解

3.3.2.2.1 定义一个配置类,在类上加注解@ConfigurationProperties

在这里插入图片描述

3.3.2.2.2 注入配置类的bean到使用的地方,获取所要配置信息

1110105630882.png&pos_id=img-MRTooIbr-1699586993842)

3.3.3 配置共享

微服务启动时会去Nacos中读取多个配置文件,一般有两种格式:

  • 服务名称-环境名称-文件后缀名,例如:userservice-pro.yaml
  • 服务名称-文件后缀名,例如:userservice.yaml

服务名称-文件后缀名不包含环境,因此可以被多个环境共享。当Nacos和本地出现相同属性配置时,有优先级之分:服务名称-环境名称-文件后缀名>服务名称-文件后缀名>本地配置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CCLink转Modbus TCP网关_CCLINK参数配置

CCLink转Modbus TCP网关&#xff08;XD-ETHCL20&#xff09;&#xff0c;具有CCLINK主从站功能。主要用途是将各种MODBUS-TCP设备接入到CCLINK总线中。它可以作为从站连接到CCLINK总线上&#xff0c;也可以作为主站或从站连接到MODBUS-MTP总线上。 1、 配置网关的CCLINK参数&am…

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…

阿里巴巴将开源720亿参数大模型;开源语言大模型演进史

&#x1f989; AI新闻 &#x1f680; 阿里巴巴将开源720亿参数大模型 摘要&#xff1a;在2023世界互联网大会乌镇峰会上&#xff0c;阿里巴巴集团CEO吴泳铭透露&#xff0c;阿里巴巴即将开源720亿参数大模型&#xff0c;这将是国内参数规模最大的开源大模型。目前&#xff0c…

华为eNSP实验-QinQ基本实验

1.拓扑图如下 PC1的设置如下&#xff1a; 在未配置VLAN之前&#xff0c;PC1可以ping通PC3&#xff0c;PC2可以ping通PC4&#xff08;因为同一网段&#xff09; 2.SW1和SW4配置VLAN <Huawei>system-view [Huawei]undo info-center enable //关闭提示信息 [Huawei]sysn…

基于springboot实现协同过滤算法商品推荐系统项目【项目源码】计算机毕业设计

基于springboot实现协同过滤算法商品推荐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

Pydantic:数据类型确认和解析神器

大家好&#xff0c;数据验证和解析是软件开发中的重要任务&#xff0c;特别是在处理用户输入或外部数据源时尤为重要&#xff0c;Python凭借其简洁性和多功能性&#xff0c;在这些任务中提供了各种库的帮助。在本文中将探讨Pydantic&#xff0c;介绍其特点&#xff0c;并提供一…

基于VPLC711的曲面外观检测XYR运动控制解决方案

市场应用背景 随着消费升级&#xff0c;产品形态正在朝着多样性和精细化方向迅速发展。这导致了对于复杂曲面轨迹加工的需求&#xff0c;包括外观检测、打磨抛光和点胶工艺控制&#xff0c;要求更高的精密度。企业必须主动满足市场需求&#xff0c;不断改进工艺&#xff0c;以…

「算法小记」-2:矩阵链相乘的方案数【迭代/递归/动态规划/区域化DP/记忆化搜索】(C++ )

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

RT-Thread系列09——ETH网口设备

文章目录 1. ETH测试第一步&#xff1a;cubemx配置。第二步&#xff1a;board.h配置。第三步&#xff1a;rtthread settings配置第四步&#xff1a;以太网复位引脚设置第五步&#xff1a;修改rtthread源码第六步&#xff1a;修改 cubemx 生成的 main 函数第七步&#xff1a;编译…

uniapp和vue3+ts开发小程序,使用vscode提示声明变量冲突解决办法

在uniapp中&#xff0c;我们可能经常会遇到需要在不用的环境中使用不同变量的场景&#xff0c;例如在VUE3中的小程序环境使用下面的方式导入echarts&#xff1a; const echarts require(../../static/echarts.min); 如果不是小程序环境则使用下面的方式导入echarts&#xff…

实战leetcode(二)

Practice makes perfect&#xff01; 实战一&#xff1a; 这里我们运用快慢指针的思想&#xff0c;我们的slow和fast都指向第一个节点&#xff0c;我们的快指针一次走两步&#xff0c;慢指针一次走一步&#xff0c;当我们的fast指针走到尾的时候&#xff0c;我们的慢指针正好…

vscode调试react 最初的源码

如果直接在react项目中打点调试, 调试的是 react-dom.development.js, 而源码里这些逻辑是分散在不同的包里的,如何才能够调试 React 最初的源码呢&#xff1f; JS 代码经过编译&#xff0c;会产生目标代码&#xff0c;但同时也会产生 sourcemap。sourcemap 的作用就是映射目…

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔&#xff0c;为什么一定要学一门高级语言编程&#xff0c;以后好不好就业&#xff0c;待遇高不高&#xff0c;都是跟这项技术没关系&#xff0c;是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业&#xff0c;也可以选择与高级语言相关…

[Mac软件]Adobe Media Encoder 2024 V24.0.2免激活版

软件说明 使用Media Encoder&#xff0c;您将能够处理和管理多媒体。插入、转码、创建代理版本&#xff0c;并几乎以任何可用的格式输出。在应用程序中以单一方式使用多媒体&#xff0c;包括Premiere Pro、After Effects和Audition。 紧密整合 与Adobe Premiere Pro、After …

SSL证书申请安全审核失败?

随着HTTPS普及&#xff0c;申请安装使用SSL证书成为了我们的必备项。但这个SSL证书申请过程中&#xff0c;遇到问题也是不少。今天我们来浅了解一下SSL证书为什么会出现安全审核失败&#xff1f; SSL证书申请会出现安全审核失败的情况可能是以下原因&#xff1a; 域名验证不通…

农业大棚智能化改造升级与远程视频监管方案,助力智慧农业建设发展

一、需求分析 随着现代化技术的发展&#xff0c;农业大棚的智慧化也成为当前备受关注的智慧农业发展手段。利用先进的信息化手段来对农业大棚进行管理&#xff0c;采集和掌握作物的生长状况、作业监督、生态环境等信息数据&#xff0c;实现精准操作、精细管理&#xff0c;远程…

C++ | 继承和多态

目录 继承 继承的概念及用法 继承的作用域 向上转型和向下转型 继承过程中的默认生成函数 菱形继承及其解决方案 - 虚继承 虚继承的原理 - 虚基类表 继承和组合 多态 虚函数 多态的定义及使用 纯虚函数与抽象类 多态的原理 小点补充 虚表的位置 父类指针new一个…

LeetCode(3)删除有序数组中的重复项【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 26. 删除有序数组中的重复项 1.题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你** 原地** 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保…

JAVA基础5:分支语句

1.流程控制 1&#xff09;流程控制语句分类 顺序结构分支结构&#xff08;if,switch)循环结构&#xff08;for,while,do...while) 2.顺序结构 顺序结构是程序中最简单最基本的流程控制&#xff0c;没有特定的语法结构&#xff0c;按照代码的先后顺序&#xff0c;依次执行&a…

进程控制2——进程等待

在上一小节中我们介绍了进程的创建&#xff08;fork&#xff09;与退出&#xff08;main函数的return与exit函数&#xff09; 并且要有一个意识&#xff0c;进程退出的时候只有三种情况&#xff1a; 1.进程退出&#xff0c;结果正确 2.进程退出&#xff0c;结果不正确 3.运行异…