Nacos 高级详解

一 、服务集群

1 需求

  • 服务提供者搭建集群

    在这里插入图片描述

  • 服务调用者,依次显示集群中各服务的信息

    在这里插入图片描述

    在这里插入图片描述

2 搭建

  • 1)修改服务提供方的controller,打印服务端端口号

    在这里插入图片描述

    package com.czxy.controller;
    
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    
    /**
     * @author 桐叔
     * @email liangtong@itcast.cn
     */
    @RestController
    public class EchoController {
    
        @Resource
        private HttpServletRequest request;
    
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            int serverPort = request.getServerPort();
            return "Hello Nacos Discovery " + string + ":" + serverPort;
        }
    }
    
    
  • 2)编写yml配置

    在这里插入图片描述

    #端口号
    server:
      port: 8170
    
    spring:
      application:
        name: service-provider          #服务名
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848   #nacos服务地址
    
    
    #端口号
    server:
      port: 8270
    
    spring:
      application:
        name: service-provider          #服务名
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848   #nacos服务地址
    
    
  • 3)配置idea启动项

    -Dspring.profiles.active=8170
    
    

    在这里插入图片描述

    在这里插入图片描述

3 测试

  • 启动3个服务(2个服务提供,1个服务消费)

在这里插入图片描述

  • 查看nacos控制台

    在这里插入图片描述

二、 加载配置文件顺序2

  • 3.4.5章节/第4步内容进行详解
  • 加载配置文件的顺序(第4步详解)

1 nacos 配置 DataId 介绍

  • nacos 提供了3种方式,配置dataId的加载顺序

A: 共享配置:(过时),使用 shared-configs 替代

spring.cloud.nacos.config.shared-dataids

spring.cloud.nacos.config.refreshable-dataids

B: 加载多配置:(过时),使用 extension-configs 替代

spring.cloud.nacos.config.ext-config[n]
C: 内部规则拼接:

spring.cloud.nacos.config.prefix

spring.cloud.nacos.config.file-extension

spring.cloud.nacos.config.group

2 配置 yml 文件中的 DataId

spring:
  application:
    name: config-service              # 服务名
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848   		# nacos 服务地址
#        shared-dataids: test1.yml           # 4.1 共享配置 (已过时)
#        refreshable-dataids: test1.yml
        shared-configs:                      # 4.1 共享配置【最新】
          - data-id: test1-1.yml
            group: DEFAULT_GROUP
            refresh: true
          - data-id: test1-2.yml
            group: DEFAULT_GROUP
            refresh: true
#        ext-config:                         # 4.2 配置多个 (已过时)
#          - data-id: test2-1.yml
#            group: DEFAULT_GROUP
#            refresh: true
#          - data-id: test2-2.yml
#            group: DEFAULT_GROUP
#            refresh: true
        extension-configs:                  # 4.2 配置多个 【最新】
          - data-id: test2-1.yml
            group: DEFAULT_GROUP
            refresh: true
          - data-id: test2-2.yml
            group: DEFAULT_GROUP
            refresh: true
        prefix: ${spring.application.name}	# 4.3 data ID的前缀,默认服务名
        file-extension: yaml          		# data ID的后缀:config-service.yaml
        group: DEFAULT_GROUP         		# 组名
      discovery:
        server-addr: 127.0.0.1:8848   #nacos服务地址

3 配置 console中的DataId

  • nacos控制台配置

在这里插入图片描述

4 测试

  • 后面加载的dataId将覆盖前面加载的dataId设置的内容

  • 查看日志

    在这里插入图片描述

    Located property source: [
    BootstrapPropertySource {name='bootstrapProperties-test3-demo.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test3.yaml'}, BootstrapPropertySource {name='bootstrapProperties-test2-2.yml'}, BootstrapPropertySource {name='bootstrapProperties-test2-1.yml'}, BootstrapPropertySource {name='bootstrapProperties-test1.yml'}]
    
    

三、 多环境配置

1 介绍

  • 在Nacos为不同的环境(开发、测试、生产等)中,提供了多个不同管理级别的概念,包括:Data IDGroupNamespace
概念描述
Data ID数据唯一标识,可理解为Spring Cloud应用的配置文件名
Group用来对Data ID做集合管理,相当于小分类
Namespace用于进行租户粒度的配置隔离。相当于大分类

2 配置介绍

  • 组group配置

    spring.cloud.nacos.config.group=				#组名称
    
    
  • 命名空间 namespace配置 注意:namespace的ID

    spring.cloud.nacos.config.namespace=			#namespace的ID
    
    

    在这里插入图片描述

3 配置内容

  • 在nacos 控制台配置namespace

    在这里插入图片描述

  • 在nacos控制台显示namespace

    在这里插入图片描述

四、 数据持久化

  • 在单机模式时nacos默认使用嵌入式数据库实现数据存储,0.7版本后增加了mysql存储数据。

1 初始化数据库

  • 在conf目录下,提供了nacos-mysql.sql SQL语句,进行数据库的初始化

    • 要求:5.6+ mysql

    • 注意:如果使用mysql 5.5,需要修改sql语句

      在这里插入图片描述

  • 提供的SQL语句没有创建database,手动创建nacos_config

    在这里插入图片描述

2 开启mysql存储

  • conf目录下,提供了application.properties可以修改数据库配置信息

在这里插入图片描述

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config_2_1?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1234

  • 配合完成后,重启nacos

3 测试

  • 添加配置信息

    在这里插入图片描述

  • 检查数据库存储

在这里插入图片描述

五、 Nacos集群搭建

1 概述

  • 3个或3个以上Nacos节点才能构成集群

  • 配置数据源

    • 使用内置数据源

      startup.cmd -p embedded
      
      
    • 使用外置数据源(MySQL,参考4.4.2)

  • 在一台主机配置多个节点的端口号不能连续

    • 例如:8841/8842/8843 不可用
    • 例如:8841/8843/8845 可用

2 配置步骤

在这里插入图片描述

  • 节点1:配置Nacos8841
    1. 配置数据源
    2. 修改端口号:8841
    3. 配置集群配置文件
    4. 启动服务:startup.cmd
  • 节点2:复制Nacos8843
    • 修改端口号:8843
    • 启动服务:startup.cmd
  • 节点3:复制Nacos8845
    • 修改端口号:8845
    • 启动服务:startup.cmd

3 配置详情

1)配置节点1
  1. 拷贝nacos,并重命名 nacos-2.1.0-8841

  2. 配置数据源

    在这里插入图片描述

  3. 修改端口号:8841

    在这里插入图片描述

  4. 配置集群配置文件:拷贝conf/cluster.conf.example,重名为cluster.conf

    在这里插入图片描述

  5. 启动服务:startup.cmd

    在这里插入图片描述

  6. 成功启动

    在这里插入图片描述

2)配置节点2
  • 复制节点nacos-2.1.0-8841,并重命名nacos-2.1.0-8843

  • 修改端口号

    在这里插入图片描述

  • 启动服务

    在这里插入图片描述

3)配置节点3
  • 复制节点nacos-2.1.0-8841,并重命名nacos-2.1.0-8845

  • 修改端口号

    在这里插入图片描述

  • 启动服务

    在这里插入图片描述

4)配置成功

在这里插入图片描述

4 常见错误

1)db.num is null
  • 错误提示:db.num is null

  • 原因:没有配置数据库

    在这里插入图片描述

2) unable to start embedded tomcat
  • 错误提示:unable to start embedded tomcat

  • 原因1:没有编写集群配置文件

    在这里插入图片描述

  • 原因2:安装目录有中文

3)内存不足
  • 提示信息:

  • 原因:内存不足,修改分配内存大小

    在这里插入图片描述

4) Cannot determine JNI library name for ARCH=‘x86’ OS=‘windows 10’ name=‘rocksdb’
  • 提示信息:Cannot determine JNI library name for ARCH=‘x86’ OS=‘windows 10’ name=‘rocksdb’
  • 原因:nacos与jdk 系统位数(64位和32位,)不一致
5) JNI相关错误
  • 提示信息: C:\Users\Administrator\AppData\Local\Temp\/librocksdbjni1411968517689619912.dll: Can't find dependent libraries
  • 原因:JAVA_HOME配置的jdk安装目录,而不是jre安装目录

因:内存不足,修改分配内存大小

[外链图片转存中…(img-0X76yvOW-1705319663136)]

4) Cannot determine JNI library name for ARCH=‘x86’ OS=‘windows 10’ name=‘rocksdb’
  • 提示信息:Cannot determine JNI library name for ARCH=‘x86’ OS=‘windows 10’ name=‘rocksdb’
  • 原因:nacos与jdk 系统位数(64位和32位,)不一致
5) JNI相关错误
  • 提示信息: C:\Users\Administrator\AppData\Local\Temp\/librocksdbjni1411968517689619912.dll: Can't find dependent libraries
  • 原因:JAVA_HOME配置的jdk安装目录,而不是jre安装目录

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

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

相关文章

2024 年 SEO 您需要了解的 8 个关键 SEO 趋势

SEO的未来正趋向于更加以用户为中心、合乎道德和技术先进的方法。 为什么? 人工智能 (AI) 和机器学习在搜索引擎中的兴起使他们能够更好地理解用户意图并提供更相关的结果Google 将经验、专业知识、权威性和可信度 (E-E-A-T&…

C# wpf 获取控件刷新的时机

文章目录 前言一、为何要获取刷新时机?例子一、隐藏控件后截屏例子二、修改控件大小后做计算 二、如何实现?1.使用动画2.使用TaskCompletionSource 三、完整代码四、使用示例1、隐藏工具条截屏2、修改宽高后获取ActualWidth、ActualHeight 总结 前言 做…

export CUDA_HOME=/usr/local/cuda-11.8

echo $CUDA_HOM export CUDA_HOME/usr/local/cuda-11.8

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

如何使用服务器?

文章目录 如何使用服务器?一、工具二、第一种方法三、第二种方法四、实例 个人经验 如何使用服务器? 本文详细介绍了如何利用服务器跑模型,具体流程如下: 一、工具 ToDeskPyCharm Professional移动硬盘JetBrains GatewayGit 二…

什么是用户态和内核态?用户态和内核态是如何切换的?

一、什么是用户态和内核态? 1.1、概述 用户态和内核态是操作系统的两种运行状态。 内核态:处于内核态的 CPU 可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的 CPU 可以从一个程序切换到另外一个程序…

【Rust学习】安装Rust环境

本笔记为了记录学习Rust过程,内容如有错误请大佬指教 使用IDE:vs code 参考教程:菜鸟教程链接: 菜鸟教程链接: Rust学习 Rust入门安装Rust编译环境Rust 编译工具 构建Rust 工程目录 Rust入门 安装Rust编译环境 因为我已经安装过VSCode了&am…

数据结构中的一棵树

一、树是什么? 有根有枝叶便是树!根只有一个,枝叶可以有,也可以没有,可以有一个,也可以有很多。 就像这样: 嗯,应该是这样: 二、一些概念 1、高度 树有多高&#x…

正点原子imx6ull网络环境配置:开发板和电脑通过网线直连、电脑WiFi上网

1.硬件连接 开发板通过网线连接电脑。电脑连接wifi 2.VMware设置 2.1添加桥接模式和NAT模式 1)打开vm设置 2)设置网络适配器为桥接模式,不要勾选 “赋值物理网络连接状态” 3) 添加一个网络适配器并设置成NAT模式,…

力扣hot100 颜色分类 双指针 滚动赋值

Problem: 75. 颜色分类 文章目录 思路解题方法复杂度Code💖 超简洁版 思路 解题方法 描述你的解题方法 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution { public void sortColors(int[] nums){int n nums.length…

QGroundControl Qt安卓环境搭建及编译出现的问题

记录Qt 5.15.2搭建安卓环境出现的各种问题。 zipalign tool not found: D:/JavaAndroid/Android/sdk/build-tools//zipalign.exe? 答:需要将DANDROID_PLATFORM升级到已下载的版本. bin/llvm-readobj.exe: error: unknown argument ‘–libs’ 答&…

社交媒体数据分析:解读Facebook用户行为

在当今数字化时代,社交媒体已经成为人们生活不可或缺的一部分,而Facebook作为这个领域的巨头,承载了数十亿用户的社交活动。这庞大的用户群体产生了海量的数据,通过深度数据分析,我们能够深入解读用户行为,…

乐鑫科技业绩超预期修复,Wi-Fi芯片龙头走出“V底”了?

2024年伊始,又到了A股开始业绩披露的时间节点。 尽管A股业绩预告序幕刚刚拉开,但为数不多的企业预告似乎还是透露出某些信号:2023年国内半导体企业的业绩或许并没有想象中的“差”,相反正在逐渐改善。 通过同花顺问财进行筛选发…

php反序列化漏洞基础

一、序列化 serialize(): 序列化是将对象或类转换为字符串的过程,以便在程序运行过程中对其进行持久化存储或传输的操作。在PHP中,序列化主要用于将类对象或数组转换成字节流的形式,以便于存储在磁盘或传输到其他系统。 通过序列化,可以将对象或类转换成一串字符串,然后可…

PPO 跑CartPole-v1

gym-0.26.2 cartPole-v1 参考动手学强化学习书中的代码,并做了一些修改 代码 import gym import torch import torch.nn as nn import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plt from tqdm import tqdmclass PolicyNet(nn.Module):def __…

2024最新PyQt5及其工具(Qt Designer、PyUIC、PyRcc)手把手操作实践指南

2024最新PyQt5及其工具(Qt Designer、PyUIC、PyRcc)手把手操作实践指南 前言 最近做了一些个人项目,内部逻辑还是挺多的,而且也有想要开源的想法,但是总不能直接把源码端给大家直接运行,有一些需求还有萌…

ubuntu设置每天定时关机

ubuntu设置每天定时关机 终端输入命令: sudo crontab -e输入密码,回车。 我这里使用nano作为编辑器,你可以选择vim。 在末尾输入以下命令: 59 23 * * * sudo -u root shutdown now设置:每天23:59分,电脑…

中科院自动化所:基于关系图深度强化学习的机器人多目标包围问题新算法

摘要:中科院自动化所蒲志强教授团队,提出一种基于关系图的深度强化学习方法,应用于多目标避碰包围(MECA)问题,使用NOKOV度量动作捕捉系统获取多机器人位置信息,验证了方法的有效性和适应性。研究成果在2022年ICRA大会发…

HarmonyOS应用开发者初级认证试题库(鸿蒙)

目录 考试链接: 流程: 选择: 判断: 单选: 多选: 考试链接: 开发者能力认证-职业认证-鸿蒙能力认证-华为开发者学堂 (huawei.com)https://developer.huawei.com/consumer/cn/training/dev-…

计算机导论06-人机交互

文章目录 人机交互基础人机交互概述人机交互及其发展人机交互方式人机界面 新型人机交互技术显示屏技术跟踪与识别(技术)脑-机接口 多媒体技术多媒体技术基础多媒体的概念多媒体技术及其特性多媒体技术的应用多媒体技术发展趋势 多媒体应用技术文字&…