<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          推薦:Spring Cloud 整合 Nacos 實(shí)現(xiàn)服務(wù)配置中心

          共 6142字,需瀏覽 13分鐘

           ·

          2021-12-14 23:05

          不點(diǎn)藍(lán)字關(guān)注,我們哪來故事?




          ?正文如下?

          在之前的文章 《Nacos 本地單機(jī)版部署步驟和使用》 中,大家應(yīng)該了解了 Nacos 是什么?其中 Nacos 提供了動(dòng)態(tài)配置服務(wù)功能

          一、Nacos 動(dòng)態(tài)配置服務(wù)是什么?

          官方是這么說的:

          Nacos 動(dòng)態(tài)配置服務(wù)是什么?

          動(dòng)態(tài)配置服務(wù)可以以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。

          動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要,讓配置管理變得更加高效和敏捷。

          配置中心化管理讓實(shí)現(xiàn)無狀態(tài)服務(wù)變得更簡(jiǎn)單,讓服務(wù)按需彈性擴(kuò)展變得更容易。

          Nacos 控制臺(tái)的功能

          Nacos 提供了一個(gè)簡(jiǎn)潔易用的 UI (控制臺(tái)樣例 Demo) 用來管理所有的服務(wù)和應(yīng)用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀發(fā)布、一鍵回滾配置以及客戶端配置更新狀態(tài)跟蹤在內(nèi)的一系列開箱即用的配置管理特性,更安全地在生產(chǎn)環(huán)境中管理配置變更和降低配置變更帶來的風(fēng)險(xiǎn)。

          二、實(shí)戰(zhàn):Nacos 實(shí)現(xiàn)服務(wù)配置中心

          下面通過兩個(gè)大模塊實(shí)現(xiàn):

          • 在 Nacos 中新建或修改配置
          • 在 Spring Cloud 應(yīng)用中加載 Nacos 配置

          2.1 在 Nacos 新建配置

          根據(jù)上篇文章?Nacos 本地單機(jī)版部署步驟和使用?,部署運(yùn)行 Nacos ,然后打開配置管理 - 配置列表頁(yè)面。地址:http://localhost:8848/nacos/index.html#/configurationManagement

          點(diǎn)擊右上角創(chuàng)建按鈕,進(jìn)入新建配置頁(yè)面,新建配置如圖所示:

          配置詳解:

          • Data ID :配置為 config-service.yml 。Data ID 是指定配置且保證全局唯一性。
          • Group :默認(rèn)配置為 DEFAULT_GROUP,不需要修改。
          • 配置格式 :選擇 YAML 配置文件格式
          • 配置內(nèi)容 :具體配置的內(nèi)容。這里簡(jiǎn)單配置了個(gè)鍵值對(duì),其實(shí)實(shí)際應(yīng)用場(chǎng)景,會(huì)配置包括存儲(chǔ)配置、端口配置和各種中間件配置等

          Nacos Data ID 標(biāo)準(zhǔn)格式如下:

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

          其中:

          • prefix :默認(rèn)為 spring.application.name 的值
          • spring.profiles.active:該案例為空,一般指定 dev test 等環(huán)境配置
          • file-extension:配置內(nèi)容格式

          2.2 創(chuàng)建 Spring Cloud 應(yīng)用

          1、創(chuàng)建應(yīng)用

          新建工程,工程名為:springcloud-nacos-config-sample

          工程項(xiàng)目地址在:

          • Github:https://github.com/JeffLi1993/springcloud-learning-example/tree/master/springcloud-nacos-config-sample
          • Gitee:https://gitee.com/jeff1993/springcloud-learning-example/tree/master/springcloud-nacos-config-sample

          2、配置 pom 依賴

          pom.xml 代碼如下:

          "1.0"?encoding="UTF-8"?>
          "http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">
          ????4.0.0

          ????springcloud
          ????springcloud-nacos-config-sample
          ????0.0.1-SNAPSHOT
          ????springcloud-nacos-config-sample?::?Nacos?服務(wù)配置中心案例

          ????
          ????
          ????????org.springframework.boot
          ????????spring-boot-starter-parent
          ????????2.3.2.RELEASE
          ????


          ????

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


          ????????
          ????????
          ????????????org.springframework.boot
          ????????????spring-boot-starter-web
          ????????


          ????????
          ????????
          ????????????org.springframework.boot
          ????????????spring-boot-starter-test
          ????????????test
          ????????


          ????????
          ????????????org.projectlombok
          ????????????lombok
          ????????????1.18.10
          ????????????true
          ????????


          ????


          ????
          ????????
          ????????????
          ????????????
          ????????????????org.springframework.cloud
          ????????????????spring-cloud-starter-alibaba-nacos-config
          ????????????????0.2.2.RELEASE
          ????????????

          ????????????
          ????????????
          ????????????
          ????????????????org.springframework.cloud
          ????????????????spring-cloud-dependencies
          ????????????????Hoxton.SR7
          ????????????????pom
          ????????????????import
          ????????????


          ????????

          ????


          ????
          ????????
          ????????????
          ????????????????org.apache.maven.plugins
          ????????????????maven-compiler-plugin
          ????????????????
          ????????????????????1.8
          ????????????????????1.8
          ????????????????

          ????????????

          ????????

          ????



          其中依賴了:

          • Spring Cloud Alibaba Nacos Config 依賴
          • Spring Cloud Hoxton.SR12 版本依賴

          3、創(chuàng)建配置文件

          在應(yīng)用工程的 resources 目錄下,創(chuàng)建 application.yml 文件,填入如下信息:

          server:
          ??port:?8083?#?服務(wù)端口

          spring:
          ??application:
          ????name:?config-service?#?服務(wù)名稱

          其中:

          • server.port 指定了服務(wù)端口 8083
          • spring.application.name 指定了服務(wù)名稱 config-service ,要跟 Nacos 后臺(tái)新建配置的 Data ID 值保持一致。

          為啥呢?因?yàn)榭匆幌?Nacos Config 源碼 org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator#locate 。源碼如下:

          if?(StringUtils.isEmpty(dataIdPrefix))?{
          ????dataIdPrefix?=?env.getProperty("spring.application.name");
          }

          如果 Data ID 沒有配置,則讀取 spring.application.name 服務(wù)名稱配置。

          繼續(xù)創(chuàng)建 bootstrap.yml 文件,填入以下信息:

          spring:
          ??cloud:
          ????nacos:
          ??????config:
          ????????server-addr:?127.0.0.1:8848?#?Nacos?配置中心地址
          ????????file-extension:?yml?#?配置文件格式

          其中:

          • nacos.config.server-addr 指定了 Nacos 地址和端口
          • nacos.config.file-extension 指定了配置文件格式為 yml

          4、創(chuàng)建測(cè)試類和啟動(dòng)類

          新建 Spring Cloud 應(yīng)用啟動(dòng)類 ConfigApplication,代碼如下:

          /**
          ?*?Spring?Boot?服務(wù)啟動(dòng)類
          ?*
          ?*?Created?by?bysocket.com?on?21/12/06.
          ?*/

          @SpringBootApplication??//?Spring?Boot?應(yīng)用標(biāo)識(shí)
          public?class?ProviderApplication?{

          ????public?static?void?main(String[]?args)?{
          ????????//?程序啟動(dòng)入口
          ????????//?啟動(dòng)嵌入式的?Tomcat?并初始化?Spring?環(huán)境及其各?Spring?組件
          ????????SpringApplication.run(ProviderApplication.class,args);
          ????}
          }

          然后新建測(cè)試控制類 ConfigController,代碼如下:

          /**
          ?*?Config?案例
          ?*?


          ?*?Created?by?bysocket.com?on?21/12/07.
          ?*/
          @RestController
          @Slf4j
          @RefreshScope
          @Data
          public?class?ConfigController?{

          ????@Value("${blog.name}")
          ????private?String?blogName;

          ????@GetMapping("/get")
          ????public?String?get()?{
          ????????return?"ConfigController#get?blog?name?=?"?+?getBlogName();
          ????}
          }

          代碼詳解如下:

          • @Value 注解 :@Value 對(duì) Bean 的字段或者方法參數(shù)進(jìn)行標(biāo)注,職責(zé)是基于表達(dá)式給字段或方法參數(shù)設(shè)置默認(rèn)屬性值。通常格式是注解 + SpEL 表達(dá)式,如 @Value("SpEL 表達(dá)式")。
          • @RefreshScope 注解 :允許在運(yùn)行時(shí)動(dòng)態(tài)刷新 Bean 的 Scope 實(shí)現(xiàn)。如果 Bean 被刷新,則在下次訪問 Bean 即執(zhí)行方法時(shí),會(huì)創(chuàng)建一個(gè)新實(shí)例。這說明在應(yīng)用運(yùn)行時(shí),在 Nacos 控制臺(tái)修改了對(duì)應(yīng)配置的值后,會(huì)同時(shí)修改和生效該 Bean 這個(gè)值,達(dá)到動(dòng)態(tài)配置的效果。

          5、運(yùn)行測(cè)試

          啟動(dòng)上面的應(yīng)用,會(huì)在控制臺(tái)看到如下信息:

          2021-12-09?20:11:43.399??INFO?13909?---?[-127.0.0.1_8848]?o.s.c.a.n.c.NacosPropertySourceBuilder???:?Loading?nacos?data,?dataId:?'config-service.yml',?group:?'DEFAULT_GROUP'
          2021-12-09?20:11:43.400??INFO?13909?---?[-127.0.0.1_8848]?b.c.PropertySourceBootstrapConfiguration?:?Located?property?source:?[BootstrapPropertySource?{name='bootstrapProperties-config-service.yml'}]

          這里可以看出,已經(jīng)加載了 Nacos 配置信息 dataId: 'config-service.yml'group: 'DEFAULT_GROUP'

          最后在瀏覽器打開地址 http://localhost:8083/get ,響應(yīng)如圖所示:

          動(dòng)態(tài)配置測(cè)試

          然后去 Nacos 控制臺(tái),配置列表點(diǎn)擊修改 config-service.yml 配置。將 www.bysocekt.com 改成 bysocket.com,然后確認(rèn)發(fā)布。如圖所示:

          可以從控制臺(tái)看到如下日志:

          2021-12-09?20:31:30.747??INFO?13909?---?[-127.0.0.1_8848]?o.s.c.e.event.RefreshEventListener???????:?Refresh?keys?changed:?[blog.name]

          重新訪問下瀏覽器該地址 http://localhost:8083/get ,響應(yīng)如圖所示:

          說明動(dòng)態(tài)刷新配置成功。

          三、Nacos 實(shí)現(xiàn)分布式配置小結(jié)

          本文詳細(xì)介紹了Spring Cloud 整合 Nacos 實(shí)現(xiàn)服務(wù)分布配置。關(guān)鍵兩點(diǎn):

          • 如何在 Nacos 設(shè)置對(duì)應(yīng)的配置
          • 如何在工程中通過依賴和注解關(guān)聯(lián)上對(duì)應(yīng)的外化配置

          參考資料

          • 官方案例:https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example
          • 官方文檔:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
          • https://blog.didispace.com/spring-cloud-alibaba-nacos-config-2/

          代碼示例地址

          本文案例,可以查看開源項(xiàng)目 springcloud-learning-example 中的 springcloud-nacos-config-sample 模塊:

          • Github:https://github.com/JeffLi1993/springcloud-learning-example
          • Gitee:https://gitee.com/jeff1993/springcloud-learning-example

          以下系列教程推薦

          • 《Spring Cloud 系列教程》https://www.bysocket.com/spring-cloud
          • 《Spring Boot 2.x 系列教程》https://www.bysocket.com/springboot
          • 《Elasticsearch 入門系列教程》


          往期推薦

          你好,來交個(gè)朋友 ~

          二十年老程序員的二十條心得:警惕很久沒寫過代碼的“大牛”

          “永遠(yuǎn)的神 YYDS”,其創(chuàng)造者被判刑 3 年

          冥想,你認(rèn)為有什么用?001#成長(zhǎng)

          Cache 工作原理和一致性策略

          圖解聊聊分庫(kù)分表:如何做到永不遷移數(shù)據(jù)和避免熱點(diǎn)?

          //////?END?//////
          ↓ 點(diǎn)擊下方關(guān)注,看更多架構(gòu)分享?↓

          ↓ 或加泥瓦匠微信,交流更多技術(shù)?↓

          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产中文字幕免费观看 | 人人射人人操 | 天天视频免费入口 | 欧洲AV久久无码秘 蜜桃 | 日韩成人在线播放 |