Spring Cloud Alibaba nacos 配置中心使用_昨日_1989的博客-程序员ITS203

技术标签: spring  spring boot  spring cloud  

Spring Cloud Alibaba 使用nacos 注册中心

背景

在第一篇nacos介绍的时候提到nacos 是注册中心又是配置中心,上一篇我们介绍了Spring Cloud Alibaba 使用nacos 注册中心的使用这一篇我们讲述 配置中心的使用。

nacos配置中心

之前的讲述了 配置文件的配置。这次我们只需要在之前的代码中 添加maven nacos配置中心的依赖这个是配置到spring cloud alibaba 教程总pom版本控制 这个pom文件中。这样还是利用maven 自身的jar包依赖。discovery-server、cloud-discovery-client-common俩个模块自动引入nacos配置中心的依赖

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

修改对应yml文件添加

server端yaml配置文件

spring:
    cloud:
      config:
        server-addr: 47.99.209.72:8848
        file-extension: yaml

最后分别呈现结果

server:
  port: 9012

spring:
  profiles:
    active: dev
  application:
    name: cloud-discovery-server
  cloud:
    nacos:
      config:
        server-addr: 47.99.209.72:8848
                #指定文件后缀
        file-extension: yaml
      discovery:
        server-addr: 47.99.209.72:8848

修改http接口

package com.xian.cloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: xlr
 * @Date: Created in 2:57 PM 2019/10/27
 */
@RestController
@RequestMapping("server")
@Slf4j
# 提供分布式的配置动态刷新
@RefreshScope
public class DiscoverCotroller {


    @Value( "${nacos.yaml.age}" )
    private String age;
    
    /**
     * 对外提供的服务 HTTP接口
     * @param name
     * @return
     */
    @GetMapping("/hello")
    public String hello(@RequestParam String name) {
        log.info("invoked name = "   name  " age = "   age);
        return "hello "   name   " age = "   age;
    }


}

然后在配置中心配置创建配置文件点击登录nacos配置中心

file

创建 cloud-discovery-server-dev.yaml配置nacos.yaml.age= 30file

启动服务访问 curl http://localhost:9012/server/hello?name=tom

日志打印filefile

说明nacos配置中心已经生效然后我们修改cloud-discovery-server-dev.yaml 配置文件age 为20参数 重新发布一下file

会看到后台日志打印


2019-10-27 19:53:08.884  INFO 44618 --- [.99.209.72_8848] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$87d25f89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-10-27 19:53:09.091  INFO 44618 --- [.99.209.72_8848] c.a.c.n.c.NacosPropertySourceBuilder     : Loading nacos data, dataId: 'cloud-discovery-server-dev.yaml', group: 'DEFAULT_GROUP'
2019-10-27 19:53:09.092  INFO 44618 --- [.99.209.72_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='cloud-discovery-server-dev.yaml'}, NacosPropertySource {name='cloud-discovery-server.yaml'}]}
2019-10-27 19:53:09.093  INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication               : The following profiles are active: dev
2019-10-27 19:53:09.103  INFO 44618 --- [.99.209.72_8848] o.s.boot.SpringApplication               : Started application in 0.277 seconds (JVM running for 883.2)
2019-10-27 19:53:09.119  INFO 44618 --- [.99.209.72_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [nacos.yaml.age]

不重启服务,再次请求.age 已发送改变file

以上就是nacos的配置中心的配置。

然后我们讲解一下 nacos配置的匹配规则

dataID

在 Nacos Config Starter 中,dataId (也就是上面cloud-discovery-server-dev.yaml)的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension}prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档

注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

group

group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

自动注入

Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。

在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。

动态刷新

Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。

如果需要对 Bean 进行动态刷新,请参照 Spring 和 Spring Cloud 规范。推荐给类添加 @RefreshScope 或 @ConfigurationProperties 注解,

以上就是nacos配置中心的全部内容。

补充 命名空间

不管是 nacos的注册中心 还是nacos的配置中心 都有一个namespace属性。这个属性 是针对我们nacos 控制台命名空间。

特殊说明一下,命名空间的概念 因为配置中心和注册中心是通用的概念。所以放在里配置中心这里讲解。

我们在控制台创建lms的一个命名空间file

会有命名空间ID e071c3ab-b280-4ae7-a081-044fff5613ad我们把这个ID 放到配置文件里面 对应namespace属性配置修改,如果不修改默认public空间

server:
  port: 9013

spring:
  profiles:
    active: dev
  application:
    name: cloud-discovery-server
  cloud:
    nacos:
      config:
        server-addr: 47.99.209.72:8848
        file-extension: yaml
        namespace: e071c3ab-b280-4ae7-a081-044fff5613ad
      discovery:
        server-addr: 47.99.209.72:8848
        namespace: e071c3ab-b280-4ae7-a081-044fff5613ad

重新启动会发现,服务注册到了 lms的命名空间上了。file

反思

dataID、group 组合使用。${prefix} - ${spring.profiles.active} . ${file-extension} 。其中active参数的变化可以帮我们做到环境的隔离。group的变化。又可以帮我们做到项目组、版本的区分。这样配置就不会乱配合俩种参数的变化达到我们想要的动态变化区分。其实这块的设计满足了我们大部分的场景的需要和支持

在加上命名空间的概念。我们有多了一种情况的变化 与选择。不过这样多了,当我们集群环境足够大的时候,反而会让很多同学找不到头绪。这就需要我们提前约定好。规则的使用

如何喜欢可以关注分享本公众号。file

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。转载请附带公众号二维码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35809876/article/details/102808551

智能推荐

C 语言执行 shell 命令的三种方式总结_lylhw13_的博客-程序员ITS203_c执行shell命令

Linux 为执行 shell 命令,提供了三个函数接口,分别是 exec, system, popen。他们的区别简单总结如下:exec # 在当前进程中执行命令,其后所有的代码将被清空,不能执行system = fork + exec # 在子进程中执行 shell 指令popen = fork + exec + pipe # 根据执行的模式重定向子进程的标准输入或输出execexec 有一族相关函数,其作用是替换当前执行的程序为新程序(replaces the

Linux最大文件打开数_早安试言的博客-程序员ITS203_linux文件打开数

介绍在Linux下有时会遇到Socket/File : Can't open so many files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈。1.查看方法使用ulimit -a 或者 ulimit -nopen files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量)这里只是对用户级别的限制,其实还有个

vue怎么给pc端浏览器设置一个最小屏幕_uniapp支持PC版,真正的全平台制霸来了!..._weixin_39771260的博客-程序员ITS203

点击上方蓝字关注这个脱发、卖货、持续学习的程序员uni-app已经支持iOS、Android、H5、微信小程序、阿里小程序、百度小程序、字节跳动小程序、QQ小程序、快应用、360小程序。现在,uni-app终于官方支持PC宽屏!uni-app宽屏适配方案包括:页面窗体级适配方案:leftWindow、rightWindow、topWindow组件级适配方案:match-media组件内容...

软碟通UltraISO 9.65.3237 【官方版+ 注册码】_嘿芝麻的博客-程序员ITS203_uiso9注册码

新版支持Windows 10,支持加载 NTFS/exFAT 磁盘深度隐藏分区,支持打开并提取安卓启动/恢复映像中文件,另外,改进了写入磁盘映像功能! UltraISO软碟通是一款功能强大、方便实用、老牌优秀的光盘映像文件制作/编辑/转换工具:可直接编辑ISO文件,从ISO中提取文件和目录;也可从CD – ROM制作光盘映像或者将硬盘上的文件制作成ISO文件;还可处理ISO的启动信息,制作可引导光

spring cloud gatewayThe ‘Access-Control-Allow-Origin’ header contains multiple values “*, null”_C&Z的博客-程序员ITS203_gateway 请求返回了两个access-control-allow-origin

在spring cloud gateway网关中加入了跨域支持,但是报了:The ‘Access-Control-Allow-Origin’ header contains multiple values “*, ”, but only one is allowed.错误显示设置了两次Access-Control-Allow-Origin:,但我的代码我确定只设置了一次,怀疑是哪出了问题,找了一上午问题,百度到说是gateway的bug我的版本:spring cloud gateway:2.1.2

随便推点

【CCAI 2016】微软、腾讯、头条、清北专家解析机器学习的局限与明天_周建丁的博客-程序员ITS203

8月26日至27日,在中国科学技术协会、中国科学院的指导下,由中国人工智能学会发起主办、中科院自动化研究所与CSDN共同承办的2016中国人工智能大会(CCAI 2016)在北京辽宁大厦盛大召开,这也是本年度国内人工智能领域规模最大、规格最高的学术和技术盛会,对于我国人工智能领域的研究及应用发展有着极大的推进作用。大会由CSDN网站进行专题直播,并由百度开放云提供独家视频直播技术支持。本次大会除了...

孤尽T31项目Day15_StoneChan_的博客-程序员ITS203_t31 孤尽

孤尽T31项目Day15编码避坑指南1 浮点数处理单精度存储:先整数部分转二进制,小数部分= 2的-n次幂相加。精确的小数存储-dicimal:MySQL:decimal(M,D) M:总长 D:小数长JAVA:java.math.BigDicimal类1.1 避坑指南1、浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equal比较。避坑:用差值小于某极小数的方法。BigDecimal的等值比较应该使用compareTo()方法,而不是equals()方式。

光耦和开关频率_weixin_34379433的博客-程序员ITS203

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

20190801H3C无线控制器3510H 版本升级总结_桃子香蕉的博客-程序员ITS203_wx3510h升级

20190801H3C无线控制器3510H 版本升级总结实施过程:实施过程: H3C官网下载手册,版本说明。v7版本的升级包为ipe文件,v5版本ap的版本需要下载与固件版本保持一致并上传。 无线控制器配置地址与电脑互通。 dir查看控制器剩余容量, 备份配置文件(防止丢失配置) &lt;3510H&gt;ftp 1.1.1.1 (服务端地址) #连接ftp服务器(...

ORB_SLAM2编译出现问题(ros机器人开发实践p254)_云卷~的博客-程序员ITS203

建议按照这篇文章走一遍,树上感觉缺点东西https://blog.csdn.net/u013019296/article/details/70052027

Fragment中的findviewbyid_月寒风高的博客-程序员ITS203_fragment中的findviewbyid

@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.moodhome, container, false);m_vp = (ViewPag

推荐文章

热门文章

相关标签