黑马学SpringCloud-Nacos(二)


目录:

 (1)Nacos配置管理-添加Nacos配置

 (2)微服务配置的拉取

(3)Nacos的配置管理-配置热更新

(4)多环境配置共享


 (1)Nacos配置管理-添加Nacos配置

23f4ee5cd62b40a9a6380025c5f26057.png
eaa89ad4a7d649b99e639ebdf62d8908.png

 随着微服务越来越多,我们在生产环境中可能会达到数十上百甚至上千台这种服务器的情况,我们的配置文件需要做一些修改,这个配置文件可能跟数十个微服务都由关系,这时候我们得逐个微服务去调整这个配置,很麻烦,调完之后这些微服务都需要重启,一个服务重启带来的影响还是挺大的,我们希望这些配置文件做到统一的管理,比如说我们现在有数十个配置需要修改,我们只在一个地方完成改动,并且我们希望这个服务不需要重启,这些配置就能立马生效,这就是配置的热更新,这就用到配置管理服务

我们把微服务上一些经常变更的配置,放到配置管理服务器上去,而微服务在启动的时候,会去读取配置管理服务器上放好的配置,把它读取下来以后与本地的做结合,作为最终的配置文件,来完成spring容器的初始化,将来如果需要修改配置,我们直接修改配置管理服务,在他上面修改配置就行了,微服务会不断的读取配置管理服务的配置,实现配置的热更新

  

4dc6167e60b14c41be4e665ec0a624d1.png

702f26e82b5d46709f09621e59b3ab15.png

 

 

9bbe1d9ad164499ca9943d6a3afdc1bb.png

0eabe17c9cc34b3db3cd996b9838efbe.png

 点击+添加配置:

dddd623baa764b92b6feb5a9dc5c2295.png

f29541d1e89b466d8ca227e316b61ea1.png

这里写的配置不是把application.yaml中的配置全部拿过来,只是把有热更新需求的写在这里

 ad7be99f4b474e0891f8b4e5e776d238.png

 

 531cdf01a4684a37bf8553412edd4f48.png

 

 (2)微服务配置的拉取

5eb1cfeaa4af45a6bc66da87f91e5484.png

项目启动会县杜曲bootstrap.yml的配置文件它的优先级比application.yml的优先级高,这里面写入nscos的的地址与配置文件有关的信息都放到bootstrap.yml中

a43f9ef3871b4954a5a297ef55673532.png

ac779c145c11466288d94047394f8fb5.png

 

找到user-service的pom.xml添加:依赖

8489108061e144358e849fd8d61098ec.png a89654c1fa1547f6a247366eda870cff.png

 

 创建bootstrap.yml文件:

bc15572b08f7427f95932e5a798421a4.png

在application.yml中 重复的配置删掉:

4bd1468010454bd59abd371d1518c339.png

0a4869a55a9e48958a636fc8a68d2c55.png

 进行读取配置:在UserController添加方法:

0760c895e3c44ea7973d6fed7e7cf0ca.png

重启服务:

600bdbaaf0364eec92aff4d967052645.png

浏览器输入:发现格式化完成

69c71c318c1e4b33bf010a7c1fa4469b.png

 92ab6a3b628f412c9af8b6b719f4bf19.png

c31ac96f2ef5465f88e4ddf0e6dcb005.png

(3)Nacos的配置管理-配置热更新

 点击编辑配置文件:

8ab25dd969414a7b98e181ad1fb49573.png

 改为年月日394f2373f9674c5c8621536609819e8e.png

 1a448fd0e7e54bfd82ab09397ac0165d.png

我们希望微服务里面立马变化:但是没有发生变化 没有实现配置热更新

a3f9c311331f46fcaadfe88e0f86acab.png

 

 需要进行配置:

dbdce7f7ee6c4e28be06b56bc4e7da25.png

添加注解@RefreshScope 

359f4daca1ad451297b26aede228c33e.png

重启服务:

ae0ee5ee00634a238976e7d65d0f1e0f.png

刷新浏览器:确实发生了改变,但是我们重启服务器了,不是热更新

12054c3a93514c7798a292a86e728801.png点击编辑:重新修改配置

c989dd0f3d6f4e78ac179f352333563b.png 15b849c0688a4c65b3875c584aa9d77a.png

c67935c2a5a44ca188fccbfaf5c8fc1f.png 刷新页面:这里我们没有重启微服务,它自动发生了变化,这就是服务的热更新

6ce235801090407d9d83ce10e9af0290.png

 

 

 这里出现了大量的日志,使我们的服务,在不断的访问Nacos,发现你的远端的配置发现了更新,拉倒本地进行更新004448eeca644ff9845fdcf17e5ab97a.png

 

 配置刷新的第二种方式:bcf8a4b260834472b646d7a8183bce4a.png

 新建一个类专门完成配置的加载:PatternProperties类

这里@ConfigurationProperties(profix=“pattern”)和dateformat进行拼接

3f1a3b45ef1446c996fbc652acf3cef8.png

 注释掉UserController中的中的注解:

8ca9ef12ff7243eda720a5304ef338fc.png

 注入那个类:

e6e83a02003a4cbc99d26300548dca4a.png

3ce372f0a4494650ba0ebdb32421fe90.png

 

重启服务:

在次改为年月日:

d4d1de209bca493ab06b48fbeeb8ccb7.png 在次刷新

 a9255415150243f2a57c048efd972c0c.png

 7122a22d44124796800250bd8e752d81.png

(4)多环境配置共享

 现在我们来了解一下微服务的共享问题,在什么情况下会遇到微服务的共享呢?比如说,有一个配置属性,在开发 生产 测试等环境的值是一样的,像这么一个配置,我们去每个配置中都去写一份,是不是有点浪费,如果需要改动的话每个配置都需要改动,这样写是不合适,我们想找到一个地方,我们配一次以后,不管环境怎么变化,这个配置都能够被加载,这就是多环境共享的一个需求了

ea3ff39dfd0147d2995a40adc106064c.png

在新添加一个配置:作为多环境共享的

a55dd074223e48a596bf61ad65ce6735.png

1d348df1940a4ab1b37474d22bf466a7.png1251094c46914e708e919e795822d61f.png 

提交:就有了两个配置文件了,一个是生产dev环境,一个是多环境共享的。多环境共享的是没有带环境的

cebc5ec71af2478d9973f0762828ed16.png

 修改PatternProperties类添加一个读取的属性,刚才新建的共享配置中属性:envShareValue5b6b1b6084b3481e9fc4af2d2c2fde0a.png

 在UserController中添加一个方法:当访问一个方法时,把这个对象返回给你,springmvc会把它转换为json,返回给页面,就可以看到这个类的的属性

121d27d3905a473c8c654541c98cf173.png

 重启服务:重启两个服务,第二个UserService服务改为测试环境,这样就不会在 

a40c8574805743129e8ecbe88a0e3ff5.png

 跟你在配置文件中修改为test是一样的8750e65f237045c4aeaa352e07653bee.png

 访问:成功得到两个属性

94ac7c497bea44398a8ce91fd2e09115.png

 读取配置环境:dev环境,读到两个属性

5d30e1bac65a4415982ca68bcba9f605.png

8082:test环境只读到一个属性 

e7cf989d821349f7acc2c7b0360ce11d.png

 就可以证明dev环境和test环境都能拿到共享属性

可以在idea中查看日志:

ffce11afcb2a4f2fb944d7c718e995a3.png

1f58accb243e43c7841a21145018e594.png

如果两个配置文件中有相同的属性会以谁的为准呢?

测试:在appllication.yml中添加一个内部属性

c9dac65bd5c84f29b7ac95e414046e73.png

 在给这个类也加一个name属性 

72a5f40342de431bafe02161adf12170.png

 重启:这时候远程还没有 加,显示的是本地的

ad98083f64b54560a7133a60ba672a91.png

 给远程userservice.yaml加一个属性:

830a7d36cf1f4761b652ae9e856c539e.png

重新刷新:发生了改变,是以userservice.yam为准

2e4ebd1649af4cd9a166c7d63b8088e5.png

 在给userservice-dev.yam也加上name属性: 4fa25c8f2ea04640859c61f71102fe08.png

 是以userservice-dev.yam为准,它的优先级最高7cd1880061ce4681aebc647c69fcf690.png

 1bba56b6207c43c2a2989dd885c6c4ca.png

 带环境的配置高于不带环境的共享配置高于本地配置

a3af188703b94a6faa1b67ffeb9f3c41.png

 b7b448f048524fc5b9500175b7dde167.png

141ae30650a4431098a7cdfccf5f0c13.png 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值