Nacos详细使用操作文档(图文详细)

news2024/11/14 14:59:57

文章目录

  • Nacos详细使用操作文档(图文详细)
    • 1、安装
    • 2、Nacos作为注册中心
      • 2.1、Nacos服务注册【ICRMS】
      • 2.2、Nacos 服务调用
        • 2.2.1、Feign 远程调用【Personnel】
        • 2.2.2)、RestTemplate+Ribbon 远程调用【Personnel】
    • 3、Nacos作为配置中心
    • 4、Nacos 命令空间
    • 5、Nacos配置文件参数详解

Nacos详细使用操作文档(图文详细)

1、安装

  • 官方链接: https://nacos.io/zh-cn/docs/what-is-nacos.html
  • 参考地址(单机版): https://blog.csdn.net/weixin_44187730/article/details/104263230
  • 参考地址(集群版): https://blog.csdn.net/weixin_44187730/article/details/104552937

2、Nacos作为注册中心

2.1、Nacos服务注册【ICRMS】

  • 1、导入服务发现功能的jar包
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 2、开启服务注册发现功能
package com.moonpac.icrms.config;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: ICRMSCloudConfig
 * @Author: hf
 * @Date: 2022/9/4 16:07
 * @Description: ICRMS服务 -  关于Nacos配置-服务注册-服务发现-Feign远程调用
 */
@Configuration
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.moonpac.icrms.feign")
public class ICRMSCloudConfig {

}

  • 3、编写bootstrap.yaml配置、指定Nacos的服务地址
spring:
  application:
    #服务名称
    name: aiops-icrms
  cloud:
    nacos:
      discovery:
        # 集群方式多个地址以,分割
        server-addr: 10.173.28.204:8848

2.2、Nacos 服务调用

2.2.1、Feign 远程调用【Personnel】

  • ①、导入feign进行远程调用功能
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • ②、消费端调用写法,声明式调用【声明调用接口】
package com.moonpac.personnel.feign;

import com.moonpac.personnel.feign.fallback.ICRMSTestFeignServiceFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: ICRMSTestController
 * @Author: hf
 * @Date: 2022/9/4 16:27
 * @Description: ICRMS 测试Feign调用
 */
@FeignClient(
        //指定服务名,nacos注册的服务名
        name = "aiops-icrms",
        //指定容错类-当远程调用失败时进入容错类中
        fallbackFactory = ICRMSTestFeignServiceFallbackFactory.class
)
//指定公共请求前缀
@RequestMapping("/icrms")
public interface ICRMSTestFeignService {

    @GetMapping("/list")
    List<String> list();
}
  • ③、Feign容错类
package com.moonpac.personnel.feign.fallback;

import com.moonpac.personnel.feign.ICRMSTestFeignService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: ICRMSTestServiceFallbackFactory
 * @Author: hf
 * @Date: 2022/9/4 16:29
 * @Description: Feign 远程调用容错
 */
@Service
@Slf4j
public class ICRMSTestFeignServiceFallbackFactory implements FallbackFactory<ICRMSTestFeignService> {


    @Override
    public ICRMSTestFeignService create(Throwable throwable) {

        //捕获到异常
        throwable.printStackTrace();

        return new ICRMSTestFeignService() {
            //捕获到异常
            @Override
            public List<String> list() {

                return Arrays.asList("Feign远程调用报错了...","错了");
            }
        };
    }
}
  • ④、配置类
package com.moonpac.personnel.config;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: PersonnelCloudConfig
 * @Author: hf
 * @Date: 2022/9/4 16:23
 * @Description: Personnel服务关于Nacos配置-服务注册-服务发现-Feign远程调用
 */
@Configuration
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.moonpac.personnel.feign")
public class PersonnelCloudConfig {

}
  • ⑤、controller写法
package com.moonpac.personnel.controller;

import com.moonpac.personnel.feign.ICRMSTestFeignService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: PersonnelFeignController
 * @Author: hf
 * @Date: 2022/9/4 16:43
 * @Description: Feign 远程调用服务
 */
@Slf4j
@RestController
@RequestMapping("/personnel")
@RequiredArgsConstructor
public class PersonnelFeignController {

    private final ICRMSTestFeignService icrmsTestFeignService;

    @GetMapping("/list")
    public Object list() {
        //远程调用开始,即将通过Feign 远程调用接口
        log.info("远程调用开始,即将通过Feign 远程调用其它服务接口...");
        return icrmsTestFeignService.list();
    }

}
  • ⑥、调用效果

在这里插入图片描述

2.2.2)、RestTemplate+Ribbon 远程调用【Personnel】

  • ① 配置类
package com.moonpac.personnel.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: PersonnelRestTemplateConfig
 * @Author: hf
 * @Date: 2022/9/4 16:59
 * @Description: Personnel 用户中心服务 RestTemplate配置
 */
@Configuration
public class PersonnelRestTemplateConfig {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {

        return new RestTemplate();
    }
}
  • ② controller写法
package com.moonpac.personnel.controller;

import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: PersonnelTemplateController
 * @Author: hf
 * @Date: 2022/9/4 16:43
 * @Description: RestTemplate 远程调用服务
 */
@Slf4j
@RestController
@RequestMapping("/personnel/template")
@RequiredArgsConstructor
public class PersonnelTemplateController {

    private static final String ICRMS_SERVER_ADDR = "http://aiops-icrms";

    private final RestTemplate restTemplate;

    @ApiOperation("RestTemplate 测试调用")
    @GetMapping("/list")
    public Object list() {
        log.info("RestTemplate 测试远程调用.....");
        return restTemplate.getForEntity(ICRMS_SERVER_ADDR + "/icrms/list", Object.class);
    }

}
  • ③、调用效果

在这里插入图片描述

3、Nacos作为配置中心

配置中心:
集中管理配置、配置动态更新、回滚配置…

  • 1、导入服务发现功能的jar包
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  • 2、创建一个bootstrap.yaml或bootstrap.properties必须叫此名称
    • SpringBoot默认规则,bootstrap.yaml里面的配置优先于application.yaml配置。
#Nacos 配置中心配置
spring:
  application:
    name: aiops-personnel
  cloud:
    nacos:
      config:
        # nacos 地址
        server-addr: 10.173.28.204:8848
  • 3、默认配置规则
    • dataId: 配置文件名 .properties或.yaml
    • p r e f i x − {prefix}- prefix{spring.profile.active}.${file-extension}
    • 前缀-当前环境.文件扩展名
      • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
      • spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
      • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

aiops-icrms.properties aiops-icrms.yaml
总结: 只需要给Nacos中创建一个dataId名称叫做 当前项目名.properties 当前项目名.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDBXHlaq-1676619824775)(./images/nacos/604EF494-59ED-4b33-9C22-DC40E94397D0.png)]

  • 4、开启域刷新动态获取配置,实例代码
package com.moonpac.personnel.controller;

import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

/**
 * @Copyright (C), 2016-2022 MP
 * @ClassName: PersonnelParamsConfig
 * @Author: hf
 * @Date: 2022/9/4 17:16
 * @Description:
 */
@Slf4j
@RestController
@RequestMapping("/personnel/params")
@RequiredArgsConstructor
//开启域动态刷新主类配置
@RefreshScope
public class PersonnelParamsConfigController {

    @Value("${personnel.version:11}")
    private String personnelVersion;

    @Value("${personnel.content:11}")
    private String personnelContent;

    @ApiOperation("Nacos配置中心测试")
    @GetMapping("/getParams")
    public Object getP() {
        HashMap<Object, Object> hashMap = new HashMap<>(3);
        hashMap.put("content", personnelContent);
        hashMap.put("version", personnelVersion);
        return hashMap;
    }

}

  • 5、所有的配置信息都可以写到Nacos中。

4、Nacos 命令空间

  • 1、Nacos命名空间概念
    • 命名空间:主要用于区分不同环境。
    • 默认情况,本项目在public下找 项目名.properties文件 项目名.yaml
    • Nacos组: 可以区分不同业务,不同业务不同组。

最佳实践:
使用namespace来区分不同的服务【每个服务都有自己的名称空间】。
使用Group来区分不同环境【dev,prod,test】

命令空间配置

  • 2、配置命名空间
#Nacos 配置中心配置
spring:
  application:
    name: aiops-personnel
  cloud:
    nacos:
      config:
        # nacos 地址
        server-addr: 10.173.28.204:8848
        # 设置默认的文件类型
        file-extension: yaml
        # 设置命名空间--此处填写的是ID  重要!!!
        # 设置命名空间--此处填写的是ID  重要!!!
        # 设置命名空间--此处填写的是ID  重要!!!
        namespace: 9dbdfc95-0174-49bd-9c2a-bc276ca41ecc
  • 3、Nacos添加管理配置文件

命令空间配置

  • 4、加载使用配置
#Nacos 配置中心配置
spring:
  application:
    name: aiops-personnel
  cloud:
    nacos:
      config:
        # nacos 地址
        server-addr: 10.173.28.204:8848
        # 设置默认的文件类型
        file-extension: yaml
        # 设置命名空间--此处填写的是ID  重要!!!
        namespace: 9dbdfc95-0174-49bd-9c2a-bc276ca41ecc
        extension-configs:
        # 批量加载配置文件
          - {dataId: "application-monitor.yaml",group: "DEV",refresh: true}
          - {dataId: "application-logback.yaml",group: "DEV",refresh: true}
          - {dataId: "application-sentinel.yaml",group: "DEV",refresh: true}
          - {dataId: "application-zipkin.yaml",group: "DEV",refresh: true}

5、Nacos配置文件参数详解

  • 参考链接: https://blog.csdn.net/qq_40309050/article/details/124325382

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

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

相关文章

Java 基础面试题——异常

目录1.Exception 和 Error 有什么区别&#xff1f;2.Throwable 类中常用方法有哪些&#xff1f;3.Checked Exception 和 Unchecked Exception 有什么区别&#xff1f;4.throw 和 throws 的区别是什么&#xff1f;5.try-catch-finally 如何使用&#xff1f;6.finally 块中的代码…

4.3 PBR

1. 实验目的 熟悉PBR的应用场景掌握PBR的配置方法2. 实验拓扑 PBR实验拓扑如图4-8所示: 图4-8:PBR 3. 实验步骤 (1) IP地址的配置 R1的配置 <Huawei>system-view

缓存Redis常见面试题

一、Redis概念Redis是⼀个⾼性能的key-value数据库&#xff0c;它是完全开源免费的&#xff0c;⽽且redis是⼀个NOSQL类型数据库&#xff0c;是为了解决⾼并发、⾼扩展&#xff0c;⼤数据存储等⼀系列的问题⽽产⽣的数据库解决⽅案&#xff0c;是⼀个⾮关系型的数据库。二、Red…

【Git】git常用命令总结

简言 git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 里面有很多常用的命令语法&#xff0c;在此做一个常用命令总结记录&#xff0c;以备不时之需。 命令总结 由于git是基于linux开发的工具&#xff0c;所以有个特点&a…

网安新基建!国内首个“网络安全卓越中心”落地南京江宁

​​近日&#xff0c;国内首个网络安全卓越中心&#xff08;“CyberPeace Center of Excellence”简称“CPCOE”&#xff09;落地南京市江宁区&#xff0c;项目金额数千万元&#xff0c;由赛宁网安建设运营。CPCOE旨在提高全民数字素养、培育网安人才、提升关基防御能力、促进安…

阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行

1、开发环境 操作系统&#xff1a;Ubuntu18 开发工具&#xff1a;IDEAPyCharm插件 Python版本&#xff1a;3.6 2、用到的模块 requests&#xff1a;用于发送请求 xlrd&#xff1a;操作Excel&#xff0c;组织测试用例 smtplib&#xff0c;email&#xff1a;发送测试报告 l…

2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(一)

目录 前言 一、题目理解 背景 解析&#xff1a; 要求 二、建模 1.相关性分析 2.相关特征权重 只希望各位以后遇到建模比赛可以艾特认识一下我&#xff0c;我可以提供免费的思路和部分源码&#xff0c;以后的数模比赛只要我还有时间肯定会第一时间写出免费开源思路&…

计量地理学(Quantitative Geography)的学习笔记

目录 1.什么是主成分分析 2.什么是Thile指数&#xff08;锡尔系数&#xff09;&#xff0c;是用来干什么的 3.罗伦次&#xff08;洛伦兹&#xff09;曲线的含义&#xff0c;表征什么样的现象 4.什么是偏相关分析&#xff0c;偏相关分析系数的含义&#xff0c;主要作用 5.多…

Homekit智能家居-智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

2023版最新最强大数据面试宝典

此套面试题来自于各大厂的真实面试题及常问的知识点&#xff0c;如果能理解吃透这些问题&#xff0c;你的大数据能力将会大大提升&#xff0c;进入大厂指日可待&#xff01;目前已经更新到第4版&#xff0c;广受好评&#xff01;复习大数据面试题&#xff0c;看这一套就够了&am…

m0n0防火墙的安装(11)

实验目的 1、了解m0n0的安装过程 2、培养学生动手能力预备知识 1、VirtualBox的使用&#xff0c;及基础英文阅读能力实验环境 本实验的实验环境为&#xff0c;在实验机上安装VirtualBox虚拟机软件&#xff0c;并用VirtualBox创建了一台虚拟机来安装m0n0&#xff0c;并设置了相关…

47.在ROS中实现global planner(3)

接着之前45.在ROS中实现global planner&#xff08;1&#xff09;和46.在ROS中实现global planner&#xff08;2&#xff09;的铺垫&#xff0c;在ROS中实现AStar Global Planner 1. planner package 照着之前的模板&#xff0c;修改下名称 git clone -b https://gitee.com/…

OpenCV 图像金字塔算子

本文是OpenCV图像视觉入门之路的第14篇文章&#xff0c;本文详细的介绍了图像金字塔算子的各种操作&#xff0c;例如&#xff1a;高斯金字塔算子 、拉普拉斯金字塔算子等操作。 高斯金字塔中的较高级别&#xff08;低分辨率&#xff09;是通过先用高斯核对图像进行卷积再删除偶…

大疆车载更新产品矩阵,覆盖从主动安全到城区领航的全场景

新年智驾供应商的攻势&#xff0c;也像车企一样猛烈。大疆车载近期趁着官网更新&#xff0c;对外公布了梳理后的智驾方案序列&#xff0c;覆盖8大功能产品&#xff1a;主动安全、行车辅助、泊车辅助、记忆泊车、记忆行车、跨层记忆泊车、领航高速、领航城区。需要关注的是&…

金融帝国实验室(Capitalism Lab)《官方中文社群抽奖规则》(修订)

★修 订 说 明★ 为进一步完善社群决策制定程序&#xff0c;提高抽奖活动公平化、丰富化水平&#xff0c;切实提升抽奖活动质量&#xff0c;现对《官方中文社群抽奖规则》进行修订&#xff08;第四次&#xff09;。 ————————————— ◎〖本次修订内容〗&#xf…

C++ 浅谈之 AVL 树和红黑树

C 浅谈之 AVL 树和红黑树 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3…

可靠、安全、稳定,开源高质量项目 | 亚马逊的开源文化

亚马逊的领导力准则是亚马逊文化的核心&#xff0c;它如同亚马逊的 DNA 融入贯穿每一个重要决策&#xff0c;深深影响着每一位亚麻人、影响着每一位亚马逊的客户、合作伙伴以及每一位亚马逊云科技的构建者。同时&#xff0c;亚马逊的领导力准则对亚马逊与开源的互动方式也产生着…

(原创)不小心禁用或者卸载Kotlin插件的解决方法

问题 之前因为kotlin版本的一些问题&#xff0c;不小心禁用了kotlin插件 等到再重启Android Studio&#xff0c;就发现进不去了 后来在网上找到方法解决了&#xff0c;但是某一天 又脑子一热&#xff0c;直接把Kotlin插件给卸载了&#xff0c;这下直接玩大发了 花了一点时间才…

Springboot 使用quartz 定时任务 增删改查

前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 &#xff0c;浏览量还不错 &#xff0c; Springboot 整合定时任务 ) 所以就准备写第二篇&#xff0c; 如果你是一名Java工程师&#xff0c;你也可以会看到如下的页面 &#xff0c;去添加定时任务 定时任务展示 :…

linux学习笔记 超详细 0基础(下)shell

shell是一个命令解释器&#xff0c;为我们提供了交互式的文本控制台界面&#xff0c;我们可以通过终端控制台来输入命令&#xff0c;由shell解释并交给linux内核执行。Shell是一个解释器&#xff0c;Unix下的Bourne Shell命令解释器的加强版Bourne Again Shell &#xff0c;bas…