SpringCloud Alibaba微服务实战六

Easter79
• 阅读 880

SpringCloud Alibaba微服务实战六

导读:本篇作为SpringCloud Alibaba微服务实战系列的第六篇,主要内容是将所有的微服务接入Nacos配置中心并按环境进行隔离。系列文章,欢迎持续关注。

SpringCloud Alibaba微服务实战六

配置中心集成

在SpringCloud Alibaba体系中是使用Nacos作为配置中心,这样Nacos既可以作为注册中心也可以作为配置中心,相当于SpringCloud中的Eureka + Config。要接入Nacos的配置中心也很简单,只需要如下几步:

  • 引入配置中心组件 spring-cloud-starter-alibaba-nacos-config

    org.springframework.cloud spring-cloud-starter-alibaba-nacos-config

  • 在resource中新建文件 bootstrap.yml,配置应用名称和注册中心地址

    spring: application: name: account-service cloud: nacos: config: server-addr: 10.0.10.48:8848 file-extension: yml

这里指定文件后缀为yml

  • 在nacos控制台建立配置文件

注:在客户端和server端对文件格式的声明要一致,例如在客户端声明的是yml,则server端添加配置文应该是${spring.application.name}.yml,若写成${spring.application.name}.yaml,则会找不到配置文件。如在我们的account-service中应该建立一个account-service.yml文件,然后把原application.yml的内容复制到里面即可,在nacos配置中可以删除spring.application.name配置。SpringCloud Alibaba微服务实战六

  • 运行测试 测试服务功能是否正常

简单几步就可以将你的微服务集成Nacos的配置中心了,但是在实际开发中我们需要准备多个环境的配置文件(开发、测试、生产),接下来我们看看如何使用Nacos进行多环境配置管理。

多环境管理

在Nacos中实现多环境管理很容易,可以通过Profiles, Group, Namespace三个维度实现。

profiles

nacos配置中心的DATA ID就相当于一个配置文件的名称,前面一部分我们DATA ID的默认命名方式为${spring.application.name}.${ spring.cloud.nacos.config.file-extension},比如我们之前的配置文件为account-service.yml

如果我们在服务启动的时候指定了服务的环境名称spring.profiles.active,那么DATA ID的命名方式就变成了${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}。比如上面的account-service我们在bootstrap.yml中设置了spring.profiles.active=DEV,那么服务启动时就会去nacos抓取account-service-DEV.yml这个配置文件的数据。

利用Nacos命名方式的特性我们可以实现多环境配置管理。

实战

  • 给系统指定环境名称

    spring: profiles: active: DEV

  • Nacos中建立多套环境的配置SpringCloud Alibaba微服务实战六

  • 启动应用,观察后端启动日志

    2019-12-13 13:39:21,352 INFO NacosPropertySourceBuilder:87 - Loading nacos data, dataId: 'account-service-DEV.yml', group: 'DEFAULT_GROUP'2019-12-13 13:39:21,363 INFO PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='account-service-DEV.yml'}, NacosPropertySource {name='account-service.yml'}]}2019-12-13 13:39:21,376 INFO AccountServiceApplication:652 - The following profiles are active: DEV

Group

Group是DATA ID集合的概念,将同一个环境下的配置文件组成一个Group,在服务启动时通过指定spring.cloud.nacos.config.group属性可以让系统加载不同Group的配置文件。

实战

  • 在nacos中建立多个配置文件,以Group进行区分SpringCloud Alibaba微服务实战六 如上所示,我们建立了一个DEV_GROUP 和TEST_GROUP。

  • 修改配置文件,指定spring.cloud.nacos.config.group的值

    spring: cloud: nacos: config: server-addr: 10.0.10.48:8848 file-extension: yml group: DEV_GROUP

这个时候不需要再给服务指定spring.profiles.active属性

  • 启动应用,观察后端启动日志

    2019-12-13 14:19:19,861 INFO NacosPropertySourceBuilder:87 - Loading nacos data, dataId: 'account-service.yml', group: 'DEV_GROUP'2019-12-13 14:19:19,869 INFO PropertySourceBootstrapConfiguration:101 - Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='account-service.yml'}]}2019-12-13 14:19:19,882 INFO AccountServiceApplication:648 - No active profile set, falling back to default profiles: default

Namespace

Namespace 是 nacos 做多环境以及多租户数据(配置和服务)隔离的,目前也是官方推荐的多环境支持方案。如果你的微服务有多套不同的环境(DEV,TEST),那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。不同的命名空间下可以有相同的GroupData ID

实战

  • Nacos中根据项目环境建立多套NamespaceSpringCloud Alibaba微服务实战六 建好Namespace后会生产一串命名空间ID,在应用里通指定spring.cloud.nacos.config.namespace属性对应不同的Namespace

  • 在不同的命名空间下分别建立配置文件account-service.ymlSpringCloud Alibaba微服务实战六

  • 修改配置文件,指定spring.cloud.nacos.config.namespace属性

    spring: cloud: nacos: config: server-addr: 10.0.10.48:8848 file-extension: yml namespace: 7e8ccc22-6f51-42fa-bcf1-db45f99dbf57

  • 启动应用,观察后端启动日志 SpringCloud Alibaba微服务实战六 这个版本没有关于 Namespace的启动日志,不过你可以修改你的配置确认是否正常加载,反正我这里是正常的O(∩_∩)O哈哈~

Namespace作为官方推荐的环境隔离配置,我们将所有的微服务全部按照此方式进行改造,改造完的效果如下:SpringCloud Alibaba微服务实战六

改造完成后要对服务进行测试,保证服务能正常运行。

至此我们已经把我们微服务的配置全部放入了配置中心,并且使用Namespace对环境进行了隔离。那么本期的“SpringCloud Alibaba微服务实战六 - 配置隔离”篇也就该结束啦,咱们下期有缘再见!SpringCloud Alibaba微服务实战六

系列文章

SpringCloud Alibaba微服务实战六

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

SpringCloud Alibaba微服务实战六

戳我留言

点击下方“阅读原文”查看更多

本文分享自微信公众号 - JAVA日知录(javadaily)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k