Nacos使用(一)

nacos简介

服务发现

配置管理

一、nacos服务搭建

  • nacos服务端 https://github.com/alibaba/nacos/releases
  1. bin目录下有启动、停止脚本:

windows环境:standalone表示单机启动(或者直接双击bin/startup.cmd也可以,但是双击启动前需要改startup.cmd文件,将mode模式从默认cluster集群模式启动调整为standalone单机模式启动,不推荐使用该粗暴方式):

startup.cmd -m standalone

image-20211222145014102

Linux环境:

sh startup.sh -m standalone
  1. 我们在windows环境下演示,启动成功之后能够看到以下界面:

image-20211222145214967

image-20211222145257278

  1. 默认启动端口为8848,我们访问http://localhost:8848/nacos/index.html#/login

image-20211222145324419

  1. 使用默认账号:nacos、密码:nacos,登录成功之后即进入到以下界面:

image-20211222145519742

二、配置管理

首先,我们介绍配置管理

我们需要将配置文件通过nacos进行管理,那么最主要的两个功能就是发布配置和获取配置,有两种方式来进行管理。

  1. 通过接口进行管理

    • 发布配置

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

      或者直接通过postman发送post请求:

      image-20211222150512260

    • 获取配置

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

      或者直接通过postman发送get请求:

      image-20211222150638642

  2. 通过GUI页面端管理

    在网页上查询一下配置管理的列表,我们就发现多了一条上面通过接口新增的配置:

    image-20211222150810396

    同样,我们也能在可视化网页中增加配置,点击右侧的+号就能进入到新增界面,并填写相关信息提交即可:

image-20211222151133503

	同时支持修改、删除、导入等操作。

三、结合springboot

  • 首先需要引入相关pom依赖:

    需注意SpringBoot与nacos的版本号也许有冲突,这里使用2.7.2版本的SpringBoot与2021.0.1.0的spring-cloud-alibaba-dependencies,备注:spring-cloud-dependencies 2020.0.0 版本不在默认加载bootstrap 文件,如果需要加载bootstrap 文件需要手动添加依赖

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.7.2</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.1.3</version>
</dependency>
  • 准备两份配置文件

    1. application.yml

      spring:
        profiles:
          active: dev
      
    2. bootstrap.yml

    server:
      port: 8080
    
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #Nacos地址
          config:
            server-addr: localhost:8848 #Nacos地址
            file-extension: yaml #这里我们获取的yaml格式的配置
    
  • nacos中dataid的命名规则为 s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name{spring.prifiles.active}.${spring.cloud.nacos.config.file-extension},即此处我们的dataid=nacos-config-client-dev.yaml,在nacos的配置管理上新建对应配置,并新建一个配置项:useLocalCache: false

    image-20220809180217672

    image-20220809180541456

  • 暴露一个出口/config/get,获取useLocalCache变量:

    @RestController
    @RefreshScope
    @RequestMapping("/config")
    public class ConfigController {
    
        @Value("${useLocalCache}")
        private boolean useLocalCache;
    
        @GetMapping("/get")
        public boolean get() {
            return useLocalCache;
        }
    }
    
  • 访问http://localhost:8080/config/get,返回useLocalCache的值为false

  • 在nacos上修改useLocalCache的值为true,这个时候我们观察到日志打印以下内容表示配置已刷新

    Refresh keys changed: [useLocalCache]
    
  • 再次访问http://localhost:8080/config/get,返回useLocalCache的值为true,动态更改配置文件的功能即已生效


番外:集群部署

  • 运行conf目录下的sql文件

    nacos\conf\nacos-mysql.sql
    
  • 调整conf目录下的application.properties文件,指向运行了上面sql脚本文件的数据库连接信息

    #*************** Config Module Related Configurations ***************#
    ### 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?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=root
    
  • 启动

    windows:双击startup.cmd

    linux:sh startup.sh

  • 上述是启动单机的步骤,后面部署集群还需要调整conf目录下的cluster.conf,我们暂定另一台集群ip还是本机,但是端口为8858,即加上下面的内容

    127.0.0.1:8848
    127.0.0.1:8858
    
  • 将上面配置好的nacos复制一份出来唯一要调整的就是conf目录下的application.properties文件中的server.port=8858

  • 同样启动

  • 访问http://localhost:8848/nacos/#/login或者访问http://localhost:8858/nacos/#/login就能看到nacos的界面,默认账号密码依旧都是nacos

  • 验证测试一下,我们在8848端口的nacos加上一个配置,在8858上也能看到了

    Tips:这里之前笔者用8848和8849做实验,发现总是有一个服务会报端口占用。查了资料发现,新版本的nacos增加了gRPC的通信方式。即在启动对应端口的服务同时,会占用顺延1000的端口,比如我们启动了8848端口的服务,gRPC已经使用了9848和9849,这个时候我们再启动一个8849的服务,gRPC会去使用9849和9850,这个时候9849端口被两个服务都使用了,就报端口占用无法启动了。所以尽量多个nacos服务之间的端口号间隔稍大一些。

参考资料:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值