zoukankan      html  css  js  c++  java
  • nacos的注册服务发现及配置管理

      之前在学习cloud的时候,也接触到了nacos,只不过那时候更多的是测试了nacos和cloud的无缝连接,也就是nacos能够集成cloud的一些落地技术栈,例如Feign、Ribbon等,包括cloud里面的一些注解,测试demo也上传到了git上面。

    https://github.com/wcyzxs/nacos-demo.git

      这次正好跟着b站上面的项目,进一步对nacos进行了学习。先简单介绍下nacos吧,nacos是阿里巴巴下面的一套微服务框架,而cloud则是spring下面的一套微服务框架,现在更多的偏向使用nacos来作为项目的微服务架构。

      就我个人而言,觉得nacos之所以越来越流行,有两点优势吧。1.cloud的eureka在18年就已经不在维护了,社区活跃度也许久没有更新了。而nacos也是具有服务注册与发现这个功能的。2.某个微服务部署成集群的话,那么要是修改一个配置,那么所有服务上面的配置都要更改,是比较麻烦的。而nacos的其中一个很大的优势就是能够统一管理服务的配置文件,可以实现配置的实时动态获取,以及配置共享。意思就是说如果我5个服务的配置都是一样的,那么我在nacos上面配置一个配置文件,然后5个服务可以统一引入该配置,并且要是修改信息的话,我们只需要在nacos上面修改即可。对应的微服务项目只要加个注解就可以实现实时获取了,这个是真的很方便。下面就依次介绍下这两个核心功能吧。

      nacos服务注册与发现

    1.引入依赖

    <!--将服务注册进nacos中-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    2.application.yml添加以下配置

    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848

    3.启动类上面添加@EnableDiscoveryClient注解

    最后启动项目,然后界面输入127.0.0.1:8848/nacos即可,登录进去后即可在服务管理->服务列表下面就可以发现被注册的服务。(这里关于nacos的安装我就不说了,网上也有教程)

      nacos的统一配置管理

    在介绍nacos配置管理之前,先简单介绍下nacos关于配置的几个相关概念,如命名空间、组。

    /

     *  1)、命名空间:配置隔离;

     *      默认:public(保留空间);默认新增的所有配置都在public空间。可以有两种不同命名形式

     *      1、开发,测试,生产:利用命名空间来做环境隔离。

     *         注意:在bootstrap.properties;配置上,需要使用哪个命名空间下的配置,

     *         spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871

     *      2、每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

     *  2)、配置集:所有的配置的集合

     *  3)、配置集ID:类似文件名;也就是nacos上面的Data ID 

     *        Data ID:类似文件名

     *  4)、配置分组:

     *      默认所有的配置集都属于:DEFAULT_GROUP;

    *  可以根据需要,自行再建组

     * 项目中的使用:每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod

     * 3、同时加载多个配置集

     * 1)、微服务任何配置信息,任何配置文件都可以放在配置中心中

     * 2)、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可

     * 3)、@Value,@ConfigurationProperties。。。

     * 以前SpringBoot任何方法从配置文件中获取值,都能使用。

     * 配置中心有的优先使用配置中心中的,

    *

    *例如

    *#配置命名空间

    *#spring.cloud.nacos.config.namespace=c88cfe3a-4a32-420c-be50-c3f086852e6f

    *#配置分组(当命名空间按照微服务划分的时候,我们可以建立多个组,用来归类开发、测试、生产环境)

    *#spring.cloud.nacos.config.group=dev

     */

    下面开始具体使用

    1.引入依赖

    <!--nacos配置中心-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

    2.创建一个bootstrap.properties文件

    spring.application.name=项目名
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848

    3.在登录进127.0.0.1:8848/nacos的那个界面后,添加配置

    配置的名称,其实在项目启动的时候,即可知道nacos默认读取项目的配置是项目名.properties,所以添加配置的时候,也可以直接项目名.properties的形式添加。(yml也可以),并在里面添加配置信息。

    4.在bootstrap.properties里面引入nacos上面的配置(具体可以根据实际场景,决定怎么使用命名空间,我下面的是以服务作为命名空间,组作为dev、test、prod的区分)

    spring.application.name=gulimall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    #配置命名空间
    spring.cloud.nacos.config.namespace=c88cfe3a-4a32-420c-be50-c3f086852e6f
    #配置分组
    spring.cloud.nacos.config.group=dev

    5.获取配置

    SpringBoot任何方法从配置文件中获取值,都能使用。

    传统的一个yaml里面可能配置了数据源、mybatis、redis等相关信息的配置集,那么现在有了命名空间和组的概念,我们可以将其分离,比如datasource.yml,mybatis.yml等,随后在bootstrap.properties里面一个个引入即可,如下面所示。这样还有一个好处是我这个datasource.yml可以实现共享,倘若微服务没有分库,那么可以多个微服务引用同一个数据源,还是比较方便的。

    spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
    spring.cloud.nacos.config.ext-config[0].group=dev
    #动态刷新,这样在nacos上面更改配置的话,就可以实时刷新了,默认值是false
    spring.cloud.nacos.config.ext-config[0].refresh=true
    
    spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
    spring.cloud.nacos.config.ext-config[1].group=dev
    spring.cloud.nacos.config.ext-config[1].refresh=true

    总结:个人而言,觉得nacos的服务注册发现以及配置管理还是挺不错的,自己也在慢慢摸索,继续努力吧!

  • 相关阅读:
    设计模式学习
    rabbitMQ topic实现广播
    rabbitMQ direct实现广播
    rabbitMQ fanout 实现广播
    rabbitMQ 生产者消费者
    python select 实现IO异步
    python gevent 爬虫
    python gevent socket
    python 协程
    python 进程池
  • 原文地址:https://www.cnblogs.com/wei-cy/p/13466642.html
Copyright © 2011-2022 走看看