0
点赞
收藏
分享

微信扫一扫

Nacos使用(一)

流沙雨帘 2022-02-14 阅读 77

文章目录

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.3.12.RELEASE版本的SpringBoot与0.2.10的nacos-starter

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

<!-- nacos-config -->
<dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>nacos-config-spring-boot-starter</artifactId>
	<version>0.2.10</version>
</dependency>

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-bootstrap</artifactId>
	<version>3.0.0</version>
</dependency>
  • 将application.yml配置文件更名为bootstrap.yml,并加上以下配置:

    nacos:
      config:
        type: yaml
        server-addr: localhost:8848
        context-path: nacos
        data-ids: dml-webservice.application.yaml
        auto-refresh: true
        group: DEFAULT_GROUP
        bootstrap:
          enable: true
          log:
            enable: true
    
  • 在启动类加上@NacosPropertySource注解,dataId与配置在nacos里的dataId保持一致:

    @SpringBootApplication
    @NacosPropertySource(dataId = "example", autoRefreshed = true)
    public class MynacosApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MynacosApplication.class, args);
        }
    
    }
    
  • 暴露一个出口/config/get,获取useLocalCache变量:

    @RestController
    @RequestMapping("config")
    public class ConfigController {
    
        @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
        private boolean useLocalCache;
    
        @GetMapping("/get")
        public boolean get() {
            return useLocalCache;
        }
    }
    

  • 访问http://localhost:8080/config/get


番外:集群部署

  • 运行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服务之间的端口号间隔稍大一些。

参考资料:

  • Nacos

  • springboot2.2.6项目接入Nacos流程

  • Windows安装Nacos单机&集群

  • Nacos2.0.1数据持久化和伪集群学习–集群启动报错问题(Error creating bean with name ‘grpcSdkServer‘)

  • SpringBoot整合Nacos的一些方案

举报

相关推荐

0 条评论