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 {@Resourceprivate 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: 8170spring:application:name: service-provider          #服务名cloud:nacos:discovery:server-addr: 127.0.0.1:8848   #nacos服务地址
    #端口号
    server:port: 8270spring: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.ymlshared-configs:                      # 4.1 共享配置【最新】- data-id: test1-1.ymlgroup: DEFAULT_GROUPrefresh: true- data-id: test1-2.ymlgroup: DEFAULT_GROUPrefresh: true
#        ext-config:                         # 4.2 配置多个 (已过时)
#          - data-id: test2-1.yml
#            group: DEFAULT_GROUP
#            refresh: true
#          - data-id: test2-2.yml
#            group: DEFAULT_GROUP
#            refresh: trueextension-configs:                  # 4.2 配置多个 【最新】- data-id: test2-1.ymlgroup: DEFAULT_GROUPrefresh: true- data-id: test2-2.ymlgroup: DEFAULT_GROUPrefresh: trueprefix: ${spring.application.name}	# 4.3 data ID的前缀,默认服务名file-extension: yaml          		# data ID的后缀:config-service.yamlgroup: 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安装目录

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

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

相关文章

数据结构学习 jz39 数组中出现次数超过一半的数字

关键词:排序 摩尔投票法 摩尔投票法没学过所以没有想到,其他的都自己想。 题目:库存管理 II 方法一: 思路: 排序然后取中间值。因为超过一半所以必定在中间值是我们要的结果。 复杂度计算: 时间复杂度…

大数据Doris(五十六):SQL函数之地理位置函数

文章目录 SQL函数之地理位置函数 一、​​​​​​​ST_AsText(GEOMETRY geo)

电阻表示方法和电路应用

电阻 电阻的表示方法 直标法 直标法是将电阻器的类别及主要技术参数的数值直接标注在电阻器表面上 通常用3位阿拉伯数字来标注片状电阻的阻值,其中第1位数代表阻值的第1位有效数;第2位数代表阻值的第二位有效数字;第3位数代表阻值倍率&…

L1-025 正整数A+B(Java)

题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。 输入格式: 输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数&#xff0…

Oracle常见操作

知识点1:格式化日期 select to_char(sysdate,yyyy-MM-dd HH:mm:ss) as time from dual;运行截图: 知识点2:解锁用户 alter user test account unlock;知识点3:修改密码 alter user test identified by test2;知识点4&#xff…

【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案

微服务架构的分布式事务解决方案 前提介绍知识系统回顾事务ACID事务的难点刚性事务和柔性事务 刚性事务优点局限 分布式事务全局事务(DTP模型)— 标准分布式事务全局事务(DTP模型) — XAXA接口的实现XA的2PC机制2PC机制的分析 2PC机制的局限 JavaEE平台中…

城市信息模型平台顶层设计与实践-CIM-读书笔记

城市信息模型平台顶层设计与实践-CIM-读书笔记 1、地理空间框架 GB/T 30317—2013《地理空间框架基本规定》规定地理空间框架为:“地理信息数据及其采集、加工、交换、服务所涉及的政策、法规、标准、技术、设施、机制和人力资源的总称,由基础地理信息…

小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----语音合成(二)

官方文档链接:https://mp.weixin.qq.com/wxopen/plugindevdoc?appidwx069ba97219f66d99&token370941954&langzh_CN#- 要使用插件需要先在小程序管理后台的设置->第三方设置->插件管理中添加插件,目前该插件仅认证后的小程序。 语音合成…

排序算法之八:计数排序

1.计数排序思想 计数排序,顾名思义就是计算数据的个数 计数排序又称非比较排序 思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 计数…

HNU-算法设计与分析-实验2

算法设计与分析实验2 计科210X 甘晴void 202108010XXX 目录 文章目录 算法设计与分析<br>实验21 用动态规划法实现0-1背包问题重述想法代码验证算法分析 2 用贪心算法求解背包问题问题重述想法代码验证算法分析 3 半数集问题&#xff08;实现题2-3&#xff09;问题重述…

Ubuntu 22.04 安装Fail2Ban

Fail2Ban是一种用来防止暴力破解的工具&#xff0c;一般要和iptables配合使用。其原理是读取系统日志&#xff0c;并通过正则表达式匹配&#xff0c;监控IP在一段时间内的登录尝试、身份验证失败日志等并进行计数。超过阈值则进行IP封禁&#xff0c;过一段时间后再解封。 总的…

ant design vue Tree组件叶子节点横向排列

antdesignvue的树形组件要实现组件叶子节点横向排列有点坑&#xff0c;没有 配置属性&#xff0c;需要自己想办法。 要实现的效果 看tree组件的dom结构&#xff0c;父元素flex竖向布局&#xff0c;子项不论节点层级都在同一层&#xff01;&#xff01;&#xff01; 难点在于想…

8个 Python 开发者必备的 PyCharm 插件

这8个顶级插件保证了更快、更轻松、更愉悦的开发过程。 在 PyCharm 插件列表中&#xff0c;我们发现了几个瑰宝插件&#xff0c;它们各自以独特的方式帮助开发者快速、简便、愉悦地开发。 今天我就给大家逐个介绍它们。 1. Key Promoter X 【下载链接】&#xff1a;https://…

Openlayer【四】—— 控件

控件 控件是一个可见的小部件&#xff0c;其 DOM 元素位于 屏幕。它们可以涉及用户输入&#xff08;按钮&#xff09;&#xff0c;也可以仅供参考; 位置是使用 CSS 确定的。默认情况下&#xff0c;它们位于 容器&#xff0c;但可以使用 任何外部 DOM 元素。 其中ol/control是…

定时器中断控制的独立式键盘扫描实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 sbit S4P1^7; //将S4位定义为P1.7引脚 unsigned char keyval; /…

50天精通Golang(第18天)

web开发介绍、iris框架安装、HTTP请求和返回、Iris路由处理 一 Web项目开发介绍及实战项目介绍 1.1 引言 本系列课程我们将学些Golang语言中的Web开发框架Iris的相关知识和用法。通过本系列视频课程&#xff0c;大家能够从零到一经历一个完整项目的开发&#xff0c;并在课程…

【栈】Leetcode 496 下一个更大元素I

【栈】Leetcode 496 下一个更大元素I 解法1 两个单调栈解法2 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 两个单调栈 两个栈进行操作&#xff0c;一个栈用来遍历寻找&#xff0c;一个栈用来保留 将nums2中的元素…

NLP论文阅读记录 - 2021 | WOS 利用 ParsBERT 和预训练 mT5 进行波斯语抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.前提三.本文方法A. 序列到序列 ParsBERTB、mT5 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Leveraging ParsBERT and Pretrained …

鸿蒙开发之组合手势

当我们需要支持多个手势的时候&#xff0c;可以通过GestureGroup来实现&#xff0c;如下实现了同时支持Tap和Pan手势 import Prompt from system.prompt Entry Component struct OfficialGestureGroupPage {State message: string Hello Worldbuild() {Column() {Column() {T…

STM32WL用户手册学习

介绍 STM32Cube是意法半导体的原创产品&#xff0c;通过减少开发工作量、时间和成本来显著提高开发人员的生产力。STM32Cube涵盖了整个STM32产品组合。 STM32Cube包括&#xff1a; 一套用户友好的软件开发工具&#xff0c;涵盖项目开发从设计到生产&#xff0c;其中&#xf…