Nacos使用指南

news2025/5/25 6:27:44

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和本地出现相同属性配置时,有优先级之分:服务名称-环境名称-文件后缀名>服务名称-文件后缀名>本地配置

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

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

相关文章

设计模式之建造者(Builder)

用来构建复杂对象 分离复杂对象的构建和表示 同样的构建过程可以创建不同的表示 当有一个复杂的对象&#xff0c;构建它的时候&#xff0c;比较复杂 例如&#xff0c;构建一个对象&#xff0c;要传入50个参数&#xff0c;可以先构建part1&#xff0c;再构建part2…最后调用bu…

Mysql数据库 14.SQL语言 视图

一、视图的概念 视图&#xff1a;就是由数据库中一张或多张表根据特定的条件查询出的数据狗造成的虚拟表 二、视图的作用 安全性&#xff0c;简单性 三、视图的语法 语法 create view 视图表 as select_statement; 代码实现 #创建视图 将查询结果创建称为视图&#x…

华为ipsec vpn双链路主备备份配置案例

配置就是这配置&#xff0c;已查官方也是这样配置&#xff0c;意外是完成后不通&#xff0c;待以后处理&#xff01; FW_A配置&#xff1a; dhcp enable ip-link check enable ip-link name check_b destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop …

vue2+elementui使用MessageBox 弹框$msgbox自定义VNode内容:实现radio

虽说实现下面的效果&#xff0c;用el-dialog很轻松就能搞定。但是这种简单的交互&#xff0c;我更喜欢使用MessageBox。 话不多说&#xff0c;直接上代码~ <el-button type"primary" size"mini" click"handleApply()" >处理申请</el-b…

实操创建属于自己的亚马逊云科技VPS服务:Amazon Lightsail

本文主要讲述如何独立创建自己的亚马逊云科技VPS服务&#xff0c;希望此文能帮助你对亚马逊云科技VPS服务也就是Amazon Lightsail&#xff0c;有个新的认识&#xff0c;对所使用的VPS有所帮助。 Amazon Lightsail是一款无论云计算的新手还是专家&#xff0c;都可通过其快速启动…

MySQL中UUID主键的优化

UUID&#xff08;Universally Unique IDentifier 通用唯一标识符&#xff09;&#xff0c;是一种常用的唯一标识符&#xff0c;在MySQL中&#xff0c;可以利用函数uuid()来生产UUID。因为UUID可以唯一标识记录&#xff0c;因此有些场景可能会用来作为表的主键&#xff0c;但直接…

C++——基础

初学C的时候&#xff0c;有没有想过&#xff0c;为什么C支持重载&#xff0c;而C不支持重载呢&#xff1f;&#xff1f; 其实&#xff0c;一个程序运行起来都要经过四步骤 预处理编译汇编链接 预处理阶段会经过去注释&#xff0c;宏替换&#xff0c;头文件展开&#xff0c;条…

SPSS曲线回归

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

RabbitMQ的 五种工作模型

RabbitMQ 其实一共有六种工作模式&#xff1a; 简单模式&#xff08;Simple&#xff09;、工作队列模式&#xff08;Work Queue&#xff09;、 发布订阅模式&#xff08;Publish/Subscribe&#xff09;、路由模式&#xff08;Routing&#xff09;、通配符模式&#xff08;Topi…

快速入门安装及使用git与svn的区别常用命令

一、导言 1、什么是svn&#xff1f; SVN是Subversion的简称&#xff0c;是一个集中式版本控制系统。与Git不同&#xff0c;SVN没有分布式的特性。在SVN中&#xff0c;项目的代码仓库位于服务器上&#xff0c;团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个…

C语言-for循环入门代码

#include <stdio.h>int main() {int count;for (count 0; count < 10; count){printf("1\n");}system("pause");return 0; }1 1 1 1 1 1 1 1 1 1 请按任意键继续. . .灵活的for循环 死循环 while(1) {... }#include <stdio.h> int main(…

千帆SDK开源到GitHub,开发者可免费下载使用!

目录 一、SDK的优势 二、千帆SDK&#xff1a;快速落地LLM应用 三、如何快速上手千帆SDK 1、SDK快速启动 快速安装 平台鉴权 如何获取AK/SK 以“Chat 对话”为调用示例 2. SDK进阶指引 3. 通过Langchain接入千帆SDK 为什么选择Langchain 开源社区 千帆社区 好消息&…

Java11新增特性

前言 在前面的文章中&#xff0c;我们已经介绍了 Java9的新增特性 和 Java10的新增特性 ,下面我们书接上文&#xff0c;来介绍一下Java11的新增特性 版本简介 Java 11 是 Java 平台的最新版本&#xff0c;于2018年9月25日发布。这个版本是自Java 8以来最重要的更新之一&…

n-gram语言模型——句子概率分布计算与平滑

n-gram语言模型——句子概率分布计算与平滑 前言 语言模型 等价假设 n元语法 句子概率分布计算方式 数据平滑 Lidstone平滑(1-gram) Laplace平滑(1-gram) 附上两种平滑在1-gram下代码 Lidstone平滑与Laplace平滑(2-gram) 附上两种平滑在2-gram下代码 前言 语言模型…

隧道施工工艺流程vr线上虚拟展示成为产品3D说明书

行业内都知道&#xff0c;汽车生产的大部分都需要冲压加工来完成&#xff0c;因此汽车冲压工艺是汽车制造过程中的重要环节&#xff0c;传统的展示方式往往局限于二维图纸和实地操作&#xff0c;难以充分展现工艺的细节和流程。然而&#xff0c;随着技术的进步&#xff0c;汽车…

Java类和对象(续)

书接上回我们已经学完了对象的初始化&#xff0c;今天的内容更加精彩。 1.封装 面向对象程序的三大特征&#xff1a;封装&#xff0c;继承&#xff0c;多态。 本章主要也是要研究封装&#xff0c;简单来说就是套壳屏蔽细节。 封装的概念&#xff1a; 封装&#xff1a;将数据和…

【PWN · ret2csu】[HNCTF 2022 WEEK2]ret2csu

记一道ret2csu 一、题目 二、思路 1.ret2csu用write泄露write的真实地址->泄露libc->获得system的真实地址 2.ret2csu用read写/bin/sh字符串到bss段上 3.ret2csu用write将system的真实地址写到bss段上 4.ret2csu调用system 三、exp from pwn import * from pwn impo…

[100天算法】-最短无序连续子数组(day 70)

题目描述 给定一个整数数组&#xff0c;你需要寻找一个连续的子数组&#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。你找到的子数组应是最短的&#xff0c;请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要…

this和super

文章目录 this用法普通的直接引用区分形参与实参 super用法普通的直接引用区分子类与父类同名的属性或方法 this和super 与 构造方法总结 this this引用表示当前对象对象的引用。 用法 普通的直接引用 public class Test {int a ;int b;public Test() {this.b 0;} }调用当…

时间序列预测实战(十一)用SCINet实现滚动预测功能(附代码+数据集+原理介绍)

论文地址->SCINet官方论文地址 官方代码地址-> 官方代码下载地址 个人整理的代码地址->免费分享给大家创作不易请大家给文章点点赞 一、本文介绍 这篇文章给大家带来的是关于SCINet实现时间序列滚动预测功能的讲解&#xff0c;SCINet是样本卷积交换网络的缩写(Sam…