SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

这篇具有很好参考价值的文章主要介绍了SpringCloudAlibaba微服务实战系列(二)Nacos配置中心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringCloudAlibaba Nacos配置中心

在java代码中或者在配置文件中写配置,是最不雅的,意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中,每次修改了配置后只需要重启一次服务即可。话不多说,直接干货拉满。

集成nacos配置中心

首先引入配置相关的依赖

<!--Nacos 配置中心依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--bootstrap的依赖,由于SpringCloud2020版本上bootstrap被默认禁用了所以要引入才能使用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

其次保证项目启动时,配置先从nacos配置中心获取,所以配置都写在bootstrap.ymlbootstrap.properties中即可。bootstrap的文件比application的优先级要高。配置详情如下:

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式

nacos中的DataId配置

DataId主要是使当前项目快速进行多套配置内容的切换,看看DataId的组成格式:

${prefix}-${spring.profiles.active}.${file-extension}

  • prefix:项目的服务名,也就是spirng.application.name的值
  • spring.profiles.active:当前的环境
  • file-extension:文件后缀

当spring.profiles.active为空时,对应的’-'连接符也将会不存在,DataId的格式就是变换为${prefix}.${file-extension}

设置profiles为dev

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式

  profiles:
    active: dev

那么我们的文件名就应该为consumer-dev.yml,我们需要在nacos上创建配置,先创建consumer-dev.yml和consumer-prod.yml文件

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

通过代码获取这个配置,然后通过调整环境,注意它们的配置返回。

@RestController// @RestController注解是@Controller+@ResponseBody
@RefreshScope //通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新
public class ConfigController {

    @Value("${custom.info}")// 注解获取custom.info配置的值
    private String config;

    @RequestMapping("/getConfig")
    public String getConfig() {  // 获取配置的接口
        return config;
    }
}

调用查看结果:

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev

切换为prod环境,重启项目再次调用

spring:
  profiles:
    active: prod
D:\springcloud\doc>curl localhost:9001/getConfig
nacos config prod

莫得问题~

Nacos的Group配置

group是分组的意思,表示配置内容归于哪个组,默认的是DEFAULT_GROUP组,如创建配置文件时声明一个CONSUMER_GROUP

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

java代码配置:

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式
        group: CONSUMER_GROUP # 指定某GROUP

  profiles:
    active: dev

重启调用

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev CONSUMER_GROUP

nacos的Namespace配置

namespace表示命名空间,比较粗粒度的控制。默认的namespace是public,当创建新的命名空间时,如果要指定此命名空间,则需要在java配置中声明它的namespace的id值

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

如上图创建了一个命名空间,在namespace中创建consumer-dev.yml的配置文件

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

在java配置中namespace是填写的ID值而不是名称

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式
        namespace: e6d5450d-a8d3-45c4-9801-091586082104 # 命名空间的id值

  profiles:
    active: dev

Nacos的持久化

Nacos默认的是使用嵌入式数据库Derby数据库,也就表明越到后面越容易出现瓶颈,如存储容量限制,不方便数据查询、存储优化等等。Nacos支持使用mysql做数据持久化,版本要求mysql在5.6.5+

mysql数据持久化

在mysql中创建一个数据库,并且导入nacos-mysql.sql的文件(路径是/conf/nacos-mysql.sql)

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

在Nacos的conf/application.properties文件中添加mysql数据源支持

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql	# 添加mysql数据源

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root		# 数据库账号
db.password.0=123456	# 密码

重启下nacos,登录进入后,发现我们刚刚测试的那些数据都不在了,这就是不做持久化的问题。

现在已经将数据的持久化加上了,我们像刚刚一样随便添加几个数据,然后再次重启nacos,看看数据有没有丢失。

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式

  profiles:
    active: dev

调试:

D:\springcloud\doc>curl localhost:9001/getConfig
nacos config dev

重启nacos,可以看到我们的数据都还在

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

nacos的配置扩展

除了通过${prefix}-${spring.profiles.active}.${file-extension}的方式指定我们的配置文件,我们还可以直接通过dataId配置指定nacos上的一些共享配置

如创建了一个redis的共享配置

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心,Java,SpringBoot,SpringCloud,springcloud,nacos

在java项目中不仅要读取consumer-dev.yml还要读取redis.yml的配置,可以使用extension-configs来声明

server:
  port: 9001
spring:
  application:
    name: consumer # 应用名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
      config:
        server-addr: localhost:8848 # nacos地址
        file-extension: yml # 指定配置内容的数据格式
        extension-configs:
          -
            dataId: redis.yml
            group: DEFAULT_GROUP
            refresh: true

  profiles:
    active: dev

extension-configs是一个数组,extension-configs中若有多个配置时文章来源地址https://www.toymoban.com/news/detail-605161.html

extension-configs:
  -
    dataId: redis.yml
    group: DEFAULT_GROUP
    refresh: true
  -
    dataId: rabbitmq.yml
    group: DEFAULT_GROUP
    refresh: true

到了这里,关于SpringCloudAlibaba微服务实战系列(二)Nacos配置中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微服务 SpringCloudAlibaba】实用篇 · Nacos配置中心

    微服务(6) Nacos除了可以做注册中心,同样可以做配置管理来使用。 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。 Nacos一方面可以将配置集中管理

    2024年02月05日
    浏览(47)
  • SpringCloud | Dubbo 微服务实战——注册中心详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家 :https://www.captainbed.cn/z chatgpt体验地址 在项目开发过程中,随着项目不断扩大,也就是业务的不断增多,我们将采用集群,微服务的形式去降低配置,集群是指将一个项目部署到多个服

    2024年02月05日
    浏览(46)
  • 云原生微服务实战 Spring Cloud Alibaba 之 Nacos

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代码管理gitlab 使用 第十章 Spr

    2024年02月08日
    浏览(56)
  • 微服务实战系列之ZooKeeper(中)

    昨日博主的第一篇 ZooKeeper ,对它自身具备的能力做了初步介绍。书接上文,马不停蹄,我们继续挖掘它内在的美,充分把握它的核心与脉络。 Q:集群一致性协同是如何进行的 我们讲到分布式,一般是在集群环境下实现的。以ZooKeeper为例,它是如何保障集群环境下的成功运

    2024年02月04日
    浏览(42)
  • 微服务实战系列之Cache(技巧篇)

    凡工具必带使用说明书,如不合理的使用,可能得到 “意外收获” 。这就好比每个人擅长的领域有所差异,如果放错了位置或用错了人,也一定会让 Leader 们陷入两难之地: “上无法肩负领导之重托,下难免失去伙伴之信任” ,最终的结局大致是 不欢而散 。 通过前序系列

    2024年02月03日
    浏览(68)
  • 微服务实战系列之ZooKeeper(实践篇)

    关于 ZooKeeper ,博主已完整的通过庖丁解牛式的 “解法” ,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验,强化概念,博主特别献上一篇实践文章。理论联系实践,才能学

    2024年01月21日
    浏览(84)
  • SpringCloudAlibaba微服务 【实用篇】| Nacos注册中心

    目录 一:Nacos注册中心 1. 认识和安装Nacos 2. Nacos快速入门 3. Nacos服务分级存储模型 ①Nacos服务分级存储模型 ②NacosRule负载均衡  ③根据权重负载均衡 4. Nacos环境隔离 二:Nacos和Eureka的对比 tips :前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住

    2024年02月05日
    浏览(46)
  • 【微服务 SpringCloudAlibaba】实用篇 · Nacos注册中心

    微服务(5) 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 而我们现在差不多在学习SpringCloudAlibaba了,它与SpringCloud的关系就有点像SpringBoot与SpringMVC,SpringBoot引入SpringWeb框架就可以说是SpringMVC项目了,也可以说还是

    2024年02月08日
    浏览(36)
  • 微服务实战系列之J2Cache

    经过近几天陆续发布 Cache 系列博文,博主已对业界主流的缓存工具进行了基本介绍,当然也提到了一些基本技巧。相信各位盆友看见这么多 Cache 工具后,在选型上一定存在某些偏爱: A同学说:不管业务千变万化,我对Redis的爱永不变。 B同学说:不管集中式还是分布式,单

    2024年02月04日
    浏览(43)
  • 《学成在线》微服务实战项目实操笔记系列(P92~P120)【下】

    史上最详细《学成在线》项目实操笔记系列【下】,跟视频的每一P对应,全系列18万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 4.1 (课程发布)模块需求 P92 课程预览:在发布课程之前需要预览一下,看最终的效果有没

    2024年02月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包