nacos1.3.2入门拆坑

目录

 

〇、简介

一、什么是配置中心

配置

配置中心

二、主流配置中心

三、nacos

功能

安装

使用mysql作为存储数据库

发布配置

四、通过程序获取配置

五、nacos配置

六、管理操作

界面操作

配置操作

数据库操作

七、通过程序监听查询

八、springboot使用nacos配置并自动获取最新配置

九、拓展的配置

十、集群部署


〇、简介

Nacos,阿里开源,针对微服务架构中的

  • 服务发现
  • 配置管理
  • 服务治理

的综合型解决方案

官网

配置中心概念和使用场景

nacos功能特性

快速入门方法

安装方式

配置管理的核心概念以及数据模型

使用控制台进行配置管理

分布式系统应用的方法

集群部署方式

一、什么是配置中心

配置

应用程序启动运行时候的参数信息

特点:

  • 独立于程序的只读变量
  • 配置伴随应用的整个生命周期
  • 多种加载方式:硬编码、配置文件、环境变量、启动参数、数据库
  • 配置需要治理:在不同环境(开发、测试、生产)、不同集群(如不同的数据中心)

配置中心

将配置从不同的应用中剥离出来,对配置统一管理,应用本身部管理配置

二、主流配置中心

  • spring cloud config
  • apollo
  • nacos

来源:https://www.cnblogs.com/tubeWang/p/11854807.html

 

三、nacos

官网快速入门

本文使用nacos1.3.2

下载地址

功能

  1. 服务发现与健康度检查
  2. 动态配置管理

安装

64位os

64位jdk1.8+

maven3.2.x+

windows下载压缩包解压到安装目录

进入bin目录,通过以下方式启动

# 单机
./startup.sh -m standalone
startup.cmd -m standalone

启动成功:Nacos started successfully in stand alone mode. use external storage

注意:

如果是非单机模式启动 默认使用mysql作为外置数据库,此时需要到conf/application.properties内添加mysql的相关配置参数。否则就会去找jdbc.properties,两者都没有,那相当于依赖没有启动成功,自然就启动不起来。

解决方法是启动时加上 -p embedded 使用derby + jraft的内嵌数据库,或者-m standalone启动单机模式(内置的嵌入式数据库)

启动成功后通过http://localhost:8848/nacos进入nacos管理系统,用户名nacos,密码nacos

使用mysql作为存储数据库

1、创建数据库nacos_config,使用conf/nacos-mysql.sql初始化数据库

2、修改配置文件conf/application.properties

解决启动故障

 

原因:缺少配置文件cluster.conf

解决:复制文件cluster.conf.example文件,修改名称即可

3、启动成功,可以看到数据已经是在mysql数据库中的

发布配置

# 发布
 curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

# 获取
curl -X GET "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

四、通过程序获取配置

引入maven依赖

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.3.2</version>
</dependency>

编码

public static final String SERVER_ADDR = "localhost:8848";
public static final String DATA_ID = "nacos-demo.yml";
public static final String GROUP = "DEFAULT_GROUP";

public static final Logger logger = LoggerFactory.getLogger(SimpleNacosDemo.class);

public static void main(String[] args) throws NacosException {
    // 使用nacos client 获取nacos 的配置
    Properties properties = new Properties();
    properties.put("serverAddr",SERVER_ADDR);
    // 获取配置
    ConfigService configService = NacosFactory.createConfigService(properties);
    String config = configService.getConfig(DATA_ID, GROUP, 1000);
    logger.info("获取到的配置:\n{}",config);
}

结果

20:29:48.705 [main] INFO com.jay.cloudlearn.nacos.SimpleNacosDemo - 获取到的配置:
server:
    prot: 8080

五、nacos配置

命名空间:对不同的环境进行隔离,区分开发、测试、生产

分组:对配置文件分组,无特殊要求,通常用来区分不同的项目或应用,一般是项目名称分组

配置集:每个项目下有若干个工程,每个dataId是工程的主配置文件

配置项:一般是key-value格式

六、管理操作

界面操作

配置操作

 关闭登录认证

数据库操作

添加账户

操作users表

添加用户的角色

(操作roles表)

修改密码

(操作users表)

修改password字段即可

密码获取方式为:

# 引入security依赖
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>5.4.1</version>
</dependency>
// 代码编写
public static void main(String[] args) {
    BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
    String encode = encoder.encode("nacos2020");
    System.out.println(encode);
}

 

七、通过程序监听查询

代码

configService.addListener(DATA_ID, GROUP, new Listener() {
    @Override
    public Executor getExecutor() {
        return null;
    }

    @Override
    public void receiveConfigInfo(String s) {
        logger.info("配置变化:\n{}",s);
    }
});

while (true){
    Thread.sleep(2000);
}

结果 

21:18:10.891 [com.alibaba.nacos.client.Worker.longPolling.fixed-localhost_8848-GUOKIBMWG7FCFRO4] INFO com.jay.cloudlearn.nacos.SimpleNacosDemo - 配置变化:
server:
    prot: 28080

题外话

为什么要在死循环里面sleep?

每次在创建的线程函数中,有whlie(true)死循环的时候,在执行完一遍循环体的时候一般会使用sleep(),使死循环不会一直占用CPU资源(将当前线程置入等待状态,并让它等待一段指定的时间间隔)

 

八、springboot使用nacos配置并自动获取最新配置

引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

在bootstrap.yml中配置

server:
  port: 56011

spring:
  application:
    name: service2
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        # dataId = 项目名称+拓展名
        file-extension: yml
        namespace: GUOKIBMWG7FCFRO4
        group: TEST_GROUP

在代码中引入

// 方式一、@Value注入,不能获取动态调整后的值
    @Value("${common.name}")
    private String commonName;
// 方式二、上下文
    @Resource
    private ConfigurableApplicationContext applicationContext;

    applicationContext.getEnvironment().getProperty("common.name")

九、拓展的配置

spring:
  application:
    name: service2
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        # dataId = 项目名称+拓展名
        file-extension: yml
        namespace: GUOKIBMWG7FCFRO4
        group: TEST_GROUP
        # 扩展的配置
        extension-configs:
        - data-id: ext-config-common01.properties

        - data-id: ext-config-common02.properties
          group: GLOBALE_GROUP

        - data-id: ext-config-common03.properties
          # 动态刷新
          group: REFRESH_GROUP
          refresh: true

配置的优先级:

内部>拓展

拓展内部的顺序在后的>在前的

十、集群部署

集群配置主要是为了高可用

修改配置

【application.properties】主要是端口和设定ip

【cluster.conf】集群的机器host和端口

127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850

代码配置

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值