首页 > 其他分享 >Nacos笔记

Nacos笔记

时间:2022-11-15 21:16:40浏览次数:68  
标签:配置文件 spring 配置 Nacos 笔记 nacos mysql

什么是Nacos

image-20221115202158063

Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,具有配置管理服务发现两大功能

配置中心

  • 系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移

  • 这样配置就分散了,不仅如此,分散中还包含着冗余

为什么使用配置中心

  • 应用程序在启动和运行的时候往往需要读取一些配置信息

  • 配置基本上伴随着应用程序的整个生命周期

  • 配置中心将配置从应用中剥离出来,再通过加载配置文件的顺序不同,实现差异化配

image-20221115201942269

安装并启动 Nacos

github 下载 Nacos 压缩包,解压缩到本地即可,地址

image-20221115202412801

Nacos-1.1.4 为分界线,1.1.4 之上的版本,对应的 mysql 版本为 8.01.1.4 之下对应的是 mysql 5.7 ,与 mysql 版本不匹配,无法使用

下载解压缩之后

  1. 首先要创建一个名为 nacos-mysql 的数据库,创建数据库的 sql 文件位于 ${nacos_dir}/conf/nacos-mysql.sql

  2. 修改其中的配置文件 ${nacos_dir}/conf/application.properties ,在其中添加 mysql 相关信息

# 链接外部mysql数据库
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1/nacos-mysql?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=uour_username
db.password=your_password
  1. 双击 ${nacos-dir}/bin/startup.cmd 启动 nacos ,出现如下界面,启动成功

image-20221115203144360

  1. nacos 的默认启动端口为 8848 ,登录账户和密码均为 nacos ,登录之后,页面如下

image-20221115203318384

3 Nacos 应用于微服务

3.1 读取微服务的配置

  1. 在微服务项目中要使用 Nacos,首先要引入依赖
<!--SpringCloud Alibaba依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--SpringCloud依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Hoxton.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--SpringBoot依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.2.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--jsckson依赖需要引入,否则有概率项目无法启动-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.2</version>
</dependency>
<!--SpringCloud Alibaba Nacos 配置依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>
<!--SpringBoot Web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>
  1. 在微服务项目中,Nacos 依赖于 SpringCloud AlibabaSpringCloudSpringBoot 相互依赖,需要确定一直对应的版本号,否则项目启动会出错,具体的版本对应关系如下

SpringBoot、SpringCloud、SpringCloud Alibaba 毕业版本对照表:

image-20221115204124233

SpringCloud Alibaba 各组件版本对照表

image-20221115204219838

  1. 接下来是项目中配置文件的编写(文件命名必须是 bootstrap.yml,否则读取到的配置为空)
server:
  port: 8082
spring:
  application:
    name: service-two
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml # dataId = name + file-extension(必须是yaml,不能是yml)
        namespace: 08714022-716d-438b-8d20-1c52a9b5a205
        group: SKG

注意点:

  • Nacos 配置文件的名称必须是:bootstrap.yml ,在项目中会变成一个带云朵的小绿叶

image-20221115204618385

  • Nacos 配置中心管理端,假如配置的 dataIdnacos-test.yaml ,那么在项目的配置文件中,name 必须为 nacos-testfile-extension 必须为 yaml ,项目启动后会根据 dataId = name + file-extension 的形式去匹配 dataId

  • 配置文件中的 namespace 必须是那一长串号码,直接写 namespace 的名称(devpublic 等)无效

image-20221115205029683

  1. 配置文件写好之后,在项目中想要读取配置中心的配置,直接使用 @Value 注解便可取到值
@Value("${spring.port}")
private String port;

image-20221115205251094

  1. 使用 @Value 注解拿到的值,不会根据远程配置的修改而变化,想要达到远程与项目配置同时更改的效果,需要使用环境上下文来实现
@Autowired
private ConfigurableApplicationContext applicationContext;

@GetMapping("/config1")
public String config(){
    return applicationContext.getEnvironment().getProperty("spring.port");
}

标签:配置文件,spring,配置,Nacos,笔记,nacos,mysql
From: https://www.cnblogs.com/wudaojiuxiao/p/16893911.html

相关文章

  • 20201306吴龙灿第十四章学习笔记
    知识点归纳第十四章MySQL数据库系统数据库什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进......
  • 《信息安全与设计》第十四章学习笔记
    MySQL数据库系统知识点MySQL简介1.MySQL是一个关系数据库系统在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。......
  • k8s“弃用docker”是怎么回事儿?(chrono《kubernetes入门实战课》笔记整理)
      来自俺自己的一句话:这是一个扩展了解,个人觉得对于理解docker,k8s关系,还有各厂之间的竞争、技术演化的理解是有帮助的。所以还是做了一篇笔记。 2014年,docker在容器......
  • 本地代码上传github(个人笔记)
    本片作为记录个人学习内容,参考另外两位大咖的内容,由于是只考虑自己了解范围,存在未说明的地方可以查看底部连接查看参考文章。前期准备:1,github上有账号,有仓库,复制仓库地址......
  • 道长的算法笔记:基础最短路模型
    #include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>ii;//移动轨迹向量化intadd[3]={+1,-1,0};intmul[3]={0,0,1};intvist[10000......
  • mysql使用desc(describle)和explain查看执行计划--笔记
    大家查看mysql执行计划时用的最多的是explain,其实还可以等效使用desc、describle查看执行计划,desc和explain命令还可以有别的作用如查看表列属性等功能。1、查看表结构和......
  • GitHub+Typora实现云笔记一键上传
    git实现笔记自动上传功能简介:将更新内容自动上传同步git,无需手动提交,解锁一键式同步。流程大致为,创建新仓库,配置公钥和私钥,安装quicker软件,通过quicker上某脚本完成一键......
  • IT项目管理学习笔记4(项目成本管理)
    IT项目管理学习笔记4(项目成本管理)1.项目成本管理的重要性超支(overrun)是实际成本超过成本估算的附加比例或金额成本(cost)是实现一个特定目标而牺牲或者放弃的资源项......
  • 第十四章学习笔记
    第十四章MySQL数据库系统1.MySQL介绍MySQL是一个关系数据库系统在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关......
  • [Python]学习笔记之-正则表达式
           在使用Python做文件处理时,经常需要使用到匹配、搜索功能,这就离不开一个核心的知识:正则表达式。正则表达式(RegularExpression)描述一种字符串匹配的模式(pat......