Nacos 的使用笔记

Posted 上码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 Nacos 的使用笔记相关的知识,希望对你有一定的参考价值。

  1. Nacos 官网:https://nacos.io/zh-cn/  官网中有 Nacos 比较详细的文档与其版本描述

  2. Nacos 下载与使用

    1. github 打开即是 nacos 的源码,下载下来(源码分析时使用)

    2. https://github.com/alibaba/nacos/releases/tag/1.4.2 在此链接根据操作系统下载 nacos 的编译好的包,如图

    3. 在解压好的文件夹 bin 中使用 startup.cmd 启动(windows),在cmd 使用命令 startup.cmd -m standalone , 如图所示启动成功(1) Nacos 的使用笔记

    4. 访问 nacos : http://127.0.0.1:8848/nacos 使用默认账号:nacos ,密码:nacos 登录 nacos 后台页面

    5. 后台页面,常用的配置管理与服务管理,如图所示(1) Nacos 的使用笔记其中:provider-config 是我新建的,后面会用到

  3. 客户端服务创建

    1. 创建一个 provider-service 来提供服务

    2. 项目为 Springboot 项目,由于创建的 web 项目为 webflux 可能与传统的 web 引入feign 不一样,故用 web 项目的 pom 文件导入正常 feign 即可,

      1. service-provider 引入依赖如下:
                            

         <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
        <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope> </dependency>
        <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency> </dependencies>
      2. service-consumer 与 serivce-provider 依赖保持一下的情况,增一个feign依赖,如下:

        <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
        <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope> </dependency>
        <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency>
        <dependency> <groupId>com.netflix.archaius</groupId> <artifactId>archaius-core</artifactId> <version>0.7.1</version> </dependency>
        <!-- feign --> <dependency> <groupId>com.playtika.reactivefeign</groupId> <artifactId>feign-reactor-webclient</artifactId> <version>2.0.15</version> </dependency> <dependency> <groupId>com.playtika.reactivefeign</groupId> <artifactId>feign-reactor-cloud</artifactId> <version>2.0.15</version> </dependency> <dependency> <groupId>com.playtika.reactivefeign</groupId> <artifactId>feign-reactor-spring-configuration</artifactId> <version>2.0.15</version> </dependency> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-slf4j</artifactId> <version>8.18.0</version> </dependency> </dependencies>
    3. service-provider 提供接口:(1) Nacos 的使用笔记

    4. consumer-service 通过 feign 消费provider-service提供接口      
      (1) Nacos 的使用笔记
      (1) Nacos 的使用笔记

    5. service-provider 配置文件:                                                     

      spring: cloud: nacos: discovery: server-addr: http://localhost:8848      # nacos 配置中心配置      config: server-addr: http://localhost:8848 file-extension: yml name: provider-config refresh-enabled: true application: name: service-provider profiles: active: devserver: port: 9001
    6. service-consumer 配置文件

      spring: cloud: nacos: discovery: server-addr: http://localhost:8848 application: name: service-consumer
      server: port: 9002
  4. 启动服务,请求接口

    1. nacos 管理后台可见,服务均注册上去
      (1) Nacos 的使用笔记

    2. 调用 service-consumer 通过feign请求 service-provider,从响应结果可以看出请求成功(1) Nacos 的使用笔记

  5. 读取 nacos 配置,在 service-provider 添加如下代码:

    1. @Value("${phone}")    private String phone;    @GetMapping("/phone")    public Mono getPhone(){        return Mono.just(phone);    }

    2. 对照上述 service-provider 配置文件配置的 spring.cloud.nacos.config.file-extension=yml,spring.cloud.nacos.config.name=provider-config,在nacos后台创建后缀为 yml 名称为 provider-config 的文件
      (1) Nacos 的使用笔记

    3. 创建完后,重启serviec-provider,请求 service-provider 新增接口,响应结果如图,可见成功读取配置

    4. 修改 provider-config 配置 phone: 456 再次请求接口,响应结果如何,可见服务会即时读取更新配置

  6. 常见问题汇总

    1. springboot 版本与 nacos 源码中引入的 springboot 版本尽量一致,否则可能会启动报错

    2. 配置文件移入 nacos 后,得将 application.properties 修改成 bootstrap.properties ,否则会不读 application.properties

以上是关于 Nacos 的使用笔记的主要内容,如果未能解决你的问题,请参考以下文章