谷粒商城--整合SpringCloud Alibaba-2

简介: 谷粒商城--整合SpringCloud Alibaba

配置中心


配置中心就是把配置文件写在Nacos中,当你修改配置中心内容时项目不需要重启项目即可根据配置文件实现实时更新


官方文档演示:


https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md


过程如下:


e265f25188be8203ca7a6b412d2e3ab9_ce9d37d01a84fd083357d75d66ad45ac.png


1、引入依赖


common模块


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

2、创建bootstrap.properties


所有配置文件中优先级最高


服务启动后会先读取这个文件,读取后就会去从nacos配置中心加载mall-coupon.properties文件

spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3、配置中心定义新配置文件


其中,DataID必须为微服务名.properties


配置的内容什么都可以


9915b613649f8f8e5817e8d2f9d6e2e6_8acde52e4e7c6767278cb8e2b896117e.png


4、测试


  • 在Controller加上@RefreshScope来动态获取配置数据

3958c7b34134fe3527d65f1a67a1afde_26c1eb97577c2ace2b5486a2520ee5b0.png


8eb3760e1f19f3715c8f0fc431653d47_399641a96ab1d6b133f3607a92b019c2.png


配置中心修改配置再刷新


be020d85510e1f60ab556d12b8d71918_3806e6428b1d12de728b1e0fce9c1226.png


NameSpace

命名空间就是用来隔离资源的


什么情况下会用到呢?


你生产环境想用这一套配置,开发环境想用另一套配置。那么就可以把配置文件放到不同的命名空间中


1、新建命名空间


333fa128d3998e8dcb463febff7f5f07_9c2df5ca49208dfc23b345a7cc490b1e.png


配置文件


21483a85f54561e90e09570e6ae411a2_cd24e925987e8327a465266d589b2c6f.png


2、bootstrap.properties指定命名空间


微服务启动的时候会先去bootstrap.properties加载,然后根据配置去Nacos配置中心找到文件


84a866d6fb558aeb9ed04ff1d5ba968f_aa291b60a3cba57738a43630ecf77d0b.png


3、测试


这个配置就是我prop命名空间定义的配置文件


50afdb3dd71b8d18746229de3ab7d4e8_23ac0bd245ec763ffc4db5a55c89db1f.png


Group

一般Group和Namespace配合使用


解决方案为:每个微服务创建自己的命名空间,使用配置分组区分环境


分组在创建配置文件的时候直接进行创建即可


1、创建微服务NameSpace并创建分组


4abff7ce0e0c435d80f981e496b76a48_ff1b603efba0944491381bc54703d2ab.png


2、bootstrap.properties指定分组


spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
spring.cloud.nacos.config.group=11

3、测试


6e019010c2524b10303870a52dcb92f0_64d2315fa05f75b516f88834cea8081c.png


加载多配置集

配置相关的如果都放到一个配置文件中会很乱难维护


所以把配置文件进行拆分,spring相关的放spring配置文件,mybatis相关的放mybatis配置文件…


Nacos也可以做到


1、抽取出多个配置文件


0cf3004ae31341d0eb95dcbb44576c61_cfc436ed47a7074eadb17c5aba4a0fb4.png


其他配置文件同理


7e2c841c32b8b64f77c3cf9dd01dccba_1dadb143cd90607b912040855d204c58.png


2、bootstrap.properties指定加载多配置集


这里的spring.cloud.nacos.config.extension-configs[0].data-id意思就是说,集合里的元素是一个个数组,数组里有是一个个对象所以第一个元素可以赋值多次


下面配置也是同理


# 配置中心加载配置文件
spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
spring.cloud.nacos.config.group=11
# 加载多配置集
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=11
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=11
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=11
spring.cloud.nacos.config.extension-configs[2].refresh=true

3、测试


我们注释掉所有本地的yml配置并重启


41a327631cd5979a5e4760a492358afd_7b53daf0326656d42456a5327dab734e.png

e62ce3d01a52ac89e44e5e39133f7294_5e12307fe7e5e05970955406cfa74d38.png


总结

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


线上环境的时候我们可以把所有配置都放在配置中心,微服务中只保留一个bootstrap.properties文件说明加载配置中心哪些配置文件即可


GateWay网关


e714a92dc4cf030460db3253d1280201_b920d4213248e972499fce1263301206.png

相关文章
|
20天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
62 5
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
483 37
|
2月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
54 0
|
4月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
4月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
4月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
4月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
4月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
4月前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
4月前
|
Java Spring
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
下一篇
DataWorks