ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

22.Nacos做服务配置中心

2022-05-29 18:00:21  阅读:168  来源: 互联网

标签:22 spring 配置 Nacos nacos config cloud


1.Nacos作为配置中心-基础配置

先搭建环境:
    1.新建一个项目:cloudAilibaba-config-client
    2.pom文件中引入:下面两个jar包最好捆绑导入
        1:服务注册中心包
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        2.服务配置中心包
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    
    3.新建两个配置文件:1.bootstrap.yml(系统配置文件,优先加载) 2.application.yml(用户的自定义配置文件)
        3.1 bootstrap.yml配置文件中的内容:
            server:
                  port: 3377
                spring:
                  application:
                    name: nacos-config-client3377
                  cloud:
                    nacos:
                      #重点1:服务注册中心的nacos地址
                      discovery:
                        server-addr: 192.168.2.129:8848 #Nacos服务注册中心地址
                      #重点2:服务配置中心的nacos地址
                      config:
                        server-addr: 192.168.2.129:8848 #Nacos服务配置中心地址
                        file-extension: yaml #指定文件后缀
            
           3.2 application.yml中的配置:
               #指定生效的配置文件后缀
               spring:
                  profiles:
                    active: dev
    4. 编写业务逻辑
        @RestController
        //重点1:加上@RefreshScope标签,来自动刷新
        @RefreshScope
        @Slf4j
        public class ConfigController {
            /*
                判断逻辑是:看是否能取到nacos配置中心配置的config.info的值
            */
            @Value("${config.info}")
            private String configInfo;
            @GetMapping("/config/getConfigInfo/{id}")
            public String getConfigInfo(@PathVariable("id") int id){
              log.info("请求路径id:{}",id);
              return configInfo;
            }
        }
    5. 启动类代码:
        @SpringBootApplication
        //重点1:加上该标签,可以让服务注册中心扫描到
        @EnableDiscoveryClient
        public class ConfigClientApplication3377 {
            public static void main(String[] args) {
                    SpringApplication.run(ConfigClientApplication3377.class, args);
                }
        }
    
    6. 在nacos上配置服务配置

nacos的配置列表中的DataId的命名方式为如何呢,这个最重要,需要遵循规则:
参考地址:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

在 Nacos Spring Cloud 中,dataId 的完整格式如下:
    ${prefix}-${spring.profiles.active}.${file-extension}

1.prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
2.spring.profiles.active 即为当前环境对应的 profile(即在application.yml中配置的spring.profiles.active)
    注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
   不过:尽量不为空,因为为空会有很多想不到的问题!!!
3.file-exetension 为配置内容的数据格式,
    可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。
    目前只支持 properties 和 yaml 类型。

示例看下图:

nacos-config-client3377-dev.yaml中的配置如下:
    config: 
        info: nacos config info version:吴孟达
测试,访问:http://localhost:3377/config/getConfigInfo/3
可以正常取到

如何实现动态刷新呢?
    nacos上的配置改了后,不需要发送post请求,客户端直接就更改了!!

2.Nacos作为配置中心-分类配置.

1.nameSpace可以用来区分部署环境
2.Group和DataId逻辑上区分两个目标对象

默认情况下,NmaeSpace=public ,Group=DEFAULT_GROUP,默认Cluster是DEFAULT
1.Nacos默认的命名空间是public,Namespace主要是用来实现隔离:
    比如我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个NameSpace,不同的NameSpace之间是隔离的
    
2.Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。

3.Service就是微服务,一个Service可以包含多个Cluster(集群),Nacos默认Cluster是Default,Cluster是对指定微服务的一个虚拟划分
    比方说为了容灾,将service微服务分别部署在杭州机房和广州机房,
    这时可以给杭州机房的service服务器起一个集群名称(HZ)
    给广州机房的service微服务起一个集群名称(GZ),还可以尽量让同一机房的微服务互相调用,以提升性能。

4.最后的是Instance,就是微服务实例

3.Nacos集群和持久化配置(重要)

默认Nacos使用嵌入式数据库(Nacos自带的)实现数据的存储。所以,如果取启动多个默认配置下的Nacos节点(集群部署),数据的一致性很难保证。
为了解决这一问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持mysql的存储。(即采用mysql数据库作为Nacos集群的数据统一)



Nacos支持三种部署模式:
    1.单机模式-用于测试和单机试用
    2.集群模式-用于生产环境,确保高可用
    3.多集群模式-用于多数据中心场景
Nacos内部内嵌了一个数据库:derby,每个nacos都会带一个,导致多节点nacos无法达到数据共享问题~~nacos的pom文件依赖如下
集群部署参考地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
集群配置需要ngix:未作

 

标签:22,spring,配置,Nacos,nacos,config,cloud
来源: https://www.cnblogs.com/wmd-l/p/16324420.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有