关闭

微服务&微服务架构简单入门之配置管理

发表于:2020-12-24 10:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黑格    来源:CSDN

  一.什么是配置管理
  这是我们之前的写法,但是他有一定性的缺点,因为他的所有配置都是明文的,
  被太多的开发人员所知,
  举个例子,在一个项目开发中,张三开发了一个新功能,业务需要,保留原来老逻辑的代码,所有他抽取了一个 开关变量 isNewBusi来控制,突然新功能上了生产后,发现有bug,怎么做到修改isNewBusi的值不需要重启。
  根据上图我们知道配置管理的作用可以主要总结如下
  1.不同环境不管配置
  2. 配置属性动态刷新
  引入配置中心
  根据这幅图,我们微服务需要解决的问题
  1 微服务怎么知道配置中心的地址
  2 微服务到底需要连接哪个环境
  3 怎么找到nacos config上的对应的配置文件
  微服务接入配置中心的步骤
  ①:添加依赖包spring-cloud-alibaba-nacos-config
   1 <dependency>
   2 <groupId>com.alibaba.cloud</groupId> 
   3 <artifactId>spring‐cloud‐alibaba‐ acos‐config</artifactId> 
   4 </dependency>
  ②:编写配置文件,需要写一个bootstrap.yml配置文件 配置解释:
  server-addr: localhost:8848 表示我微服务怎么去找我的配置中心
  spring.application.name=order-center 表示当前微服务需要向配置中心 索要order-center的配置
  spring.profiles.active=prod 表示我需要向配置中心索要order-center的生 产环境的配置
  索要文件的格式为 ${application.name}- s p r i n g . p r o f i l e s . a c t i v e . {spring.profiles.active}. spring.profiles.active.{file-extension}
  真正在nacos配置中心上 就是 order-center-prod.yml
  1 spring: 
  2 cloud: 
  3 nacos: 
  4 config: 
  5 server‐addr: localhost:8848 
  6 file‐extension: yml 
  7 application: 
  8 name: order‐center 
  9 profiles:
  10 active: prod
  现在我们需要不停机改变我们的生产环境isNewBusi的值来控制我们的业务逻辑。我们需要 在对应的Controller上添加一@RefreshScope 进行动态刷新
  二.怎么解决 生产环境,测试环境,开发环境相同的配置。(配置通用)
  比如我们的servlet-context 为order-center
  查看工程启动日志
  所以我们需要创建一个通用配置文件:order-center.yml配置
  那么order-center.yml就是一个通用配置了,不管是启动prod,还是dev 都会有该段配置order-server的 context-path 配置
  配置的优先级 精准配置 会覆盖 与通用配置 相同的配置,然后再和通用配置互补。
  不同微服务的通用配置。
  通过 shared-dataids 方式 比如 每一个微服务都要写服务注册地址等
  1 spring: 
  2 cloud: 
  3 nacos: 
  4 discovery: 
  5 server‐addr: localhost:8848
  我们就可以把该配置提取为一个公共配置yml,提供给所有的工程使用
  1 spring: 
  2 cloud:
  3 nacos: 
  4 config: 
  5 server‐addr: localhost:8848 
  6 file‐extension: yml 
  7 #各个微服务共享的配置,注意越拍到后面的公共配置yml优先级越高 
  8 shared‐dataids: common.yml,common2.yml 
  9 #支持动态刷新的配置文件 
  10 refreshable‐dataids: common.yml,common2.yml 
  11 application: 
  12 name: order‐center 
  13 profiles: 
  14 active: dev
  配置优先级 2020-01-09 21:21:19.115 INFO 15316 — [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name=‘NACOS’, propertySources=[ NacosPropertySource {name=‘order-center-dev.yml’}, NacosPropertySource {name=‘order-center.yml’}, NacosPropertySource {name=‘common2.yml’}, NacosPropertySource {name=‘common.yml’} ]}
  通过 ext-config方式 同样配置到越后面的配置 优先级越高
  1 spring: 
  2 cloud: 
  3 nacos: 
  4 config: 
  5 server‐addr: localhost:8848 
  6 file‐extension: yml 
  7 ext‐config: 
  8 ‐ data‐id: common3.yml 
  9 group: DEFAULT_GROUP 
  10 refresh: true 
  11 ‐ data‐id: common4.yml
  12 group: DEFAULT_GROUP 
  13 refresh: true
  各个配置的优先级
  精准配置>不同环境的通用配置>不同工程的(ext-config)>不同工程 (shared- dataids)
  1 spring: 
  2 cloud: 
  3 nacos: 
  4 config: 
  5 server‐addr: localhost:8848 
  6 file‐extension: yml 
  7 shared‐dataids: common.yml,common2.yml 
  8 refreshable‐dataids: common.yml,common2.yml 
  9 ext‐config: 
  10 ‐ data‐id: common3.yml 
  11 group: DEFAULT_GROUP 
  12 refresh: true
  13 ‐ data‐id: common4.yml 
  14 group: DEFAULT_GROUP 
  15 refresh: true 
  16
  17 application: 
  18 name: order‐center 
  19 profiles: 
  20 active: dev
  上述配置 加载的优先级
  1)order-center-dev.yml 精准配置
  2)order-center.yml 同工程不同环境的通用配置
  3)ext-config: 不同工程 通用配置
  3.1):common4.yml
  3.2): common3.yml
  4) shared-dataids 不同工程通用配置
  4.1)common2.yml
  4.2)common1.yml
  You Your You Yours

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号