nacos 的使用以及springboot集成nacos实现

1 安装nacos Server ,,安装过程中很简单,github下载对应的压缩包,windows启动的话进入安装bin目录下,双击starp.cmd

启动好之后界面如下

可以看到默认就是以单机模式启动,启动以后就可以在
http://localhost:8848/nacos/index.xml 看到nacos的界面了。初始密码和用户名都是nacos
界面如下

2 那么nacos主要功能是什么呢,如下

  - 1 作为配置中心,替代Eureka。
  -  2 作为配置中心,可以将项目中的配置问价放到这个EurekaServer上。
        方便更改配置,而不用每次想更改配置都在源码上更改然后打包发布。

3 实践 springboot使用nacos作为注册和配置中心,分以下几步。

nacos端

       想想我们的项目中通常都有开发环境,测试环境,生产环境。那么在nacos上这个怎么实现呢?
1 新建三个命名空间(dev test prod),我们只需要填入dev和描述 命名空间的id是自动生成的。

然后点击配置列表,会发现上面多了几个菜单栏。可以理解为每个命名空间都对应一个环境。

2 现在已经建立好了开发,测试,生产环境,那么下一步。。。就是编写各个环境的配置文件了。。。因为使用nacos之后,,我们的配置文件就可以都放在nacos上,项目中只需要配置nacos相关即可(后面再说)

点击右上角+ 号,编写配置文件如下

记录一个自家遇到的坑

  • data -ID 相当于我们开发环境配置文件的名字,如果你用yml格式的话,注意要写完整 xxx-dev.yml
    我刚开始就是只写了nacos,找了很久的原因。
  • group 暂时先用默认的DEFAULT_GROUP 即可。
  • 这里我们开发环境使用8081 端口启动,测试环境使用8082端口
    按照上面,再测试环境下再新建配置,注意data Id 为 nacos-test.yml 配置内容中的端口为8082

至此,nacos上的配置就完成了,当然我们是简单的配置了以下,只配置了端口号不同来区分。
在项目中,,你可以将你的配置文件全部写在上面。

Springboot 端

1 新建springboot项目,添加nacos的依赖

这里使用了dependencyManagement 来管理包版本,顺便提一下,dependencyMangent
只是指定版本,,如果依赖中没有指定版本,则使用这里指定的版本,如果依赖中指定了版本则hulue此处。

    
        org.springframework.cloud
        spring-cloud-starter-alibaba-nacos-discovery
        
    
    
        org.springframework.cloud
        spring-cloud-starter-alibaba-nacos-config
        
    
    
        com.alibaba
        fastjson
        1.2.7
    

    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Edgware.SR3
            pom
            import
        
        
            org.springframework.cloud
            spring-cloud-alibaba-dependencies
            0.1.2.RELEASE
            pom
            import
        
    

2 包加载完成以后,修改配置文件为

bootstrap-dev.yml; bootstrap-test.yml;bootstrap-prod.yml
如下图

这里为什么是bootstrap,为什么不是application,,你可以用application试一下,会报错的,后面再解释。我们先快速的实现功能,先体验一下,nacos是怎么来配置的。

  • 注意: 这里要注意你的这个配置文件要是这个绿叶的图标和一个小云朵。当你依赖添加的没有问题的时候,,自然是这样的。。如果我们屏蔽掉指定的版本,或者注销掉两个依赖都会变成下面这个样子,这个时候你的配置文件实际不会生效的。。这个也是我遇到的一个问题,,网上各种搜索配置文件没有小绿叶,但是好像没有人犯过这个低级错误。一致没找到原因,最后发现没有指定版本号。。所以还是要细心呐!!!!
3 编写配置文件如下
spring:
  profiles:
    active: dev
  application:
    name: nacos
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        service: ${spring.application.name}
        namespace: 8b6cf7f4-045a-4907-a13e-9ee7282b1e09
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        namespace: ${spring.cloud.nacos.discovery.namespace}

这里说明以下几点:

  • 这里要指定active file dev里面指定dev,test里面指定test。
  • 注意 name 和active 拼起来要和nacos上创建配置的data ID一致
    即 这里的 nacos +dev 刚好等于nacos上的dev配置文件的data ID nacos-dev.yml
  • server-addr 里面指定nacosServer的IP地址和端口号
  • namespace 命名空间,这里和 nacos 第一步创建
    命名空间生成的id保持一致,注意各个环境是不同的。
  • service 指定的是,你注册上去之后的服务名称可以自己设置。
  • file-extension 指定配置文件的类型,这里用的是yml就指定yml
    还有记得我们在nacos上创建配置文件的时候有一个GROUP,,,我们使用的是默认值即DEFAULT_GROUP 这里的group不配置的话默认也是DEFAULT_GROUP 。。 如果配置的话,记得和nacos上配置的保持一致。

至此 springboot这边也配置完成了。

启动项目,分别设置active file为dev和test
然后看控制台。可以看到从nacos加载的配置文件和初始化的端口,分别为我们在nacos上指定的端口

最后 还有一个重点
@RefreshScope
注解 在需要动态获取配置的类上面添加该注解,表示允许自动更新值
如下

你可能感兴趣的:(springboot)